What Is WebMCP? How to Make Your Site Ready for AI Agents

A new proposal that lets your site offer ready-made tools to AI agents. A practical walkthrough with one store from start to finish: what it is, how it differs from MCP and Schema, how to add it to a form or with JavaScript, how to try it, and what it means for SEO.

By Islam Ahmed

Published Sources checked: 9 min read

Say you run a store that sells coffee gear, and a customer asks ChatGPT: "Find me a manual coffee grinder under $60 in this store." ChatGPT opens the store in a browser and tries to do what any of us would: read the page, guess where the search box is, type into it, and look for a price filter.

The problem is that the agent is guessing. If the search box hides behind an icon, the price filter sits in a closed menu, or the design changed last week, those steps break, and the customer may never reach the product you actually have.

WebMCP fixes this from the site's side. Instead of the agent guessing, the site declares clear tools, like "search the products; send me a product name and a maximum price", and the agent uses them directly. In this post we'll follow that store from start to finish: see the difference in a simulation, set up its tools in code, try it out, and look at what it means for SEO.

What is WebMCP?

WebMCP is a new browser interface that lets a website offer tools to AI agents, like ChatGPT and Chrome. Each tool has a name, a description of what it does and when to use it, and defined inputs, like a product name or a maximum price.

The tool itself runs inside the website's page, in the site's own JavaScript, with the user's session. So if the customer is signed in to the store, the agent uses the tool with the same account, without you building a separate API.

ItemDetails
StatusA draft from the W3C Web Machine Learning Community Group, last updated 16 October 2026; not an official standard yet
Where it runsInside the website's page, in the browser
Who supports it so farChrome, behind a testing flag and in an origin trial from Chrome 149, and ChatGPT through Site Tools
Main requirementThe page must be served over HTTPS
How you add itAttributes on an existing form, or JavaScript

How an agent uses your site, without WebMCP and with it

Back to the customer's request: let's see what the agent does in each case. Pick a case, click "Next step", and watch which part of the page the agent touches at each step.

The customer asks ChatGPT

“Find me a manual coffee grinder under $60 in this store.”

