Audit a site for AI search visibility and write the fixes: robots.txt, llms.txt, JSON-LD. Free, MIT.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by OpenAEO.
aeo_fix_my_siteOne shot, no codebase needed.** Audits, detects your platform, and returns where-to-paste steps for that platform's admin
aeo_auditAudits a live domain β score, band, every check, prioritised fixes
aeo_fix_filesGenerates paste-ready `robots.txt`, `llms.txt`, JSON-LD, and an opening paragraph
aeo_fix_htmlTakes a page's HTML, returns it with `<title>`, meta description and JSON-LD injected β **only adds what's missing, never rewrites your content
aeo_check_htmlScores HTML without changing it, to verify the edits worked
aeo_read_logReads a server access log and reports what the crawlers **actually** got: which arrived, what status, which paths, and whether each request really came from the operator it claimed. Parsed on your machine; the log never leaves it
Check whether your website is retrievable and citable by AI answer engines β ChatGPT, Claude, Gemini, and Perplexity β from your terminal, in one command.
No install, no signup, no dependencies. It fetches your page the way an AI crawler does, scores it out of 100, and hands you the exact fixes that raise it.
AEO (Answer Engine Optimization) and GEO (Generative Engine Optimization) are the new SEO: your customers increasingly ask an assistant instead of scrolling ten blue links, and the winners are whoever the AI can read, trust, and recommend. This tool tells you where you stand.
Example output:
The audit runs the checks that most often decide whether an AI assistant can quote you:
| Check | Why it matters |
|---|---|
| Content readable in raw HTML | Rendering support varies by crawler. Googlebot executes JavaScript; GPTBot, ClaudeBot and PerplexityBot do not. If content only appears after hydration, the crawlers that do not render see an empty page. |
| robots.txt allows AI bots | One inherited Disallow line can hide you from ChatGPT and Perplexity entirely. |
| Per-bot edge reachability | robots.txt is a request; a CDN is an enforcer. We fetch as GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Googlebot, Bingbot and Applebot, and record the status each is given. Google-Extended is a robots.txt token with no crawler behind it, so it is read rather than fetched. |
| llms.txt index present | An emerging convention that hands assistants a clean, quotable summary of your site. |
| Organization + WebSite JSON-LD | Structured identity is how assistants know who you are. |
| Product / Offer schema with price | Lets assistants answer "how much does X cost" with your real number. |
| Answer + a number in the first 100 words | Assistants lift the first concrete, specific sentence. Adjectives don't get quoted; numbers do. |
| FAQPage schema | Maps directly onto the question-shaped queries people type into assistants. |
| Freshness (dateModified) | Assistants prefer sources that signal they're current. |
Each check scores pass (1.0), warn (0.4), or fail (0.0), averaged to a 0β100 score, then placed in a band:
| Score | Band |
|---|---|
| 0β25 | Not retrievable |
| 26β45 | Partial |
| 46β64 | AI-ready |
| 65β82 | AI-competitive |
| 83β100 | Fully legible |
Some failures cap the score no matter what else passes, because they block retrieval entirely:
An honest low score you can act on beats a flattering one that hides the real problem.
audit(url) returns:
Fail a build if your score drops below a threshold:
OpenAEO ships an MCP server, so your AI coding agent can audit your site and apply the fixes to your actual files β with you reviewing every edit. Nothing is uploaded, no account needed, and it never touches production.
Cursor β add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
Claude Code / Claude Cowork β run this in your project:
β¦or copy examples/.mcp.json to your project root.
For a repeatable workflow, drop examples/aeo-fix-pass/ into
.claude/skills/ β then /aeo-fix-pass runs the whole audit-fix-verify pass, including the
guardrails (merge robots.txt rather than overwrite, never invent numbers for the placeholders).
Then just ask:
"Audit example.com and fix my site."
The agent will run the audit, write robots.txt and llms.txt, inject the JSON-LD into your
<head>, and re-check its work.
If your site is on Squarespace, Wix, Webflow, WordPress, Shopify, Framer, Ghost or Carrd, you don't have files to edit β so ask instead:
"My website is remyfilm.co β help me show up in AI search."
OpenAEO detects which platform you're on and replies with click-by-click steps for your admin ("Settings β Advanced β Code Injection β paste this in the Header"), plus the exact text to copy. It'll also tell you honestly when your platform can't do something, so you don't hunt for a setting that doesn't exist.
| Tool | What it does |
|---|---|
aeo_fix_my_site | One shot, no codebase needed. Audits, detects your platform, and returns where-to-paste steps for that platform's admin |
aeo_audit | Audits a live domain β score, band, every check, prioritised fixes |
aeo_fix_files | Generates paste-ready robots.txt, llms.txt, JSON-LD, and an opening paragraph |
aeo_fix_html | Takes a page's HTML, returns it with <title>, meta description and JSON-LD injected β only adds what's missing, never rewrites your content |
aeo_check_html | Scores HTML without changing it, to verify the edits worked |
aeo_read_log | Reads a server access log and reports what the crawlers actually got: which arrived, what status, which paths, and whether each request really came from the operator it claimed. Parsed on your machine; the log never leaves it |
aeo_verify_crawler | Checks one IP against the ranges the operator publishes. Answers verified, impostor, or unverifiable, and never says impostor without positive evidence |
Hosted tools. These five call openaeo.dev and need OPENAEO_API_KEY, because they
cannot run locally: citation testing needs provider keys for six assistants, and crawler
intelligence reads a corpus collected across every audit anyone runs. Without a key they
explain what they need rather than failing; the eight tools above are unaffected.
The line between the two lists is not commercial squeamishness, it is what each thing needs. Anything that only requires your own site and public data runs on your machine, including the crawler verification and the log reading. Anything that needs other people's domains, or a yesterday to compare today against, needs a server that has been watching.
| Tool | What it does |
|---|---|
aeo_crawler_intel | Has this site's CDN started refusing AI crawlers, and when did that change |
aeo_citations | Ask the assistants a buyer question, record whether you were named |
aeo_history | How the score has moved over time |
aeo_drift | What was passing and is not any more |
aeo_competitors | Which domains get named instead of you |
An audit fetches your page from this machine wearing each crawler's user agent. That is an indication, not proof: a real crawler arrives from its operator's own network, and a firewall checking the address can refuse us while allowing the real one, or the reverse.
Your access log is what settles it.
Two things fall out of this that a fetch cannot tell you. The first is when our reading was simply wrong, and the log corrects it. The second is that "GPTBot" in your log is a claim, not an identity: anyone can send that user agent, and plenty do, precisely because sites allow it. Every request is checked against the address ranges OpenAI, Anthropic, Google, Microsoft, Perplexity and Apple publish for exactly this purpose.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/openaeo)<a href="https://allmcps.com/mcp/openaeo"><img src="https://allmcps.com/api/badge/openaeo?style=directory" alt="OpenAEO on AllMCPs" /></a>