The open standard for agent readiness

in collaboration with

Agents are a new class of user. Many protocols now serve them (MCP, WebMCP, A2A, x402, llms.txt, Web Bot Auth, and more), but there is no shared definition of what it means to be ready for them. AgentReady is an open specification of what a product should implement to be usable by AI agents, from discovery to completion. It does not promote a protocol or a vendor. The practices below are based on measured agent behavior, and are revised as that behavior changes.

ora scanner

6%

of scanned sites grade B or above

each square is 1% of ~122,000 sites

D or F · 60%/C · 34%/B+ · 6%

Average score is 42. Read from ora.ai in October 2026; the live figures are there.

§ essentials

The short version

Two changes broke an agent: hiding the answer behind JavaScript, and blocking access. Everything else is find, then read, then act. Find and read are the essentials every site needs. Act applies when the product should complete a task, not only be readable.

§ the guide

Make your site readable by AI agents

Together with the ora.ai research lab we traced 1,033 real agent runs and ran a controlled experiment. The sections below follow the order agents encounter a site: find, then read, then act. Each practice carries its stable identifier from the spec source (AR-FIND-01 and so on) and its strength: MUST for the changes that broke an agent in the studies, SHOULD for practices that measurably shaped where agents went, MAY for emerging conventions.

how we knowSTUDIESis ora.ai research: the traced runs and experiment, plus the reports linked from each evidence block; the dataset is public. ORA SCANNERis live reachability across every scored site. Untagged statements are recommendations.

§ find

Be reachable and citable

Agents can cite only pages they can discover and fetch. They may receive or recall a URL, follow a link, or find a page through a crawl-built search index. Pages blocked from crawlers do not appear in those indexes at all. Blocking can also stop an agent from fetching a page while answering a user. Publish the answer on one canonical, current first-party docs page, and write the crawl policy as one rule for all agents instead of an allowlist of named crawlers.

STUDIES When an agent cannot read your site, it answers anyway, from web search and other people’s pages. Across 1,056 business sites, those answers were 3.7× as likely to contain none of the facts the user asked for, and agent-ready businesses were clearly recommended 1.9× as often.

practicewhat it doeswhat the runs show
Publish the answer as first-party docsAR-FIND-02 · SHOULDMakes you citable: the page an agent grounds its answer on and names as its source.STUDIES82% of answers traced back to a page the agent fetched, and that page was a docs page 47% of the time, more than any other page type.
Allow agents in robots.txt and bot protectionAR-FIND-01 · MUSTDeclares which crawlers may fetch which paths, and lets verified agents through the bot manager. This is the gate to the search indexes.ORA SCANNERIn the April 2026 report (~50,000 scanned sites), 88% shipped a robots.txt and 80% stayed reachable to every major AI crawler. About 1 in 10 blocked them entirely.
List your pages in a sitemap.xmlAR-FIND-03 · SHOULDMaps every page you publish for indexing.STUDIESFetched directly in 4% of runs, one of the files real agents touch least. It is still standard for crawlers and search engines.
Publish an AI Catalog and link itAR-FIND-04 · MAYOne manifest at /.well-known/ai-catalog.json listing every agent-facing resource you ship, from MCP server card to llms.txt.Not measured in the studies. Link it from the homepage head, since 86–100% of discovery-file visits arrive through links. ARD registries such as Ora Directory index published catalogs so agents can search across sites.
robots.txt
# Apply the default policy to current and future agents.
User-agent: *
# Block low-value public paths only. Do not list secret paths.
Disallow: /search/

Sitemap: https://example.com/sitemap.xml

Bot protection is the second gate, and robots.txt does not control it. A WAF or bot manager that answers agents with a 403 or a challenge page blocks them however permissive the file is. Let verified agents through by the providers' published IP ranges or Web Bot Auth signatures, and throttle with a 429 instead of a challenge. In the study above, sites that were not agent-ready blocked agents 2.1× as often.

An AI Catalog is the one place an agent can learn what you ship for it: a JSON manifest at /.well-known/ai-catalog.json whose entries point to your MCP server card, OpenAPI, GraphQL schema, A2A agent card, docs, llms.txt, and skills, each typed by media type. Agentic Resource Discovery (ARD) is the registry layer on top: a registry such as Ora Directory indexes published catalogs and answers search across them. Publish the catalog, then link it from the homepage head, since files nothing points to are files nothing fetches.

index.html
<!-- In the homepage head, and as an HTTP Link header from the CDN. -->
<link rel="ai-catalog" href="/.well-known/ai-catalog.json">
crawler jobs and how to test

The wildcard still leaves you one deliberate choice. The model providers run a separate crawler for each job:

  • Training crawlers (GPTBot, ClaudeBot)
  • Search-index crawlers (OAI-SearchBot, Claude-SearchBot)
  • User-initiated fetchers (ChatGPT-User, Claude-User)

