Protocol explainer
WebMCP: the page becomes the API.
WebMCP puts an MCP server inside the web page itself. A site registers JavaScript tools in the visitor’s browser — through the navigator.modelContext API — and any agent driving that browser can call them: structured actions like “add to basket” or “check availability” instead of guessing at buttons and forms.
It matters because the browser is where most of the web’s capability actually lives. A site that cannot run a server-side MCP endpoint can still hand an in-browser agent a typed, testable interface — and since August 2026, mainstream agents (ChatGPT’s desktop browser among them) consume exactly that.
How Known-Good verifies WebMCP
Our probe treats WebMCP like every other capability: as a claim to be tested. The static pass detects the registration (navigator.modelContext / provideContext / registerTool) in page source — that records a declaration. A headless pass then loads the page and lists the declared tools without ever invoking them — that upgrades the record to probe-verified. Invocation is reserved for tier-3 behavioural verification, with the site owner’s consent.
Adding WebMCP to your site
Register tools when the page loads; agents discover them automatically. The shape:
navigator.modelContext.registerTool({
name: "check_availability",
description: "Free slots for a given service and date",
inputSchema: { type: "object", properties: { date: { type: "string" } } },
execute: async (args) => ({ slots: await lookup(args.date) })
});
Pair it with the readable layer — markdown negotiation and llms.txt — so agents that have not adopted WebMCP can still use the site. When your implementation is live, request a probe: placement is decided by the probe, never by the request.