<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>w3c on tomrochette.com</title>
    <link>https://tomrochette.com/tags/w3c/</link>
    <description>Recent content in w3c on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Tue, 06 Oct 2026 04:48:21 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/w3c/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>WebMCP</title>
      <link>https://tomrochette.com/agents/protocols/webmcp/</link>
      <pubDate>Tue, 06 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/protocols/webmcp/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>protocols</category><category>browser</category><category>w3c</category><category>agent-tools</category>
      <description>&lt;p&gt;WebMCP is a W3C Community Group draft specification, edited by Microsoft and Google engineers, that lets a web page expose its features as structured, callable tools through a &lt;code&gt;document.modelContext&lt;/code&gt; browser API, so the page itself acts like an MCP server implemented in client-side script.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;WebMCP inverts agent actuation the way AGENTS.md inverted repo instructions: the site declares what it can do instead of the agent reverse-engineering the interface, and since August 2026 the supply side went default-on across much of commerce through Shopify and Cloudflare while the demand side is still essentially one browser&amp;rsquo;s agent, which is the bet&amp;rsquo;s actual state.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A Draft Community Group Report (dated 2026-10-02) from the W3C Web Machine Learning Community Group, first announced 2026-02-10, with editors from Microsoft and Google.&#xA;The API surface is &lt;code&gt;document.modelContext&lt;/code&gt; with &lt;code&gt;registerTool()&lt;/code&gt;, &lt;code&gt;getTools()&lt;/code&gt;, and &lt;code&gt;executeTool()&lt;/code&gt;: a tool carries a name, a natural-language description, and a JSON Schema input, and pages register tools either imperatively in JavaScript or declaratively by annotating ordinary HTML forms.&#xA;&lt;strong&gt;The spec&amp;rsquo;s own framing places it in this index&amp;rsquo;s stack: &amp;ldquo;Web pages that use WebMCP can be thought of as Model Context Protocol servers that implement tools in client-side script instead of on the backend&amp;rdquo;, with the browser mediating every call under a &lt;code&gt;tools&lt;/code&gt; Permissions Policy that defaults to same-origin only.&lt;/strong&gt;&#xA;Chrome ships it behind a public origin trial (Chrome 149 through 156) plus a local flag, and Angular offers experimental support.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Active and past the flag stage, with one browser shipping and one agent consuming.&lt;/strong&gt;&#xA;The repository shows 4,469 stars and 120 open issues with a push on 2026-10-02, all as of 2026-10-06 (GitHub API).&#xA;The Chrome origin trial opened with Chrome 149 (Intent to Experiment filed 2026-05-15), Puppeteer added native WebMCP support in v24.41.0, and Google&amp;rsquo;s Chrome team presented the API alongside its agent browser work at I/O 2026.&#xA;In August 2026 the supply side jumped: Shopify switched WebMCP on for every Liquid storefront (catalog, cart, checkout, and policy tools) and Cloudflare made it available to any Cloudflare-fronted site with no code change.&#xA;The demand side did not move with it: Gemini in Chrome remains the main agent actually calling the tools, Microsoft co-authored the spec but Edge&amp;rsquo;s 147 release notes list no WebMCP support, and Firefox and Safari have given no public signal.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The browser sits in the middle of every call, which yields a human-in-the-loop model most agent protocols lack: tools are visible, forms wait for a human submit by default, and &lt;code&gt;SubmitEvent.agentInvoked&lt;/code&gt; tells the site which path a submission took.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;The declarative form path is a cheap on-ramp: existing, well-labeled HTML forms become agent tools with a few attributes.&lt;/li&gt;&#xA;&lt;li&gt;Multi-vendor authorship inside a standards body (Microsoft and Google together) rather than a single company&amp;rsquo;s repo-first spec.&lt;/li&gt;&#xA;&lt;li&gt;Chrome ships the adoption machinery: origin trial, demos, an inspector extension, security guidance, and evals, not just a proposal page.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;One browser ships it and one agent consumes it: a storefront that enables WebMCP today is writing against Chrome&amp;rsquo;s roadmap, not a standard.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;The API renamed itself mid-year (&lt;code&gt;window.agent&lt;/code&gt;, then &lt;code&gt;navigator.modelContext&lt;/code&gt;, now &lt;code&gt;document.modelContext&lt;/code&gt;, deprecated in Chromium 150), and the spec is a Community Group draft, not a W3C standard-track document.&lt;/li&gt;&#xA;&lt;li&gt;The spec&amp;rsquo;s own security section catalogs tool poisoning, output injection, over-parameterization privacy leakage, and same-origin violations as open risks, with mitigations still marked as approaches rather than solved problems.&lt;/li&gt;&#xA;&lt;li&gt;The supply-and-demand mismatch is the practical trap: millions of pages gained tool surfaces in a week, while the population of agents able to call them stayed near one.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free, an open specification with nothing to buy.&#xA;The cost is designing, implementing, and maintaining a tool surface per site, plus tracking a draft that has already renamed its central API.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/mcp/&#34; &gt;MCP&lt;/a&gt;: &lt;strong&gt;server-side tool exposure for agents you operate; WebMCP is the browser-tab cousin for sites you visit, and the spec explicitly models a page as an MCP server in client-side script.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;llms.txt: the identity-file bet versus the capability bet, a static description of who you are against callable tools; Google&amp;rsquo;s John Mueller called llms.txt &amp;ldquo;purely speculative for now&amp;rdquo; and pointed developers at WebMCP.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/ag-ui/&#34; &gt;AG-UI&lt;/a&gt;: streams agent events into a frontend you build, while WebMCP exposes tools from a site you visit, so they meet at the browser from opposite directions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for web platforms and commerce sites that want to be agent-actionable before the standard settles, and for agent builders who need a structured alternative to DOM actuation in Chromium.&lt;/strong&gt;&#xA;Not for anything requiring a stable, cross-browser API today, and not (yet) for reaching users outside Chrome.&#xA;My disagreeable claim: the Shopify-and-Cloudflare default-on wave matters less than it looks, because tool supply without agent demand is inventory nobody buys, and the protocol&amp;rsquo;s fate rides on whether Firefox, Safari, and OpenAI ever join.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-06 - Created from the 2026-10-06 entrant scan (the browser-native tool-exposure slot), with the one-browser-one-agent adoption split recorded as the central caution.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/mcp/&#34; &gt;Model Context Protocol (MCP)&lt;/a&gt; - the server-side protocol the spec names as its model&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/ag-ui/&#34; &gt;Agent User Interaction Protocol (AG-UI)&lt;/a&gt; - the frontend-facing lane on the other side of the browser&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/protocols-feature-matrix/&#34; &gt;Protocols Feature Matrix&lt;/a&gt; - the category comparison this note joins as the ninth column&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/agentic-coding-tools-landscape/&#34; &gt;Agentic Coding Tools Landscape&lt;/a&gt; - the map of where browser agents sit among the harnesses&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://webmachinelearning.github.io/webmcp/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=webmachinelearning.github.io&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://webmachinelearning.github.io/webmcp/&lt;/a&gt; - the Draft Community Group Report (2026-10-02): &lt;code&gt;document.modelContext&lt;/code&gt; API, declarative form variant, permissions policy, and the full security considerations section&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/webmachinelearning/webmcp&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/webmachinelearning/webmcp&lt;/a&gt; - repository: 4,469 stars, 120 open issues, pushed 2026-10-02 (GitHub API, as of 2026-10-06)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.chrome.com/docs/ai/webmcp&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=developer.chrome.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://developer.chrome.com/docs/ai/webmcp&lt;/a&gt; - Chrome implementation: origin trial from Chrome 149, imperative and declarative APIs, &lt;code&gt;tools&lt;/code&gt; permissions policy defaults, Angular experimental support (page updated 2026-10-01)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nohacks.co/blog/what-is-webmcp&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=nohacks.co&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://nohacks.co/blog/what-is-webmcp&lt;/a&gt; - practitioner record: the 2026-02-10 announcement, the navigator-to-document rename, the August Shopify and Cloudflare default-on wave, and the browser-support table&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://zylos.ai/research/2026-04-30-webmcp-browser-native-ai-agent-interaction/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=zylos.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://zylos.ai/research/2026-04-30-webmcp-browser-native-ai-agent-interaction/&lt;/a&gt; - independent analysis: Puppeteer v24.41.0 native support and the experimental state of the spec&amp;rsquo;s security sections as of April 2026&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.infoq.com/news/2026/06/webmcp-web-agent-standard-chrome/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=www.infoq.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://www.infoq.com/news/2026/06/webmcp-web-agent-standard-chrome/&lt;/a&gt; - the Chrome team&amp;rsquo;s I/O 2026 announcement context&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
