Rover (rtrvr.ai) published a strong paper in April 2026 arguing for a 5-signal discovery layer on the agent-web. They're right about the number and mostly right about the signals. They're wrong about who should own them. This is the vendor-neutral version of the same idea, and it's now the default in [geo-standard@2026.07](/standard.md).
Why one signal isn't enough
Agents don't share an architecture. A site that publishes only `llms.txt` is invisible to MCP clients. A site that publishes only `/.well-known/mcp.json` is invisible to Claude's text-mode. A site that publishes only an in-page `<script type="application/agent+json">` marker is invisible to computer-use agents that only see pixels.
There are five agent architectures in production today. Each one reads a different signal:
1. **API-calling agents (MCP/A2A clients)** — ChatGPT connectors, Claude MCP, agent frameworks. They fetch `/.well-known/agent-card.json` (A2A schema) to discover skills. 2. **MCP clients specifically** — need the MCP server card at `/.well-known/mcp.json` so they can auto-configure without a paste-in URL. 3. **Text agents** — Claude, ChatGPT chat, Gemini chat, Perplexity. They read `/llms.txt` for a curated index of the site's important routes. 4. **DOM agents** — Codex, Devin, Playwright-driven bots. They parse rendered HTML and look for `<script type="application/agent+json">` in the head so they don't have to guess the endpoint. 5. **Computer-use agents (CUA)** — OpenAI Operator, Claude Computer Use, browser-native pixel agents. They only see the screen; they need a **visible** "AI-ready" badge as a pixel-level cue.
Ship fewer than five and you're invisible to at least one production agent runtime today.
The 5 signals, verbatim
This is the matrix. Copy it into any project:
| # | Signal | Serves | Spec | |---|---|---|---| | 1 | `/.well-known/agent-card.json` | API-calling agents (MCP/A2A) | A2A agent-card schema | | 2 | `/.well-known/mcp.json` | MCP clients auto-configuring | MCP spec | | 3 | `/llms.txt` | Text agents (Claude, ChatGPT, Gemini chat) | llmstxt.org | | 4 | `<script type="application/agent+json">` in HTML `<head>` | DOM agents (Codex, Devin, Playwright bots) | in-page JSON envelope | | 5 | Visible AI-ready badge or `data-agent-ready` attribute | CUA / screenshot agents (Operator, Claude CUA) | screenshot-detectable marker |
The payloads reference each other. `agent-card.json` lists all five signals. The in-page marker points at `agent-card.json`. `llms.txt` links to both. Any agent that finds one signal can walk to all the others.
Why this belongs in the open, not in a runtime
Rover's version of the matrix includes `/.well-known/rover-site.json` — a Rover-specific file only Rover-installed sites publish and only Rover-aware agents read. That's a runtime discovery layer disguised as a standard. The vendor-neutral equivalent is `agent-card.json` (Google's A2A schema, which any A2A/MCP client already understands). Same job. No SDK. No install. No single-vendor dependency.
Discovery is the layer of the agent-web that most needs to be an open, boring spec — the same way `sitemap.xml` and `robots.txt` are boring specs no crawler had to install an SDK to read. The moment discovery lives inside a runtime, the runtime becomes the citation gatekeeper.
How to ship it in a day
1. **agent-card.json** — copy the shape from [/.well-known/agent-card.json](/.well-known/agent-card.json) on this site. Static JSON, 2 minutes. 2. **mcp.json** — if you don't have an MCP server yet, spin one up with the reference MCP SDK. Emit the card at `/.well-known/mcp.json`. 3. **llms.txt** — copy the llmstxt.org template and list your top 20 public routes. 4. **In-page marker** — add one `<script type="application/agent+json">` to your site-wide head with pointers to the other four signals. 5. **Visible badge** — a small "AI-ready" pill in your footer that links to `/badge`. Add `data-agent-ready="true"` on the wrapping element for DOM agents that don't screenshot.
Run [/check](/check) on your URL. If the Protocol Discovery metric shows 5/5, you're done. Any agent shipping in 2026 can find you.
The bigger claim
Discovery is the layer where the agent-web either forks into vendor moats or converges on open specs. Every argument for a proprietary discovery file — "better analytics", "richer capability descriptors", "trust levels" — is answered by extending an open spec, not by publishing a parallel file only your runtime reads. The 5-signal matrix is what convergence looks like. Ship it, and any agent that gets built next year can already read your site.