# WebMCP

> MCP for the browser: a web page registers callable tools on document.modelContext so a visiting agent invokes functions instead of clicking pixels.

_The Agent Protocol Atlas · /protocols/webmcp · [JSON](/api/protocols/webmcp) · [all The Agent Protocol Atlas](/protocols)_

- **name:** WebMCP
- **full_name:** Web Model Context Protocol
- **layer:** capability
- **creator:** W3C Web Machine Learning Community Group (engineers from Google & Microsoft)
- **status:** draft (Chrome 146 DevTrial)
- **year:** 2026
- **one_liner:** MCP for the browser: a web page registers callable tools on document.modelContext so a visiting agent invokes functions instead of clicking pixels.
- **spec_url:** https://webmachinelearning.github.io/webmcp/
- **snippet:**

```
await document.modelContext.registerTool({ name, description, inputSchema, execute })
```
- **abbreviation:** WebMCP
- **also_known_as:** Web Model Context Protocol
- **canonical_spec_url:** https://webmachinelearning.github.io/webmcp/
- **entity_uri:** https://webmachinelearning.github.io/webmcp/
- **taxonomy_layer:** capability
- **sub_layer:** browser-tooling
- **protocol_type:** tooling
- **central_problem:** Lets a website expose typed, callable tools to an AI agent running in the browser, so the agent invokes functions directly instead of simulating clicks on the rendered page.
- **maintainer:** W3C Web Machine Learning Community Group (editors: Brandon Walderman / Microsoft, Khushal Sagar / Google, Dominic Farolino / Google)
- **governance_body:** W3C
- **license:** W3C Community Contributor License Agreement (CLA)
- **maturity_tag:** experimental
- **current_spec_version:** Draft Community Group Report
- **spec_date:** 2026-06-15
- **launch_date:** — (verify-against-primary-at-build)
- **last_verified:** 2026-06-15
- **transport:** In-page JavaScript API (navigator.modelContext / document.modelContext)
- **core_mechanism:** A page calls navigator.modelContext.registerTool(tool, options) (also exposed as document.modelContext) to register typed tools with name, description, inputSchema, and an execute handler; a browser-resident agent enumerates and invokes those tools. It is a Draft Community Group Report, NOT a W3C Standard and not on the W3C Standards Track.
- **discovery_endpoint:** navigator.modelContext / document.modelContext (in-page JS object)
- **settlement_type:** —
- **adoption_metric:** — (verify-against-primary-at-build)
- **notable_adopters:** {"value":"Microsoft (editor org)","source":"https://webmachinelearning.github.io/webmcp/"}, {"value":"Google (editor org)","source":"https://webmachinelearning.github.io/webmcp/"}
- **relationships:** {"predicate":"standardized_by","target":"w3c","note":"WebMCP -standardized_by-> W3C (the standards body; modeled as a planned governance entity, not yet a record id)."}, {"predicate":"extends","target":"mcp","note":"WebMCP brings the MCP tool-calling model to the browser page context."}
- **ideal_use_case:** Making an interactive web app callable by browser-resident agents (Operator/Comet/Atlas-class) without DOM scraping.
- **when_to_use:** When your value is in a rich client-side web UI and you want agents to drive it via typed tools rather than fragile pixel-clicking.
- **when_not_to_use:** When you need a server-side, cross-host agent integration (use MCP), or stable production guarantees — WebMCP is an unstable draft and expects breaking changes.
- **code_example:** navigator.modelContext.registerTool({
  name: 'add_to_cart',
  description: 'Add a product to the cart',
  inputSchema: { type: 'object', properties: { sku: { type: 'string' } }, required: ['sku'] },
  async execute({ sku }) { return await cart.add(sku); }
});
- **source:** Status, editors, API surface, draft dated 15 June 2026: https://webmachinelearning.github.io/webmcp/ (Draft Community Group Report; not a W3C Standard). Governance (W3C): brief §L2 + research §2.
- **agent_readiness_link:** agent-readiness/webmcp
- **layer_legacy:** tool
