WebMCP, and what Shopify quietly turned on

The last piece in this library ended with a caveat: at some point you stop tuning input fields and give an agent a described interface instead. That point has arrived for a large share of merchants, who did not ask for it and mostly have not noticed. It is worth understanding precisely, because the mechanism is genuinely new, and almost every write-up of it so far has merged two different things that work in two different ways.

Reviewed September 29, 2026 · 11 min read

On this page6 sections
  1. Your page can hand the agent a toolbox
  2. If you are on Shopify, this already happened
  3. The part almost every write-up got wrong
  4. What changes for you, and what emphatically does not
  5. It is a draft, and drafts move
  6. What to do about it this week

Everything written here about forms an agent can fill assumes the agent has to work out your interface: read the labels, infer the purposes, guess which address block is which. That is the hard way, and it is the only way available when the page offers nothing better.

WebMCP is the page offering something better. Instead of leaving an agent to interpret your controls, the page hands it a list of named operations with descriptions and typed parameters, and the agent calls them. The difference is the difference between watching someone use a machine and being given its manual.

Your page can hand the agent a toolbox#

The mechanism is a JavaScript API. A page registers tools against a model context object on the document, and an agent operating in that browser can list and call them.

MethodWhat it does
registerTool(tool, options)Registers a tool for an agent to invoke
getTools(options)Retrieves the tools currently registered
executeTool(tool, inputObject, options)Executes a registered tool

A tool declaration is a small dictionary. Name and description are required, and so is execute, the callback that actually does the work and returns a promise. Title, an inputSchema expressed as JSON Schema, and an annotations object are optional.

document.modelContext.registerTool({
  name: 'check_availability',
  description: 'Check whether a size is in stock for a product',
  inputSchema: {
    type: 'object',
    properties: {
      sku: { type: 'string' },
      size: { type: 'string' },
    },
    required: ['sku', 'size'],
  },
  execute: async ({ sku, size }) => {
    const res = await fetch(`/api/stock?sku=${sku}&size=${size}`)
    return res.json()
  },
})

It is document.modelContext, not navigator.modelContext

Worth stating plainly because a striking number of explainers have it as navigator, which is the more natural guess and is wrong. The specification is explicit that tools are reached through the document object rather than through navigator. Code copied from a summary rather than the spec will silently register nothing.

Read the shape of that declaration again and notice what it resembles. A name, a description in natural language, a typed schema for the inputs. It is the same contract a merchant MCP server exposes, with one difference that turns out to matter a great deal: this one lives in the page, inside the shopper’s own browser session, rather than on a server the agent connects to separately.

If you are on Shopify, this already happened#

Shopify turned WebMCP tools on across its storefronts, and the phrasing in its own changelog is the part merchants should read twice: there is nothing to install or configure, and the tools are live on every Liquid storefront and on the Hydrogen developer preview. No opt-in, no flag. If you run a Liquid theme, an agent in a supporting browser can already call these:

ToolWhat an agent can do with it
search_catalogSearch products, collections, articles and pages, with prices and availability
browse_storeList collections, or the products inside one
get_productFull detail including variants, pricing and stock status
show_variantNavigate the shopper to a product with a variant selected
get_cartRead the cart contents with line items and variant detail
update_cartAdd items, change quantities, remove items
cancel_cartEmpty the cart
proceed_to_checkoutTake the shopper to checkout after verifying the cart
manage_ordersSend the shopper to order history for status and tracking
search_shop_policies_and_faqsAnswer questions about policies and services

One current limit is worth knowing before you draw conclusions from your own testing: agent support for WebMCP is documented as limited to Chromium-based browsers. An agent driving a different engine will not see these tools, and your experience of whether any of this works depends on which agent you happened to try.

The part almost every write-up got wrong#

Coverage of this has widely reported that Shopify now lets agents read, edit and submit checkout, naming a set of tools that includes complete_checkout. That merges two separate things, and the distinction is the most important thing in this article.

WebMCP toolsCheckout MCP server
Where it runsIn the shopper’s browser tabServer side, over a connection
What it is forBrowsing, cart, reaching checkoutCreating and managing checkout sessions
AccessLive by default, nothing to installRequires authentication or a signed request
Furthest it goesproceed_to_checkoutcomplete_checkout, subject to access level

The Checkout MCP server does document a complete_checkout tool described as submitting payment and placing the order. But the same documentation is direct about who that is for, noting that for general access, directing buyers to the checkout URL is how checkout completes and you do not call complete_checkout. Order placement is gated by access level, not handed out with the browser tools.

The accurate summary

An agent on a Liquid storefront can search your catalog, build a cart and walk the shopper to checkout, today, without you doing anything. It cannot quietly place the order. Those are different claims with different consequences, and the second one is the one people have been repeating.

See what an agent can actually do on your site

The free Nexez scanner fetches your site the way an agent does and scores what comes back: crawler access, server-rendered content, structured data, and machine-readable offers. About a minute, no signup.

