Home / MCP server
Open source

The OpenAEO MCP server: audit your site for AI search without leaving your editor

OpenAEO ships a free, MIT-licensed MCP server in the openaeo-audit npm package. Add it to Claude Code, Cursor, or any MCP client, and your coding agent can audit a live domain against 5 retrieval gates and 8 headline checks, then generate the fixes as real files: robots.txt, llms.txt, JSON-LD and answer-ready copy. It writes them into your project the way any other change arrives, as a diff you read before you commit. There is no API key, no account and no telemetry. If your site is on a hosted platform and you have no codebase at all, one of the eight local tools returns click-by-click steps for your platform's admin instead. The paid plans exist for the part that recurs, weekly citation testing across assistants, which cannot run on your laptop. The audit and the fixes are free forever.

claude code
claude mcp add openaeo -- npx -y openaeo-audit mcp
Node.js 18 or newer is the only requirement. npx fetches the package on first run.
cursor, or any MCP client
{ "mcpServers": { "openaeo": { "command": "npx", "args": ["-y", "openaeo-audit", "mcp"] } } }
no agent, just the terminal
npx openaeo-audit yoursite.com
Add --json for CI, and fail the build when the score drops below your ship floor.

The eight local tools

aeo_audit

Fetches a live domain as an AI crawler and scores it: 5 retrieval gates, 8 headline checks, a band and a ranked fix list.

reads the live site
aeo_fix_files

Generates robots.txt, llms.txt and JSON-LD for the site, ready to write into your static root.

writes files
aeo_fix_html

Takes a page's HTML and adds the missing head elements. It only adds; it never rewrites your page content.

writes files
aeo_check_html

Scores a page you already have in hand, so the agent can verify its own fix before you deploy it.

closes the loop
aeo_packet

Produces an ordered engineering packet: tickets with the failing check, the change, and an acceptance command.

for a team
aeo_fix_my_site

For sites with no codebase. Detects Squarespace, Wix, Webflow, WordPress, Shopify, Framer, Ghost or Carrd and returns click-by-click steps for that admin.

no repo needed
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.

the evidence
aeo_verify_crawler

Checks one address against the ranges the operator publishes. Verified, impostor, or unverifiable, and never impostor without positive evidence.

identity

The seven hosted tools

These need a key on Solo and above, for one reason: they read things that cannot exist on your laptop. Your own site can tell you whether it is legible. It cannot tell you whether an assistant named you last Tuesday, whether that changed since March, or how your authenticity rate compares to everyone else's, because none of that is on your disk. Set OPENAEO_API_KEY and the same agent reaches them.

aeo_citations

Asks the assistants the questions your buyers ask and reports who gets named. This is the measurement the whole product exists for.

needs other assistants
aeo_history

Your scores over time. A single audit is a snapshot; this is the line, and the line is what tells you a fix worked.

needs elapsed time
aeo_drift

What changed on your site since the last run, and which check it moved. Catches the deploy that quietly removed your schema.

needs elapsed time
aeo_alerts

The open findings worth acting on, already deduplicated against what you were told last week. The agent can read them without opening the dashboard.

needs elapsed time
aeo_competitors

Share of voice against the sites that get named when you do not. Requires asking about them too, which is not your data.

needs other sites
aeo_crawler_intel

What AI crawlers are doing across every site in the corpus, not just yours. One site cannot see a pattern; the corpus can.

needs other sites
aeo_authenticity

Where your genuine-traffic rate sits against the median. Built from readings other people contributed, so it cannot be computed alone.

needs other sites

aeo_read_log sits on the line between the two lists. It parses your log locally, as it always has, and the log never leaves your machine. With a key it also sends two integers, the share of requests that were genuine and how many there were, and returns where that puts you against everyone else. Nothing about which paths were hit, or by whom.

It will not invent your facts

Structured data rewards specifics: prices, review counts, founding years, refund windows. Those are exactly the values a language model will happily fabricate to fill a template, and a fabricated price in your JSON-LD is worse than no JSON-LD, because it is a claim you did not make and cannot honour.

So the generated files carry [bracketed] placeholders wherever a real number belongs, and the server's instructions tell the agent never to fill one in on its own. It asks you, or it leaves the bracket for you to fill. The audit also treats an unresolved placeholder in live copy as something that caps your score, so shipping the brackets by accident is itself a finding. A tool that sells legibility should not be the thing that puts an invented number on your site.

llms.txt, as generated
# Acme Coffee > [One line: what Acme Coffee does, who it's for]. ## Facts - [category], [one verifiable number] - Contact: [email protected]
The brackets are the point. It does not guess your category, and it does not invent a number to look complete.

A typical run

  1. Ask your agent to audit your domain. It reports the score, the band, and which checks failed.
  2. It generates robots.txt and llms.txt and writes them into your public or static root.
  3. It runs the head fixer on your key pages and writes the results back.
  4. It re-checks each page locally, and re-audits the live domain after you deploy to confirm the score moved.

A failing retrieval gate caps the whole score, so the agent is told to clear those first. Blocked crawlers, JavaScript-only rendering and a robots.txt disallow are worth more than any amount of schema tuning underneath them.

Step four is the one most tools skip. A report is a list of things you now have to do; aeo_check_html lets the agent score its own edit and know whether it worked before it opens the pull request.

Questions

Is there an MCP server that audits my site for AI search?+
Yes. OpenAEO ships one in the openaeo-audit npm package, MIT licensed and free. Eight tools run entirely on your own machine and need no API key, no OpenAEO account and send no telemetry: aeo_audit, aeo_fix_files, aeo_fix_html, aeo_check_html, aeo_packet, aeo_fix_my_site, aeo_read_log and aeo_verify_crawler. Seven more are hosted and need a key on Solo and above, because they read data that cannot exist on your laptop: aeo_citations, aeo_competitors, aeo_crawler_intel, aeo_drift, aeo_history, aeo_authenticity and aeo_alerts.
How do I add the OpenAEO MCP server to Claude Code?+
Run: claude mcp add openaeo -- npx -y openaeo-audit mcp. That is the whole setup. Node.js 18 or newer is the only requirement, and npx fetches the package on first run.
How do I add it to Cursor or another MCP client?+
Add a server whose command is npx and whose arguments are -y, openaeo-audit, mcp. In a JSON config that is: mcpServers, openaeo, command npx, args -y openaeo-audit mcp.
Does the agent change my files without asking?+
No. The tools return file contents; your MCP client decides what to write, and every client shows you the change before it lands. The server also instructs the agent to show each file and let you confirm it. Generated files carry bracketed placeholders for facts the tool cannot know, and the server tells the agent never to invent a price, a review count, a founding year or an address.
What if my site is on Squarespace or Shopify and I have no codebase?+
Use the aeo_fix_my_site tool. It detects the platform and returns click-by-click steps for that platform's own admin, with the exact text to paste at each step. It covers Squarespace, Wix, Webflow, WordPress, Shopify, Framer, Ghost and Carrd.
Is the MCP server free, and how does it relate to the paid plans?+
It is free and open source under MIT, with no account required. The paid plans cover the part that recurs and cannot run on your laptop: weekly citation testing across assistants, tracked history, drift alerts and competitor share-of-voice. Fixing a site is mostly a one-time job. Finding out whether an assistant names you changes every week.

Read the source on GitHub

MIT licensed · openaeo-audit on npm · no telemetry, no account, no API key