Skip to main content
POST
Call seo.aeo_presence

Authorizations

Authorization
string
header
required

An API key minted at Settings › API & MCP. Send it as Authorization: Bearer <key>. A key carries its holder's own permissions, resolved on every call — revoking a membership closes the key's reach immediately. Keep it in an environment variable (GOOSY_API_KEY), never in a committed file.

Headers

x-request-id
string

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Maximum string length: 128

Body

application/json
queries
string[]
required

The searches to check, in the operator's own words. 1-5 per call; each one is a separate paid read, so ask for the ones they named rather than padding the list.

Required array length: 1 - 5 elements
Required string length: 1 - 200
domain
string

The site to look for, e.g. 'example.com'. Omit to use this workspace's own site.

Required string length: 1 - 253
location_name
string

The market to search from, by name. Leave it out to read the workspace's own market, the country of its service area; set it only when the ask names a place.

Required string length: 1 - 120
language_name
string

The language to search in, by name. Leave it out to read in the language of the workspace's market; set it only when the ask names a language.

Required string length: 1 - 120
surfaces
enum<string>[]

Which Google AI answers to check: 'ai_overview' (the AI summary on the results page) and 'ai_mode' (Google's AI Mode chat). Leave it out for the AI Overview only; pass both when the operator asks about AI search or AI Mode. Each surface is a separate paid read per search.

Required array length: 1 - 2 elements
Available options:
ai_overview,
ai_mode
confirmation_id
string<uuid>

Omit to propose: the first call says what would happen, returns a confirmation_id and changes nothing. To go ahead, send the same arguments again with that confirmation_id, on a member's own API key; a service account's key can propose but never confirm.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
workspace
string

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Minimum string length: 1

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

The tool ran and answered.

ok
boolean
required
workspace
string
required

The slug of the workspace this call ran in.

working_in
object
required

Which workspace this call ran in, and how that was decided. Present on every workspace-scoped result.

state
string
Allowed value: "confirmation_required"
confirmation_id
string<uuid>
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
expires_in_seconds
integer
request_summary
string

What will happen, in one sentence, for a person to approve before confirming.

domain
string
location_name
string
language_name
string
rows
object[]
queries_requested
integer
Required range: x >= 0
queries_answered
integer
Required range: x >= 0
queries_not_read
object[]
queries_with_ai_overview
integer
Required range: x >= 0
queries_citing_domain
integer
Required range: x >= 0
by_surface
object[]
credits_consumed_thousandths
integer
Required range: x >= 0