A website becomes easier for AI agents to operate when its functions have clear inputs and results. WebMCP proposes exposing those functions as tools directly in the browser. This may help with property searches, availability checks or forms.
As of September 30, 2026: WebMCP is a W3C Community Group draft, not a W3C Standard. Browser implementation and support by the actual agent are separate questions. Installing Chrome does not by itself make every website callable by every assistant.
Separate MCP, A2A and WebMCP#
| Interface | Purpose | Where it lives |
|---|---|---|
| MCP | Provide tools, data and prompts to an assistant | A server reachable by the client, local or remote |
| A2A | Exchange tasks and messages between agents | The interface of an executable agent |
| WebMCP | Expose functions of an open website as tools | The browser document |
| Custom agents.json | Describe your HTTP interfaces | A public manifest, if you provide one |
An agents.json is not part of the MCP protocol. An A2A Agent Card describes an agent and its skills; the file alone cannot make a booking. There is no general guarantee that ChatGPT or Claude automatically check every website for an agents.json.
A tool using the current WebMCP draft#
The current entry point is document.modelContext. Older navigator.modelContext examples belong to an earlier draft. Here is a read-only property search:
if (document.modelContext) {
await document.modelContext.registerTool({
name: "search_properties",
description: "Search property listings by location and maximum price",
inputSchema: {
type: "object",
properties: {
location: { type: "string" },
maxPrice: { type: "number", minimum: 0 }
},
required: ["location"]
},
annotations: { readOnlyHint: true },
execute: async ({ location, maxPrice }, { signal }) => {
const query = new URLSearchParams({ location });
if (maxPrice !== undefined) query.set("maxPrice", String(maxPrice));
const response = await fetch(`/api/listings?${query}`, { signal });
if (!response.ok) throw new Error("Property search failed");
return response.json();
}
});
}
This example follows the current draft. It needs a compatible browser and an /api/listings route you implement. The execute callback receives inputs and a cancellation signal. readOnlyHint describes the intended effect; the application must still enforce permissions and validate inputs. An annotation does not prevent harmful actions.
Describe forms declaratively#
The official declarative explainer describes attributes such as toolname and tooldescription, rather than data-mcp-tool:
<form action="/search" method="get"
toolname="search_properties"
tooldescription="Search property listings by location">
<input name="location" required />
<button type="submit">Search</button>
</form>
This is a draft pattern. Algorithms in the declarative part of the specification remain unfinished. Check actual browser support and keep the normal form usable. A paid booking or contact request should have an explicit confirmation step; avoid automatic submission that creates an unchecked commitment.
What to build first#
Start with a read-only function you already need. Describe parameters precisely, limit result counts and test failures. Add actions that change data afterward. Authentication, permissions, abuse prevention and privacy belong in the actual workflow.
Publish an Agent Card only if an A2A agent implements its advertised skills. Version 1.0 puts the address, binding and protocol version in supportedInterfaces. A public manifest does not automatically require open CORS: CORS applies to browser requests, not to ordinary server-side agent requests.
What this does not establish#
Integration guarantees neither preferential AI citations nor better Google rankings or more customers. A custom “AI-Ready” assessment should state which properties it checks and its limits. There is no universal WebMCP score of 110 points or required number of tools.
A trial is useful when it simplifies a specific workflow and a compatible agent is available. See our web design and AI solutions offerings.
Sources: WebMCP specification, Chrome early preview, A2A 1.0.
