--- title: "Agent Ready v1: the web standard an AI agent reads | Busymate AI" description: "Can an AI find you, understand you, trust you and do useful work with you? The six sections, the ten requirements, the one-URL Markdown contract and the evidence behind every verdict." last_updated: "2026-09-17T13:17:31+03:00" --- # Agent Ready v1: the web standard an AI agent reads | Busymate AI Source: https://busymate.ai/ja/agent-ready Last modified: 2026-09-17T13:17:31+03:00 Can an AI find you, understand you, trust you and do useful work with you? The six sections, the ten requirements, the one-URL Markdown contract and the evidence behind every verdict. Version 1.2. Published by Busymate AI as `Busymate AI Agent Ready v1`. ## Sections and weights The six sections share 100 points. Each one grades one layer of what an agent meets on a website. | Section | Layer | Points | What it asks | | --- | --- | --: | --- | | Discover | discovery | 15 | Can an AI agent find your content? | | Understand | semantics | 15 | Does an agent understand your business correctly? | | Read | content | 20 | Can an agent consume your content efficiently? | | Act | actions | 20 | Can an agent take actions on your website? | | Connect | connectivity | 20 | Can external agents call your systems? | | Trust | safety | 10 | Can an agent authenticate, confirm actions, and reach a human? | ## Requirements Ten clauses decide readiness. Everything else the catalogue carries is a diagnostic. - **R1** (content) — Important content is present in the initial HTML. Proven by: initial_html_content. - **R2** (content) — Pages can expose a Markdown representation of themselves. Proven by: markdown_representation. - **R3** (discovery) — The site publishes a sitemap. Proven by: sitemap. - **R4** (discovery) — The site publishes an llms.txt. Proven by: llms_txt. - **R5** (discovery) — The site publishes a machine-readable capability manifest. Proven by: capability_manifest. - **R6** (semantics) — Pages declare their language and their canonical URL. Proven by: language_canonical. - **R7** (semantics) — The site publishes structured business or product metadata. Proven by: business_metadata. - **R8** (actions) — Web actions are declared when the page offers any. Proven by: page_tools. - **R9** (actions) — Backend agent tools or an API are declared when the service offers any. Proven by: programmatic_api. - **R10** (safety) — Authentication, authorization and human hand-off are explicit. Proven by: human_handoff, auth_explicit. ## Checks 35 checks make up the catalogue; 8 of them carry no weight — an unsettled convention is reported when found and never deducted when absent. A check whose `appliesWhen` is false leaves the denominator instead of counting against the site. - `sitemap` (discover, R3, 3 pts) — A sitemap lists the pages an agent should read. Expects: An XML sitemap (or a sitemap index) with at least one . - `llms_txt` (discover, R4, 4 pts) — llms.txt points an agent at the content that matters. Expects: GET /llms.txt returns text with at least one link. - `capability_manifest` (discover, R5, 3 pts) — agents.json joins content, interfaces, authentication and contact in one card. Expects: A JSON manifest at /.well-known/agents.json or /agents.json. - `manifest_twin_parity` (discover, diagnostic, 1 pts) — When agents.json is published at both paths, the two copies agree. Expects: /.well-known/agents.json and /agents.json answer with byte-identical bodies when both exist. - `sitemap_xml_valid` (discover, diagnostic, 1 pts) — The sitemap is a real urlset or sitemapindex document whose loc entries point at the site's own origin. Expects: 200, a or root element, and at least one same-origin . A redirect to another path is reported with the target. - `robots_ai_crawlers` (discover, diagnostic, 2 pts) — robots.txt lets AI search and user-requested retrieval reach your pages. Expects: robots.txt does not block search/citation or user-requested AI agents from /. - `discovery_link_headers` (discover, diagnostic, 1 pts) — HTTP Link headers tell an agent the site MEANT to expose these documents. Expects: Link: ; rel="describedby" and ; rel="alternate". - `robots_training_policy` (discover, diagnostic, optional) — The site states, either way, whether its pages may be used for model training. Expects: Optional: robots.txt names model-training crawler tokens. Opting out is a valid answer and costs nothing. - `llms_full_txt` (discover, diagnostic, optional) — llms-full.txt carries the whole corpus in one file. Expects: Optional: GET /llms-full.txt returns text. - `sitemap_md` (discover, diagnostic, optional) — sitemap.md is a human- and agent-readable index. Expects: Optional: GET /sitemap.md returns markdown. - `agents_md` (discover, diagnostic, optional) — AGENTS.md is a prose companion to the manifest. Expects: Optional: GET /AGENTS.md returns markdown. - `language_canonical` (understand, R6, 5 pts) — The page states what language it is in and which URL is canonical. Expects: and (or a canonical Link header). - `business_metadata` (understand, R7, 6 pts) — JSON-LD says who you are and what you sell, in a vocabulary every agent already parses. Expects: JSON-LD with an identity type (Organization, LocalBusiness, WebSite, Store) or a Product/Offer. - `structured_data_fields` (understand, diagnostic, 3 pts) — The identity node carries real fields, not just a bare @type. Expects: An identity node (Organization, Product, …) with a name, a description and a url. - `open_graph` (understand, diagnostic, 1 pts) — Open Graph gives a title, a description and an image to anything that previews a link. Expects: og:title, og:description and og:image. - `content_freshness` (understand, diagnostic, optional) — Content nodes say when they last changed, so an agent can tell fresh from stale. Expects: Optional: CreativeWork / DataFeedItem nodes carry dateModified (or datePublished). - `initial_html_content` (read, R1, 14 pts) — The content is in the served HTML, not assembled later by a script. Expects: One

