aeo-bench · practical applications
The Agent-Readiness & AEO Playbook
Cloudflare's agent-readiness proposal is the most concrete menu anyone has published for making a website legible to AI agents: markdown content negotiation, llms.txt, sitemap.xml, and MCP server cards. We built AEO Bench to measure it. This page is the result stated as advice you can act on, drawn from four pre-registered studies and 2,808 scored agent runs across six models. Each guideline names the prevailing recommendation, then tags our relationship to it and how far the evidence actually reaches, with a link to the study that earned it.
One finding runs through all four studies and reorganizes the whole list: the website is not where the lever is. Sites should publish their files and, above all, link their content. But almost every technique that moved a number moved it on the agent's side of the wire, in the harness that decides what the model gets to see. So Part One is what a site owner controls, and Part Two is where the real lever is.
A caveat that belongs at the top, not the bottom. Agent readiness is not a settled science. These techniques are guesses at standards that have not converged and at behaviors models may or may not adopt as they change. We measured what we could, pre-registered every hypothesis before running it, and published the corrections. Treat the measured items as true of the models we tested in mid-2026, not as laws. Anyone who tells you they know the exact combination that works today and will keep working tomorrow is selling something.
Part One · If you own a website
The levers a site operator actually controls. The honest news is that the ceiling here is low: the files are mostly unread today, and the strongest move is the least technical one.
01 · If you own a website · Study 2
Link the content you want agents to reach
The prevailing advice says publish llms.txt and sitemap.xml so agents can discover your pages. We built a 300-page site where twelve pages that mattered (product recalls, safety bulletins, rebate terms) were listed in sitemap.xml and every llms.txt variant but linked from no page at all, then asked agents about them. Every model scored 0 of 10 on those pages in every file-bearing arm, because nothing read the files.
The failure is worse than not finding the page. Agents did not report the content as unreachable. They authoritatively declared it did not exist, 148 times out of 150, through a structured answer channel, after exhausting their search budget. If a fact matters and an agent should find it, a discovery-file listing will not surface it. A link will. This is the single most actionable thing a site owner can do.
Evidence Orphan pages: 0 of 10 in every file-bearing arm; unreachable facts declared nonexistent 148 of 150 times (Study 2). Write-up: Nobody Reads llms.txt (Yet).
02 · If you own a website · Study 1
Serve markdown: content negotiation plus .md fallbacks
Cloudflare's proposal includes markdown content negotiation: serve a clean .md version of a page to agents that ask for it, with a headline claim of up to 80% token savings. The ceiling is real, but the average is not. The saving is proportional to how wasteful the agent was to begin with. A chatty model fell to about 26 to 27% of its own baseline input cost, roughly the claimed saving. A frugal model fell only to 80 to 83%, about 20%, because it was not wasting much to start with.
Ship it anyway. We measured zero downside and a genuine saving for the agents that need it most. One caveat you cannot control from the server: sending the markdown request at all is a model disposition, not a guarantee. One frontier model discovered the pathway 64% of the time from a hidden hint; another essentially never did.
Evidence Input cost fell to 26 to 27% of baseline for a wasteful agent, only 80 to 83% for a frugal one; zero measured downside (Study 1). The up-to-80% claim is confirmed at the wasteful end and overstated as an average.
03 · If you own a website · Studies 1 and 2
Publish the discovery files, but expect nothing from them today
llms.txt and sitemap.xml are the two files most agent-readiness checklists lead with. Across 900 agent runs on a well-linked site, no model fetched either one even once. On the site rebuilt so the files were the only path to the answers, unprompted consultation stayed near zero: out of 128 chances per model, the frontier tier consulted a present file zero times, and the best-behaved compliant model just once.
They are not harmful. Keep them for crawlers and for the product layer that may one day consume them. But do not expect them to help an agent at the model layer today, and do not treat shipping them as having done the work. This is the guideline most likely to age: the files are fine, the readers are missing, and harnesses could start reading them next quarter. That is exactly why it is a registered candidate for future study rather than a permanent verdict.
Evidence Discovery-file consultation: 0 across 900 runs unprompted, near-zero even when the files were the only path (opus 0 of 128) (Study 1, Study 2). MCP server cards later scored the same zero (Study 4): three well-known file classes, one law.
04 · If you own a website · Google's guidance
Write for substance, not tricks
Google's own guidance points away from a technique checklist. It judges content by utility and authenticity, not by how it was produced, and it deliberately declines to publish a list of optimization tactics. That lines up with the flattest result we found: on a navigable site, no retrieval aid improved correctness for any model, because finding facts was never the bottleneck. Every model answered present-class questions at or near a perfect score from plain HTML with no aids at all.
The uncomfortable implication for the AEO industry is that there is no tactic that beats being genuinely useful and genuinely reachable. The files and the negotiation headers are plumbing. The substance is the product.
Evidence Correctness saturated: perfect or near-perfect present-class scores in every arm including bare HTML, so no aid could improve a ceiling (Study 1). Convergent with Google Search's position that content is judged by utility, not production method. Not our measurement.
Part Two · If you build the agent
Where the real lever is. Every item below moved a number on the reader's side of the wire, in the harness, not the website.
05 · If you build the agent · Study 2
Tell your fetch tool the index exists
If discovery is the missing link and it lives in the harness, the cheapest possible fix is to tell the harness the index is there. We added a single sentence to the fetch tool's description, saying machine-readable indexes may exist, and changed nothing else about the site.
Orphan-task success went from 0 of 10 to as many as 10 of 10 on the frontier tier. Blind URL path-guessing collapsed; one model went from 43 guessed 404s to zero. This is the highest-leverage sentence the whole series found, and it is one line in a tool description.
You have a fetch tool for this site. Machine-readable indexes may exist at well-known paths such as /llms.txt or /sitemap.xml. If you cannot reach something by following links, fetch one of those first.
The shape of the affordance, illustrative. The exact registered wording lives in the aeo-bench repo.
Evidence Orphan tasks: 0 of 10 without the sentence, up to 10 of 10 with it; path-guessing collapsed (one model 43 guesses to 0) (Study 2). Write-up: One Sentence Beats Every File.
06 · If you build the agent · Study 3 · first gate PASS
Prefetch a curated site index into context
The affordance sentence hopes the model goes and gets the index. Prefetching hands it over. We measured four designs on the same fixture: the hint, a dedicated read-the-index tool, prefetching a curated index into the system context, and prefetching the giant everything-index. All of them solved the orphan class completely. The difference was cost.
On the candidate model, Haiku 4.5, input tokens per solved task fell from 68.9k unaided to 41.3k under the hint, 13.5k with an index tool, and 9.4k with the curated index prefetched into context: over seven times cheaper than unaided, and 4.4 times cheaper than the hint, at equal or better accuracy. The prefetch also rides the cacheable part of the system prompt, where a tool call never can. This site's own concierge ships exactly this design, and it was the first pre-registered gate in the series to pass outright.
const system = [
{
role: "system",
content: instructions + curatedSiteIndex, // static
providerOptions: {
anthropic: { cacheControl: { type: "ephemeral" } },
},
},
{ role: "system", content: perRequestContext }, // per-request tail
]; The curated index rides the static, cacheable block; a fetched index cannot. This is the layout the lj-website concierge ships.
Evidence Input tokens per solved task on Haiku 4.5: 68.9k unaided, 41.3k hint, 13.5k index tool, 9.4k curated prefetch, at equal or better accuracy (Study 3). The series' first registered gate PASS.
07 · If you build the agent · Study 4
Mount capabilities as tools, do not just advertise them
Cloudflare's proposal ends with capabilities: let agents do things, advertised through MCP server cards at a well-known path. The card was consulted zero times unprompted, by every model, the same universal zero as llms.txt and sitemap.xml. But the sharper finding is about what happens even when the model already knows the endpoint exists.
Given full knowledge of both a normal page and a structured API for the same data, every model still answered every product question from the page, 0 of 24 through the API, reserving structured calls only for orders it could get no other way. Knowing an endpoint exists changed nothing. Mounting it as a harness tool changed everything, and it made the surface cheaper: mean input per task fell from 51.4k tokens to 9.5k, a 5.4 times cut. If you want an agent to use a capability, hand it the tool. Do not publish a card and hope.
Evidence Server card consulted 0 times unprompted (the third well-known file class to score a universal zero); with both endpoints known, 0 of 24 product lookups used the API until the endpoints were mounted as tools; mounting cut mean input 5.4 times (Study 4).
08 · If you build the agent · Study 3
Serve a curated slice, not the everything-file
Cloudflare flags a real hazard: an oversized index that agents grep-loop through, burning tokens. Twice the series tried to measure it and could not, because nothing consulted the files at all. With prefetch, consultation is total by construction, and the verdict is clean. The giant everything-index bought nothing over a curated slice, zero additional orphan tasks solved, and cost 2.68 times the input.
So the hazard is real, but it is a token tax, not a behavior failure; models read a prefetched index once rather than grepping it. If you maintain a large index, including a site whose public llms.txt runs to 150 entries, keep the full file public for crawlers and serve the agent a curated slice of what matters.
Evidence Giant everything-index versus curated slice: zero orphan-task delta, 2.68 times the input cost, and no grep-loop pathology under prefetch (Study 3).