The agent's stepsStep 0 of 5

    A simulation: the store and prices are an example

    The difference isn't only the number of steps. Without WebMCP, every step rests on the agent's guess about the page, and any design change can break it. With WebMCP, the site defines the tool and its inputs, and the agent carries it out.

    Without WebMCPWith WebMCP
    How the agent knows what to doIt reads the page and guessesThe site declares its tools, with names and inputs
    Steps in the example53
    If the design changesThe steps can breakThe tool still works, as long as its name and inputs stay the same
    Who sends the requestUp to the agentFor a form, the customer clicks Submit
    What the site needsNothingAttributes on a form, or a little code

    A practical example: setting up a coffee store's tools

    Before you write any code, ask one question: what do customers actually do on my site? On our coffee store, the answer is probably four things: search for a product, check whether it's in stock, add it to the cart, and track the order after buying. Each of those can be a tool:

    ToolWhat it doesHowChanges anything?
    search_productsSearches products by name and maximum priceThe search formNo, read-only
    check_stockReturns how many units of a product are in stockJavaScriptNo, read-only
    add_to_cartAdds a product to the cartJavaScriptYes
    track_orderShows an order's status by its numberThe order-tracking formNo, read-only

    The last column matters most. Read-only tools are safe to leave to the agent, but any tool that changes something, like the cart or payment, has to stay visible to the user and under their control. That's exactly what we'll apply in the code.

    The first way: turning an existing form into a tool

    The easiest place to start is the search form, because you already have it. All you do is give the form a name and a description, and each field an optional description. Chrome's documentation calls this the declarative API:

    html
    <form toolname="search_products"
          tooldescription="Search the store's products by name, with an optional maximum price in USD."
          action="/search">
      <input name="q" toolparamdescription="Product name or type, like manual coffee grinder">
      <input name="max_price" type="number" toolparamdescription="Highest price in USD">
      <button>Search</button>
    </form>

    The form is now a tool called search_products. When an agent calls it, the browser focuses the form and fills in both fields in front of the customer, and the customer clicks "Search", as you saw in the simulation.

    AttributeGoes onMeaning
    toolnameThe formThe tool's name; required
    tooldescriptionThe formThe tool's description; required
    toolparamdescriptionAny fieldWhat the field is for; optional
    toolautosubmitThe formThe form submits without the customer clicking

    Remove toolname or tooldescription and the tool disappears. toolautosubmit suits a search form, because searching changes nothing, but not a payment or delete form.

    The second way: a tool in JavaScript

    Not everything is a form. A product's stock level, for example, comes from your API, and there's no form the customer fills in for it. Here you register the tool in code, the way Chrome's docs call the imperative API:

    js
    document.modelContext.registerTool({
      name: "check_stock",
      description: "Returns how many units of a product are in stock.",
      inputSchema: {
        type: "object",
        properties: { sku: { type: "string" } },
        required: ["sku"],
      },
      annotations: { readOnlyHint: true },
      execute: async ({ sku }) => {
        const res = await fetch(`/api/stock?sku=${encodeURIComponent(sku)}`);
        return res.json();
      },
    });

    This code defines the tool with what a form has, and more. name and description work just like the form's. inputSchema defines the inputs as JSON Schema: the tool needs an sku, and it's a string. execute is the code that actually runs, and what it returns goes back to the agent. And readOnlyHint tells the agent the tool only reads, and changes nothing.

    If a tool does change something, like add_to_cart, use consequentialHint instead, to mark it as doing something significant or irreversible.

    And if you find articles or examples that write navigator.modelContext, that's the old name. The current spec moved it to document.modelContext, so write the new one.

    FormJavaScript
    What you writeAttributes on existing HTMLCode that registers the tool
    Good forSearch, quote requests, bookings, order trackingAnything that isn't a form, like stock or the cart
    Who sends the requestThe customer clicks Submit, unless you add toolautosubmitThe code runs right away
    Needs a developer?No, a small HTML changeYes

    WebMCP vs. MCP vs. Schema

    WebMCP gets mixed up with two things: MCP, because the name comes from it, and Schema, because both describe a site to a machine. This table separates the three:

    SchemaMCPWebMCP
    What it saysWhat the page is: a product, its price, its ratingThe tools a service offersThe tools this page offers
    Where it livesIn the page's code, as dataOn a server or a separate programInside the page, in the browser
    Who uses itSearch engines and othersAI appsAgents in the browser, like Chrome and ChatGPT
    Sign-inNot neededDepends on the serviceUses the user's session on the site

    The spec itself describes a page that uses WebMCP as something like an MCP server, with its tools written in the page's code instead of on a server. And WebMCP doesn't replace Schema: Schema describes the product, while WebMCP lets the agent do something with it, like find it or add it to the cart.

    How to try WebMCP yourself

    WebMCP is in Chrome, but it isn't on for everyone yet. To try it on your computer:

    1. Open Chrome, type chrome://flags/#enable-webmcp-testing in the address bar, set it to Enabled, and relaunch Chrome.
    2. Install the Model Context Tool Inspector extension that Chrome recommends, and add a Gemini API key, which it uses to try the tools in plain language.
    3. Open a page that has WebMCP tools, like the demos Chrome points to, or any page on our site, since every one of them has a search_courses tool for searching the courses. The extension lists each tool with its name, description and inputs.
    4. Ask for something in plain words, like "find me a manual grinder under $60", and watch how the tool is called and what fills in the form.

    To see whether a page on your site is ready without turning anything on in your browser, run it through the WebMCP checker: it tells you whether the page offers tools, whether agents can reach it, and what's missing and how to fix it.

    When you're ready for your real visitors to use it, Chrome runs an origin trial from Chrome 149: you register your site and put the token you get in your page. Leave Third-party matching off when you register, because Chrome ignores that kind of token in the page itself. And remember that WebMCP only works over HTTPS.

    In ChatGPT, open the built-in browser in the desktop app and go to the page. If it has tools, an arrow shows in the address bar, gray when tools are available and blue while ChatGPT is using them. We walk through that feature in Advanced ChatGPT Features and How to Use Them.

    Does WebMCP matter for SEO?

    To be clear from the start: there's no evidence that WebMCP affects your rankings in Google, and Chrome's own documentation doesn't mention search at all. If someone tells you it's a new ranking factor, that claim has no source behind it.

    What is changing is how people use websites. Some people now ask ChatGPT, or a browser with an agent, to search or book for them, and the agent visits the site. If the site isn't clear to the agent, the task can fail, even when your page is the first result in Google.

    The part that concerns you as an SEO writer is writing the tools themselves, because a tool's name and description are what the agent chooses by, just as a title and description are what a searcher chooses by. Here is Chrome's advice for writing tools, with examples from the store:

    AdviceWeak exampleClearer example
    Name the tool with a verb that says exactly what happensproductssearch_products
    Describe what the tool does and when to use itProduct toolSearch products by name, with an optional max price.
    Use specific types and clear names for fieldsshipping_id=1shipping="Express"
    One tool, one jobOne tool for search and the cartSeparate search_products and add_to_cart
    Take the user's input as it isAsk the agent to work out the time between two timesTake both times, and compute the difference in code

    Before you add WebMCP to your site

    Start with the forms you already have: site search, quote requests, bookings, order tracking. That's the easiest step, because it's attributes on HTML you already have, and it usually doesn't need a developer. After that, keep these in mind:

    • For any tool that does something you can't undo, like paying or deleting, leave the submit to the user, don't use toolautosubmit, and in JavaScript mark it with consequentialHint.
    • Make error messages say why, like "this product is out of stock" or "that order number is wrong", so the agent understands and retries with the right data.
    • WebMCP is still a draft and its details change; the interface's own name moved from navigator to document, so check the docs before you launch anything.
    • So far, the documented support is in Chrome, and in ChatGPT through Site Tools, so don't rely on it alone for anything essential on your site.
    • When you're done, run the page through the WebMCP checker to make sure the form is now a tool and every field in it is described.

    Sources

    ← All posts