Scan your site free

What changes for you, and what emphatically does not#

If you are on a covered platform, the interface-interpretation problem largely disappears for the paths those tools cover. An agent does not have to guess what your Add to cart button does when there is an update_cart tool with a described schema. That is a real reduction in failure modes and it arrived for free.

What does not change is everything upstream of it. search_catalog returns the products you published, with the prices and availability you published. get_product returns your variant and stock data. search_shop_policies_and_faqs answers from your policies. A tool is a reliable way to reach your data; it is not a way to improve your data.

So the whole argument for accurate product feeds, honest availability and stated policies survives intact, and arguably gets sharper. Previously a wrong price might be missed because the agent could not parse your page at all. Now it is handed over cleanly, through a documented interface, with your name on it.

It is a draft, and drafts move#

The honest framing matters here, because the gap between how settled this feels and how settled it is remains wide. The specification is a Draft Community Group Report from the Web Machine Learning Community Group, and it carries the standard disclaimer: it was published by that community group, it is not a W3C Standard, and it is not on the W3C Standards Track.

That is a familiar pattern by now. Signed agent requests shipped in production ahead of their own draft too. Deployment leading standardisation is not a reason to ignore something that is live on your storefront, but it is a reason to read tool names and method signatures from the specification and the platform documentation rather than from an article, including this one, six months from now.

What to do about it this week#

  1. Find out whether your platform registers tools on your behalf. On a Liquid storefront the answer is yes and you did not have to do anything. On a custom stack the answer is no unless somebody built it.
  2. Test in a Chromium-based browser, since that is where agent support currently is, and note that a negative result elsewhere tells you about the browser rather than about your store.
  3. Audit the data behind the tools rather than the tools. Ask what search_catalog would return for your three best sellers, and whether the availability is accurate right now. That is the part you own.
  4. Do not assume order placement is open. Check what your platform actually permits at your access level before either worrying about it or building on it.
  5. If you are on a custom stack and considering implementing this, read the specification directly. Name, description, inputSchema and execute are the whole contract, and the API hangs off document rather than navigator.
  6. Keep the rest of the work. Tools change how an agent reaches your facts. They do nothing about whether your facts are right, and they make wrong facts travel faster.

The strategic read is simple enough. For two years the argument for agent readiness had to be made speculatively, because the agents could not do much when they arrived. A platform quietly enabling cart manipulation on every one of its storefronts, with nothing to install, is that argument arriving as a default. The businesses that will benefit are the ones whose underlying data was worth reaching.

Publish facts worth reaching, on any stack

Nexez publishes your business as agent-legible, agent-transactable listings from a single source: JSON-LD, llms.txt, agent.json, OpenAPI, a per-merchant MCP server, and ACP plus UCP feeds, with real Stripe checkout and Calendly-backed scheduling. If your platform hands agents a toolbox, this is what the tools return. Start on Free with no card; paid plans include a 7-day trial.

See how it works

Frequently asked questions

What is WebMCP?

A browser API that lets a web page register named tools an AI agent can call, instead of leaving the agent to interpret the interface. A tool declaration carries a name, a natural-language description, an optional JSON Schema for its inputs, and an execute callback returning a promise. The specification is a Draft Community Group Report from the Web Machine Learning Community Group.

Do I have to enable WebMCP on my Shopify store?

No. Shopify documents the tools as live on every Liquid storefront and on the Hydrogen developer preview, with nothing to install or configure. If you run a Liquid theme, an agent in a supporting browser can already search your catalog, read and update the cart and proceed to checkout.

Can an AI agent place an order on my Shopify store without me knowing?

Not through the browser tools. Those go as far as proceed_to_checkout. A separate Checkout MCP server does document a complete_checkout tool that submits payment and places the order, but it requires authentication or a signed request, and the documentation states that for general access the way checkout completes is by directing buyers to the checkout URL rather than calling complete_checkout.

Is it navigator.modelContext or document.modelContext?

document.modelContext. The specification is explicit that tools are reached through the document object rather than navigator, which is the more intuitive guess and appears in a lot of secondary writing. Code copied from a summary rather than the specification will register nothing and fail quietly.

Which browsers support this?

Agent support for WebMCP is documented as currently limited to Chromium-based browsers. That matters for testing: if you try an agent in a different engine and nothing happens, you have learned something about the browser rather than about your storefront.

Does WebMCP replace an MCP server?

It sits alongside one rather than replacing it. The contract is nearly the same, a named tool with a description and typed inputs, but WebMCP tools live in the page inside the shopper’s browser session, while a merchant MCP server runs separately and an agent connects to it. Different trust models and different reach.

If agents can call tools, does structured data still matter?

Yes, and arguably more. The tools return whatever you published: search_catalog returns your catalog, get_product returns your stock status, the policy tool answers from your policies. A tool is a dependable route to your data rather than an improvement to it, and a clean route means a wrong price now travels faster and with your name attached.

Keep reading