Two weeks ago, Google shipped WebMCP in Chrome 146 as an early preview. It's a W3C standard, jointly developed with Microsoft, that lets websites expose structured tools to AI agents running in the browser. Instead of agents scraping your DOM or clicking buttons, they can call well-defined functions with typed parameters and get structured results back. Think of it as MCP, but for the browser.
We already had an MCP server running on ZĂŒriCityGPT and other LiipGPT deployments. Tools like knowledge base search, public transport timetables, and waste collection schedules were available to any MCP client, Claude Desktop, Cursor, or custom integrations. The tool definitions, schemas, and execution logic were all there. WebMCP just needed a bridge to bring them into the browser.
The implementation turned out to be surprisingly straightforward. When the page loads, a small script checks if navigator.modelContext exists. If it does, it fetches the available tools from our existing MCP endpoint using a standard JSON-RPC tools/list request and registers each one with navigator.modelContext.registerTool(). When an AI agent calls a tool, the execute handler sends a tools/call request back to the same endpoint. The entire client-side code is about 30 lines of vanilla JavaScript.
navigator.modelContext.registerTool({
name: tool.name,
description: tool.description,
inputSchema: tool.inputSchema,
execute: function(params) {
return fetch(mcpUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'tools/call',
params: { name: tool.name, arguments: params }
})
}).then(r => r.json()).then(d => d.result);
}
});
The beauty is that the tool set is dynamic and per site setup. ZĂŒriCityGPT exposes search with a special mode for city council resolutions (StadtratsbeschlĂŒsse, see also StrbGPT), waste collection lookups via the OpenERZ API, and Swiss public transport departures. A different LiipGPT deployment would expose its own set of tools. The backend decides what's available, the browser just registers whatever comes back.
One thing worth noting: navigator.modelContext is behind a flag in Chrome Canary (chrome://flags/#enable-webmcp-testing) and not available in any stable browser yet. The script uses feature detection, so nothing happens in unsupported browsers.
To actually test it, you need Chrome Canary and the Model Context Tool Inspector extension (which requires a Gemini API key to do anything useful with the tools). But the registration itself works, and seeing "search", "get_waste_collection", and "get_timetable_info" show up in the inspector when visiting a chatbot page is a nice confirmation that everything clicks together.
Now, ZĂŒriCityGPT is a page with essentially one big input field. It's already a chatbot. An AI agent visiting the site could just type into that field. Exposing structured tools on a page that is itself a tool feels a little redundant. But it does open up genuinely new possibilities. A browser agent could search the knowledge base, check the next tram departure, and look up waste collection dates in parallel, without ever touching the chat UI, and combine the results with data from other sites. The chatbot answers questions one at a time. WebMCP lets agents compose capabilities.
Is this useful today? Not really. No stable browser supports it, and the user base of Chrome Canary with experimental flags enabled is, let's say, select. Google and Microsoft are pushing it through the W3C, and formal browser support is expected by mid-to-late 2026. When that happens, any AI agent visiting ZĂŒriCityGPT will automatically discover what it can do, no documentation reading and UI guessing required.
The interesting part is the convergence. We now have the same tool definitions serving three purposes: LangChain tools for the chatbot's own RAG pipeline, an MCP server for "traditional" AI clients, and WebMCP for browser agents. One set of schemas, three integration points. Adding a new tool to any LiipGPT site automatically makes it available everywhere.
If you want to try it yourself, visit zuericitygpt.ch with Chrome Canary, enable the WebMCP flag, and install the Model Context Tool Inspector extension. You'll see the three registered tools and can ask Gemini when your next paper collection is. Or just type the question into the chatbot, that still works too.