Tools

AI answer tools

What ChatGPT, Claude, Gemini, Perplexity and Google's AI answers say and cite, and whether a site is ready for them.

Find out what AI engines say about your brand, and whether your site is ready for them. The data comes from DataForSEO, except aeo_get_site_readiness, which reads your site itself and is free. See our step-by-step guide to checking ChatGPT brand recommendations.

The engines are named like this in the results:

  • chatgpt and gemini are the answers their consumer apps show a person, read live from chatgpt.com and gemini.google.com.
  • claude and perplexity are live answers from their model APIs, with web search on.
  • ai_overview and ai_mode are Google's AI answers.

A few terms the results use. A prompt is a question people ask an engine. A mention is your brand in the answer text. A citation is a source the engine links to.

A good first baseline takes three steps. Run aeo_get_site_readiness to check the engines can read your site. Find the prompts that matter with aeo_search_prompts. Then run them with aeo_run_ai_answers, with the brands to look for. AI answers run as an async task and are never cached, because the point is what the engines say now.

To connect these tools to your agent, see the AI visibility MCP page.

ToolWhat it doesCost
aeo_run_ai_answersRun AI answers for a promptFrom 2 credits
aeo_search_promptsSearch AI promptsFrom 31 credits
aeo_get_site_readinessGet AI readiness for a siteFree

Run AI answers for a prompt

Toolaeo_run_ai_answers

What AI engines answer for a prompt, with the brands they mention and the sources they cite. Slow: returns a task_id, then read the result with get_task.

Good for

"does ChatGPT recommend us for X", "who do AI engines cite for X", an AI visibility baseline for a brand across engines.

Not the tool for
What you get

A task_id at once, because the work runs in the background. When it is done, get_task returns rows[] per prompt and engine (answer, mentions[] (brand, mentioned, position, cited), citations[] (position, url, domain, title), search_results[] (pages retrieved, cited or not), search_queries[] (the web searches the engine ran), named_brands[] (brands ChatGPT tagged in the answer, not only yours)) and errors[] for cells that failed. answer null = the engine showed no AI answer. search_results[] and named_brands[] are filled for chatgpt only, search_queries[] for chatgpt and claude. named_brands[] drops a tag ChatGPT gives as a description instead of the brand, so it can miss brands; read the answer for a full list. chatgpt and gemini are what their apps show a person, model chosen by the app; claude and perplexity come from their model APIs. Answers are live and non-deterministic; results are kept 30 days and never cached.

Cost

Per prompt, 15 credits for claude, 6 for perplexity, 2 each for chatgpt, gemini, ai_overview and ai_mode. Default 1 prompt on the five default engines = 27 credits. A cell that fails is not charged.

Parameters

ParameterDefault and notes
prompts[]Required. Questions to ask each engine, as a person would type them. At most 10.
engines[]One of chatgpt, claude, gemini, perplexity, ai_overview, ai_mode. Engines to ask. Default chatgpt, claude, gemini, perplexity, ai_overview. At most 6.
brands[]Brand names or domains to detect in every answer. At most 10.
locationProvider location name or code. Default United States.
languageISO 639-1 language code. Default en.

It also takes the common parameters max_credits and dry_run.

Example input
{
  "prompts": [
    "best crm for startups"
  ],
  "brands": [
    "HubSpot",
    "pipedrive.com"
  ]
}

Search AI prompts

Toolaeo_search_prompts

Prompts people ask an AI engine (ChatGPT or Google AI Overview) about a topic or brand, from the provider's index of observed answers. Not keywords.

Good for

"what do people ask ChatGPT about X", "which prompts mention our brand", building an AI visibility baseline.

Not the tool for
What you get

A list. Each row has prompt, ai_search_volume (a People Also Ask proxy, not query logs), engines[], mentions_brand (a domain input is cited, a keyword input appears in the answer), cited_domains[], retrieved_domains[] (read while answering but not cited), search_queries[] (the web searches the engine ran), named_brands[], answer_preview, first_seen, last_seen.

Cost

31 + 31 per 100 rows. Default 50 rows = 47 credits. Cached 7 days.

Parameters

ParameterDefault and notes
keywordA topic or brand name.
domainA domain cited or mentioned in answers.
engineDefault chatgpt. One of chatgpt, ai_overview.
locationProvider location name or code. Default United States.
languageISO 639-1 language code. Default en.
limitMax rows. Default 50, cap 500.

Give exactly one of keyword or domain.

It also takes the common parameters cursor, max_credits and dry_run.

Example input
{
  "domain": "example.com",
  "limit": 50
}

Get AI readiness for a site

Toolaeo_get_site_readiness

Whether a site is set up for AI answer engines, from about seventeen live fetches of its origin, free. Checks what the engines document as gating their answers: robots.txt access for every known AI crawler (search, user fetch, training), CDN or WAF rules that turn away the answer crawlers' user agents before robots.txt is read, content present in the raw HTML without JavaScript on the homepage and on one page sampled from the sitemap, noindex and snippet directives, then freshness signals, redirect chains, sitemap, title and description, structured data, and llms.txt.

Good for

"is our site ready for AI search", "do we block GPTBot", "are we blocking ChatGPT at Cloudflare", "do we have an llms.txt", before an AI visibility push.

Not the tool for
What you get

One record with checks[] (check, ok, tier, detail, source), failing checks first. tier says how much a check is worth: blocks_citations is documented by an engine, evidence_backed is measured, hygiene is standard practice, policy is a legitimate choice that never fails, unproven is reported but never fails on absence (llms.txt, schema presence). Plus the findings behind them: robots_txt (ai_bots[], sitemaps, content_signal), edge (probes[] per answer crawler user agent), homepage and sample_page (status, word_count and js_shell from the raw HTML, canonical, robots and schema tags, dates; sample_page is the first content URL in the sitemap, null when there is none), markdown (whether the origin answers Accept: text/markdown, which passes the JavaScript check), redirects[], sitemap, llms_txt and llms_full_txt. No crawl, no LLM call.

Cost

0 credits, rate limited. Cached 1 hour.

Parameters

ParameterDefault and notes
targetRequired. A domain or URL. Every fetch goes to its origin.
Example input
{
  "target": "example.com"
}