# WebMCP — in-browser tools for agents

> WebMCP puts an MCP server inside the web page: sites register JavaScript tools via
> `navigator.modelContext`, and any agent driving the browser can call them — structured
> actions instead of guessed clicks.

- status: verification lands with the next crawl (September 2026); entries will be dated
- consumed by: mainstream in-browser agents since August 2026 (ChatGPT desktop among them)
- verified entries: 0 today — declared, then verified, never assumed
- dogfood: knowngood.sh registers WebMCP tools of its own (find_capability,
  get_site_report) — a WebMCP-capable browser can search the index in-page

## Why it matters

The browser is where most web capability lives. A site that cannot run a server-side MCP
endpoint can still hand an in-browser agent a typed, testable interface. WebMCP is the
lightest path from "a human can do this on our page" to "an agent can do this on our page".

## How Known-Good verifies it

- static pass: detect `navigator.modelContext` / `provideContext` / `registerTool` in page
  source — a declaration (tier 1 evidence)
- headless pass: load the page, list the declared tools, never invoke — probe-verified (tier 2)
- invocation: only in tier-3 behavioural verification, with the site owner's consent

## Adding WebMCP to your site

Register tools on page load; agents discover them automatically:

    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 markdown negotiation and llms.txt so non-WebMCP agents can still use the site.
Live implementation? Request a probe: https://knowngood.sh/submit — the probe decides,
never the request.

## Related

- Search the index: https://knowngood.sh/ (REST /api/find · MCP /mcp)
- Working MCP servers: https://knowngood.sh/mcp-servers
- Rubric and tiers: https://knowngood.sh/benchmark