Each obeys its own robots.txt rule, so you can block a training crawler and opt out of training without dropping out of search indexes or agent answers. Two catches: a more specific group such as User-agent: GPTBot overrides your * group, so audit existing rules; and user-initiated fetchers may not consult robots.txt at all.

Agents also find pages through agent search APIs such as the Brave Search API, Exa, Parallel, and Tavily, which run their own crawlers and indexes. The wildcard rule covers them; an allowlist of named crawlers does not.

Then fetch a page with an agent user-agent string to inspect the response:

Terminal
curl -iL -A 'Claude-User/1.0' https://example.com/your-page

The request should end with a 200 response; intermediate 301 or 308 redirects are acceptable. The returned HTML should contain the answer. A 403, empty app shell, or JavaScript-only answer prevents fetch-only agents from reading the page.

The curl does not prove much either way: bot blockers weigh where a request comes from more than its user-agent string, so your laptop may pass where the real agent is blocked, or the reverse. The dependable test is your server logs. OpenAI and Anthropic publish their crawlers’ IP ranges (separate per-bot lists from OpenAI, one combined list from Anthropic). Find those requests and confirm they return 200.

§ read

Put the answer where agents read

After reaching a page, an agent has to extract the answer from the returned content. In the studies they used the same homepage and docs as human visitors. Agent-specific files help only if those pages point to them. If the site is client-rendered, the answer has to be in the initial HTML. That is the prerequisite. Content negotiation, .md endpoints, and agent detection did not change whether agents succeeded.

what agents reach · studies

  1. 83%docs pages
  2. 69%homepage