, a
landmark and real prose in the first response. - `markdown_representation` (read, R2, 4 pts) — The SAME URL serves Markdown to a client that asks for it. Expects: GET the page with Accept: text/markdown → text/markdown and Vary: Accept. - `markdown_frontmatter` (read, diagnostic, 1 pts) — The Markdown carries its own canonical URL, language and last-updated date. Expects: YAML frontmatter with canonical, language and updated (or title/description/last_updated). - `markdown_alternate_link` (read, diagnostic, 1 pts) — The page advertises its Markdown alternate so an agent does not have to guess. Expects: or the same as a Link header. - `page_tools` (act, R8, 13 pts) — The page registers its own actions as tools an agent can call in the browser. Expects: WebMCP tools on document.modelContext / navigator.modelContext, on the pages scanned. - `page_tool_catalog` (act, diagnostic, 4 pts) — A static catalogue lets an agent read the page's tools without executing it. Expects: A WebMCP catalog document linked from the page or at a well-known path. - `page_tools_policy` (act, diagnostic, 3 pts) — Permissions-Policy leaves the page's tools governed — by the default allowlist or by an explicit one. Expects: No tools= directive (the draft default is self), or an explicit tools= allowlist. A wildcard or a denial is the finding. - `programmatic_api` (connect, R9, 8 pts) — At least one programmatic description of the service exists — MCP, OpenAPI, GraphQL or another declared API. Expects: One of: a live MCP endpoint, an OpenAPI document, a GraphQL schema, or an API declared in the manifest. - `mcp_transport` (connect, diagnostic, 4 pts) — The MCP endpoint answers, negotiates a protocol revision and LISTS its tools. Expects: initialize and tools/list succeed over the transport the handshake actually ran on. Listing is not authorization to call. - `access_requirements` (connect, diagnostic, 3 pts) — The service documents which capabilities need a token and which do not. Expects: A manifest, a WWW-Authenticate challenge or protected-resource metadata that states the access requirements. - `oauth_metadata` (connect, diagnostic, 3 pts) — OAuth metadata discovery resolves, and advertises PKCE where a client must verify it. Expects: RFC 8414 / RFC 9728 metadata that resolves, with code_challenge_methods_supported. Dynamic client registration is optional. - `authenticated_execution` (connect, diagnostic, 2 pts) — An authenticated call actually succeeds — proof that a listed tool is a usable tool. Expects: An authenticated tools/call that returns a result. This scanner holds no token for your server and never calls a stranger's tool, so this stays UNVERIFIED — reported, never counted as a pass or as your failure. - `tool_annotation_coverage` (connect, diagnostic, optional) — Listed tools declare readOnlyHint, so a client can tell a read from a write before it calls. Expects: Optional: annotations on the listed tool definitions. Only meaningful from protocol revision 2025-03-26, which introduced them. - `openapi_spec` (connect, diagnostic, optional) — An OpenAPI document describes the HTTP API. Expects: Optional when MCP or another API already describes the interface. - `protocol_discovery_aliases` (connect, diagnostic, optional) — Optional well-known aliases (mcp.json, agent-card.json, api-catalog, …) are served cleanly or not at all. Expects: Optional: each alias is valid JSON or a clean non-200 — never the site's own HTML shell. - `human_handoff` (trust, R10, 4 pts) — An agent can hand a person off to a person. Expects: A contact email, phone or contact page an agent can quote. - `contact_signal_sources` (trust, diagnostic, 1 pts) — A machine-readable contact signal exists independent of any stored crawl. Expects: A mailto: link, a /contact link, a JSON-LD contactPoint, or a Contact: line in llms.txt — any one is enough. - `auth_explicit` (trust, R10, 3 pts) — The site states how an agent authenticates — or states that nothing needs authenticating. Expects: Authentication declared in the manifest, or OAuth metadata, or an explicit public posture. - `action_confirmation` (trust, diagnostic, 2 pts) — A consequential action is actually confirmed with the person before it runs. Expects: A client/workflow test that drives a write action and observes the confirmation. This scanner does not run one against a stranger's service, so it stays UNVERIFIED — never a pass, and never a deduction blamed on you. ## Verdicts - `pass` — what the clause expects came back. - `partial` — some of it is in place; the evidence names the half that is not. - `optional-found` / `optional-missing` — an unsettled convention, worth no points either way. - `fail` — asked for, and nothing was there. - `unverified` — the probe could not run. It keeps its weight and is listed apart; a refusal, a timeout or a redirect that never lands is never rounded up to a pass. ## Evidence Every check records the call it made, the answer this document expects and the answer it actually got. Only headers that change the answer are kept, and credentials never are. A count of tools behind sign-in reads as unknown rather than zero when nobody signed in to count it. ## Related - Grade a web address against this document: https://busymate.ai/ja/try.md - What a site publishes for assistants to act on: https://busymate.ai/ja/webmcp.md - The developer guide: https://busymate.ai/ja/developers.md