Agent Readiness Score
WebMCP Tool: your site is about to have AI agent visitors with no hands.
Search asked whether Google understood your page. AI search asked whether your answer got cited. The question now is whether an agent can finish the job - and most sites have never been measured on it.
One request, about 20 seconds. No sign-up, no email. The result gets a shareable address.
Building for Meta AI or browser agents? The full check covers MCP discovery and WebMCP signals. Read the connector readiness guide for the live tests that follow.
Understood
Read and indexed
Crawler permissions, content that survives before any script runs, semantic structure and structured data - the difference between being summarised accurately and being summarised from your cookie banner.
Operated
Acted on
Forms with labels, controls with names, no bot challenge across the conversion path. An agent fills a form by reading it; a field called field_7 is a guess.
Integrated
Called as tools
WebMCP turns your actions into named, typed functions the visitor's own assistant can call - and a discovery document lets other systems find them before they arrive.
One number, immediately taken apart
A single score hides the thing you need to know. Ours splits in two the moment it appears - because “the site works but has adopted nothing” and “the tools are registered but the page is empty without JavaScript” are opposite problems that a single number reports identically.
| Axis | Points | Question | Pillars |
|---|---|---|---|
| Fitness | 65 | Does the site work for agents today? | Agent Access · Machine Readability · Actionability |
| Adoption | 35 | Which agent protocols are in place? | Integration · Identity & Commerce · WebMCP Implementation |
The standard shipped experimentally in 2026 and adoption outside demos is still close to zero. A score that measured only tool registration would hand almost every site on the web a nought, which tells nobody anything. So it carries 10 of 100 points, with the depth checks scored as a bonus above the hundred, while the rest measure whether an agent can do anything with you in the meantime.
25 checks across 6 pillars
Every one is documented, every one shows its evidence, and checks that do not apply to your site are excluded rather than counted against you. Read the full methodology.
Agent Access
20 ptsBefore anything else can be judged, the request has to succeed. This pillar covers crawler permissions, bot management, consent walls and whether the page carries its content without a JavaScript engine.
4 checks
Machine Readability
20 ptsSemantic structure, structured data, content negotiation and the source files agents look for when they want a summary of your site instead of a rendering of it.
5 checks
Actionability
25 ptsThe heaviest pillar, because this is where revenue is. Forms an agent can fill, controls it can name, no bot challenge across the conversion path, and errors it can read.
5 checks
Integration
15 ptsThe protocols an agent uses before it ever opens your page: an MCP endpoint, a description of your API, an agent card. None of these depend on a browser flag — MCP is shipped, OpenAPI is twenty years old, and A2A is moving fast.
3 checks
Identity & Commerce
10 ptsAgent-facing authentication, a way to tell a real crawler from an impostor, stated terms for your content, and — for shops — the rails an agent needs to complete a purchase.
3 checks
WebMCP Implementation
10 ptsNamed tools registered against document.modelContext, so an agent stops guessing at your DOM and starts calling your functions. Ten points, because measured across the top of the web on 31 August 2026 nobody had adopted it yet and a site should not be graded down for declining to bet on a draft. How well the tools are built is scored above the hundred instead.
5 checks
Agent Tracking · free pilot
The score says whether agents can use your site. The dashboard says whether they do.
One line of script on your pages, and four views show which assistants send visitors, which agents fetch pages, which WebMCP tools they call and whether they finish. No cookies, no personal data, hosted in Germany, with a data processing agreement concluded the moment you add a site. We run it on this site ourselves.
Referrals
Visitors arriving from ChatGPT, Perplexity, Claude and a dozen more, attributed to the assistant.
Fetches
GPTBot, ClaudeBot, PerplexityBot and their kind, counted from the server log, with the bursts that betray a query fan-out.
Tools
Every WebMCP tool you register: calls, duration, success rate, the errors, and the tools nobody has called.
What WebMCP actually is
One paragraph of the thing being measured, before the score above means very much.
WebMCP is a proposed web standard that lets websites declare their capabilities as structured tools that AI agents can call. A tool is a name, a description in natural language, and a JSON Schema for its arguments. Instead of an agent falling back on DOM scraping and inferring which button submits a booking, the page hands over tool definitions and the agent calls the tool directly in the browser.
The vocabulary is borrowed from the Model Context Protocol and moved into the page, where the session already holds the visitor’s login. No keys change hands, no separate server is stood up, and a tool is reachable only while the tab is open. The specification is a W3C Community Group draft in the Web Machine Learning group, which is not the same thing as a ratified standard: it can still change under you, and in July 2026 it did.
Tools on a page that arrives blank are a door on a building with no walls. An agent has to reach the page, read it and be able to act on it before a tool list means anything, which is why registration is one pillar rather than the whole score. What WebMCP is, and what it is not.
How to use WebMCP to expose tools in the browser
Two APIs. One you write in code, the other is markup you already ship.
The imperative API is the stable path: call registerTool on document.modelContext with an input schema and an execute callback, and register custom tools for anything the page can already do. The declarative API annotates HTML forms instead and lets the browser derive it from the fields you have, which is the shorter route in the common scenario where you just want to make existing forms agent-accessible.
await document.modelContext.registerTool({
name: "search_products",
description:
"Search the catalogue by free text. Returns up to 20 matches with " +
"price and stock status. Use before get_product_details.",
inputSchema: {
type: "object",
properties: { query: { type: "string", description: "Free-text term" } },
required: ["query"],
},
annotations: { readOnlyHint: true },
execute: async ({ query }, { signal }) => {
const res = await fetch(`/search?q=${query}`, {
credentials: "same-origin",
signal,
});
return { content: [{ type: "text", text: JSON.stringify(await res.json()) }] };
},
});One read-only tool, complete. The agent gets a name, a description and typed arguments instead of a screenshot.
Register tools when relevant and unregister them when they unmount, so the list can change contextually as the agent navigates. An AbortSignal handed to registerTool does the unregistering for you. If you already think about state in a component tree, tool registration belongs in the same place as everything else that mounts and goes away. The imperative API in detail, or annotating the forms you already have.
WebMCP, an MCP server and ordinary APIs
Three ways to be callable. They are not competing for the same job.
| Surface | Where it runs | Who it is for |
|---|---|---|
| Tools in the page | In the open tab, same-origin, on the visitor’s session | A browser agent acting for a signed-in person |
| A separate MCP server | Your infrastructure, outside a browser context | Headless jobs, a CLI, scheduled work with no tab open |
| A documented HTTP API | Your infrastructure, keys you issue | Integrations between tools and services, not one visit |
A separate server is still the right answer for anything that has to happen while nobody is looking, and an MCP server plus a machine-readable description of your APIs is worth points here for exactly that reason. WebMCP tool calls are the opposite case: no second deployment, no key exchange, and the permission to act is the login the person already has. The permissions policy defaults to self, so registration is off in cross-origin iframes unless the frame carries allow="tools".
While it may be possible to run tools in headless environments, the API is primarily designed for local browser workflows with a human in the loop. Discovery has the same shape of limit: a client has to visit the current page to learn that tools exist at all. WebMCP versus MCP, in full.
The use case for a browser agent
Not a chatbot you add to the corner of the page. Every use case starts the same way: the visitor’s own agent arrives with a task.
Web app
Agents interact with its dashboard
Web applications with a console: one filter_results call instead of six clicks through a menu, with rows handed back to the agent as JSON it can act on rather than pixels it has to read.
Forms
The cheapest win you have
Support flows and applications: annotate the form you already ship and an agent maps what the user told it onto the right fields, full name against first and last.
Buried actions
Things three menus deep
A run_diagnostics tool on a settings page lets an agent trigger a fix buried three menus deep in the UI. It is the worked example in the vendor's own documentation.
The pattern is the same in all three: your product, not your markup, becomes the tool surface. Agents can discover what is registered on the current page, filter and sort tools, and call your tools directly. What agents can invoke is exactly what you registered and nothing else, and every call runs visibly in the tab, so the person watching sees what was done in their name. What that looks like by industry.
Browser support for the API, and what is still behind a flag
The state of it on the date this page was last reviewed, without the press release.
| Environment | Status |
|---|---|
| Chrome 146 | Developer trial behind chrome://flags/#enable-webmcp-testing |
| Chrome 149 onwards | Public origin trial, one token per origin |
| Edge | Experimental, behind a flag |
| Firefox, Safari | In the discussion, no commitment |
| ChatGPT desktop | Calling registered tools since 25 August 2026 |
So: real, early, and available across Chrome and Edge behind flags rather than switched on for everyone. The entry point moved from navigator.modelContext to document.modelContext in July 2026 and broke every early adopter, which is a fair measure of how settled the surface is. The vendor’s own claim is that WebMCP offers higher accuracy for task completion than actuation does, and that it can be added as a progressive enhancement; both look fair. Register three read-only tools behind a feature check and you have spent a day. Rebuild a product around an unratified draft and you have made a different bet. Enabling it locally.
The inspector extension, MCP-B and Alex Nahas
How to watch an agent use your page before a real one ever does.
Chrome documents a Model Context Tool Inspector extension. Install it and you have tools to inspect what a page registers, call them by hand from natural language, and confirm the browser parses your arguments the way your code expects. It is the quickest way to find out whether any of it actually does anything on your site yet, and it costs nothing to try.
The WebMCP proposal did not appear from nowhere. The explainer on GitHub credits Alex Nahas and Jason McGhee for the implementation experience behind it, and the MCP-B project that came out of that work still ships the polyfill most teams use to put document.modelContext into browsers that do not have it. The polyfill and the React bindings.
Measure the site before you register anything
One request, about 20 seconds, 25 checks with the evidence attached. If the page is blank until it hydrates, that is worth knowing before you write a tool for it.
One request, about 20 seconds. No sign-up, no email. The result gets a shareable address.