Home › Free AEO tools › API and MCP
For developers and AI agents
Free AEO API and MCP server
Every AEO Lookup tool as a JSON endpoint and as a tool on a remote MCP server. No key, no account, no sign-up.
Updated 30 October 2026
Connect an AI agent (MCP)
The server speaks MCP over streamable HTTP at https://aeolookup.com/mcp. It is stateless and answers in JSON, so any MCP client that supports remote servers can use it. Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05.
Claude Code:
claude mcp add --transport http aeolookup https://aeolookup.com/mcp
Clients configured with JSON (Claude Desktop via a remote connector, Cursor, VS Code and others):
{
"mcpServers": {
"aeolookup": {
"type": "http",
"url": "https://aeolookup.com/mcp"
}
}
}
Tools on the server: check_ai_crawler_access, check_structured_data, validate_llms_txt, generate_llms_txt, score_answer_readiness, run_aeo_audit. Every tool is read-only and takes a url.
Call the JSON API
GET with query parameters, or POST a JSON body. GET https://aeolookup.com/api/aeo/ lists the tools. Responses are JSON with a summary, a score out of 100 where the tool scores, findings (each with a level of fail, warn or info) and the tool's own detail.
curl "https://aeolookup.com/api/aeo/ai-crawlers?url=example.co.uk"
curl -X POST https://aeolookup.com/api/aeo/audit \
-H "content-type: application/json" \
-d '{"url":"https://example.co.uk/"}'
| Endpoint | MCP tool | What it does | Inputs |
|---|---|---|---|
/api/aeo/ai-crawlers | check_ai_crawler_access | Checks whether the crawlers behind ChatGPT, Claude, Perplexity, Google AI Overviews, Copilot and 14 more may read a page: robots.txt rules (RFC 9309), robots meta and X-Robots-Tag directives, and whether the site's firewall refuses each crawler's user agent. Separates search and user crawlers (which decide whether you can be cited) from training crawlers (which do not). | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing).path: Optional path to test instead of the URL's own path, for example /blog/. |
/api/aeo/schema | check_structured_data | Extracts every JSON-LD block on a page, lists the schema.org types it describes, flags missing required and recommended properties (Organization, LocalBusiness, Article, FAQPage, Product, Service, Person, BreadcrumbList, Event) and scores entity signals: a named organisation, sameAs links to other profiles, a logo and an @id. | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing). |
/api/aeo/llms-txt | validate_llms_txt | Fetches /llms.txt (or the llms.txt address given), validates it against the llmstxt.org proposal (one H1, optional summary, H2 sections of [name](url): notes links), tests up to eight of its links and reports whether llms-full.txt exists. States the evidence on how little the file is read. | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing).check_links: Test up to eight of the file's links that are on its own site (default true). |
/api/aeo/llms-txt-generate | generate_llms_txt | Drafts an llms.txt for a site: the name and summary from its home page, then its pages from the sitemap grouped by section, with titles and descriptions read from up to 24 pages. Returns the file as text, for a person to edit before publishing. | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing).max_links: Roughly how many links to include (default 40). |
/api/aeo/answer-readiness | score_answer_readiness | Scores a page out of 100 on 14 published checks: indexable, title and description, one H1, question headings, direct first-sentence answers, structured data, dates, a named author, lists and tables, source links, specific figures, length, declared language and stock AI phrasing. Returns each check's points, what it found and the fix, ordered by points available. | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing). |
/api/aeo/audit | run_aeo_audit | Runs all four checks on one address (AI crawler access, structured data, llms.txt, answer readiness) and returns each result plus an overall score: the mean of the crawler, schema and answer-readiness scores. llms.txt is reported but not scored, because the evidence says few systems read it. | url (required): The page or site to check, for example https://example.co.uk/ (https:// is added if missing). |
OpenAPI 3.1 description: https://aeolookup.com/aeo-tools/openapi.json. A plain-text map of the site for language models: https://aeolookup.com/llms.txt.
Errors and fair use
- A bad or private address returns 400 with
codeE_INPUT or E_PRIVATE; a site that cannot be reached returns 502 with E_DNS, E_TIMEOUT or E_UNREACHABLE. - The tools read public pages only. They refuse private, loopback and internal addresses, follow at most five redirects and stop after two megabytes or nine seconds.
- GET answers are cached at the edge for ten minutes per address. Each IP address may make 30 API requests and 60 MCP requests a minute; past that the server answers 429 until the minute is up.
- Our crawler identifies itself as
AEOLookupBot/1.0 (+https://aeolookup.com/aeo-tools/), except for the firewall test in the crawler checker, which sends three answer crawlers' published user agents to see what your site returns to them.