— then a cliff —

  1. 23%.well-known/*
  2. 21%openapi.json, when shipped
  3. 4%sitemap.xml
Share of 1,033 traced runs that reached each surface. Agents use the same pages people do. Files built for machines are reached only if something already fetched points to them.
practicewhat it doeswhat the runs show
Homepage in raw HTMLAR-READ-03 · SHOULDThe front door, with real links to docs, product, and pricing.STUDIESReached in 69% of runs, and it was the agent’s first step in 92% of them; in 59% of the runs that reached it, the next hop was a docs page.
Docs pages that answerAR-READ-04 · SHOULDThe pages agents actually read, where most tasks get resolved. Link setup and quickstart pages from the homepage.STUDIESReached in 83% of runs and fetched more than any other page type, about 3.4 docs pages per run.
Pricing on a first-party pageAR-READ-10 · SHOULDPlans, free tier, and limits as text in the HTML, not an image, a calculator, or a sales form.STUDIESBuilt from the business’s own pages, 60% of pricing answers were accurate, against 37% from elsewhere, the widest gap of any question type.
Fetchable without JavaScriptAR-READ-01 · MUSTThe answer is in the initial HTML, server-rendered or prerendered, rather than injected by a single-page app after load.STUDIESA JavaScript-hidden answer was one of only two changes that broke an agent. The other was blocking it outright.
Fenced code, language-taggedAR-READ-05 · SHOULDTurns snippets into examples an agent can lift and use.STUDIESWhen an agent’s answer included code, 61% of the time it contained lines taken verbatim from a page it fetched on the site.

STUDIES Agents typically opened these resources after visiting the homepage. Depending on the file type, 86–100% of visits came through links rather than guessed paths. Link each resource from content agents already visited, such as the footer, page metadata like <link rel="alternate"> in the head, or a resources section.

filewhat it doeswhat the runs show
llms.txtAR-READ-07 · SHOULDA curated, described index of your key pages.STUDIESReached via links rather than guesses: 86% of its fetches came from a page that pointed to it. One in three agents that read it went on to fetch a page it lists, and 36% drew their final answer from its content.
.well-known/*AR-READ-06 · SHOULDProtocol and metadata discovery.STUDIESReached in about 23% of runs across the sites tested.
openapi.jsonAR-ACT-02 · SHOULDMachine-readable API contract.STUDIESOn the sites that ship one, used in 21% of runs.
JSON-LDAR-READ-08 · SHOULDMachine-readable facts and routes in the page.Markdown converters may omit script blocks, so repeat critical facts in visible text.

Inject JSON-LD at strategic places, starting with the homepage, so an agent fetching the raw HTML gets your key facts and routes in one machine-readable block.

AR-READ-02 · MUSTReturn 404 for a missing path or a valid redirect to a replacement. Do not return 200 for a missing page, even if the body suggests alternatives; agents cannot distinguish that response from a live page. In one observed case, a single-page app returned 200 for every path, making dead URLs appear valid.

The same applies when you throttle: answer with a 429 and a Retry-After header (RFC 6585) rather than a silent challenge page. Agents and crawlers treat 429 as a back-off signal and will return.

llms.txt shape and markdown mirrors

When shipping an llms.txt, make it a lean, described index:

llms.txt
# Acme
> Acme ships a payments API for developers.

## Docs
- [Quickstart](https://example.com/docs/quickstart): first charge in one request
- [Authentication](https://example.com/docs/auth): API keys, scopes, rotation

## API
- [OpenAPI](https://example.com/openapi.json): full request and response contract

AR-READ-09 · MAYSTUDIES Agents requested markdown on about 65% of web fetches. When they specified a format, they chose markdown 96% of the time. Format did not determine task success in the studies, so ensure the HTML works before adding a .md mirror.

docs/quickstart.html
<!-- A mirror nothing points to is a file nothing fetches. -->
<link rel="alternate" type="text/markdown" href="/docs/quickstart.md">

The same relation can also be sent as an HTTP Link: header, so a CDN can advertise the mirror without touching page heads.

§ act

Let agents act, not just read

Reading documentation does not let an agent complete a task. To act, it needs an API, MCP server, WebMCP tools, SDK, or CLI, plus authentication it can finish, and, if the product charges, a way to pay. The last step happens only if the first two did.

the action gap · ora scanner · april 2026 report

80%

reachable to every major AI crawler

3%

ship a spec-grade MCP server

Read access is close to solved. OAuth metadata and PKCE, the internals an agent needs to log in, pass on about 1% of sites. Agents can read. They cannot act. Figures from the April 2026 state of agent readiness report; the live per-check numbers are on ora.ai.
practicewhat it doesbest practice
Auth an agent can get throughAR-ACT-01 · SHOULDThe first gate of acting.Self-serve key generation, documented scopes. For user-delegated access, OAuth 2.0 with discoverable metadata under /.well-known (RFC 8414, RFC 9728).
Public API with a machine-readable contractAR-ACT-02 · SHOULDThe acting surface itself.OpenAPI with operation IDs, typed responses and errors, /v1/ versioning, documented rate limits.
MCP serverAR-ACT-03 · SHOULDStandard tool protocol for docs search and actions.Serve over Streamable HTTP at /mcp. Keep the docs MCP public. Gate the product MCP with OAuth (protected-resource metadata at /.well-known/oauth-protected-resource per RFC 9728, with PKCE) and list it in the MCP Registry with a server.json. Server cards for pre-connection discovery (AR-ACT-04, MAY) are an emerging convention (SEP-2127, a working-group draft that major hosts have begun to support): ship one if your target hosts read it, but expect the exact path to keep moving.
WebMCPAR-ACT-07 · MAYThe same tool contract, registered on the page itself.If the product has a web UI an agent should operate, register tools on document.modelContext. Feature-detect; the API is a W3C Community Group draft. Complementary to a server MCP: these tools run in the live page with the signed-in session. Only ship tools that map to actions the product actually offers.
MCP AppsAR-ACT-05 · MAYYour UI, rendered inside the agent host.If your product has a UI, ship a View (a ui:// resource) so the agent can hand a working surface back to the user.
NLWeb ask endpointAR-ACT-09 · MAYA lighter alternative to a full tool surface for content-heavy sites.Serve /ask, which takes a natural-language question and returns schema.org-shaped results, and expose the same ask tool over MCP. Suits publishers, catalogs, and docs whose value is content rather than operations.
SDKs and a CLIAR-ACT-06 · SHOULDThe forms agents act in: code and shell.Publish SDKs on npm and PyPI and a CLI; show install and first call in the docs.
Let agents payAR-ACT-08 · MAYThe last gate of acting. Applies only if the product charges.Per-call pricing: x402 or MPP, so an agent can settle a 402 and retry without an account. Checkout: UCP or ACP, so a shopping agent can complete a purchase. On Stripe, enable Link on checkout and accept Shared Payment Tokens, so an agent holding a Link Agent Wallet pays with a one-time credential the user approved, without filling a card form. Do not put a CAPTCHA wall in front of a verified agent.STUDIESPaying through Link, agents got 92.3% of test checkouts right; 18 of 26 agents got at least 90%.

§ check your site

Check your site

Three public rankers score the site itself, each on a different surface, and one report shows how you rank when agents search your market. None of them is the spec. The rankers have a free browser score; the report runs on a free Tavily API key.

CLI
is-agentic.com
npx is-agentic example.com
ora.ai
npx ax audit https://example.com
mintlify.com/score
npx mint score docs.example.com

Methodology: is-agentic.com/docs, ora.ai/docs, and Mintlify Agent Score. Scanner checks and weights may change independently of this spec.

§ references

§ changelog

Full history, including every retired identifier, in the changelog.

contribute

AgentReady is developed in the open. The spec source, the dataset behind the trace and experiment STUDIES numbers, and this site live on GitHub, where discussion and proposals happen. Recommendations are revised as new agent behavior is measured.

MIT · revised as protocols emerge