WebMCP Check. Does your page hand AI agents any tools?
Enter any URL. We load it in a real Chrome with a recorder in place of the WebMCP API, probe the manifest and the agent contact page, and list every tool the page exposes: name, what it does, what it accepts, and whether it reads or acts. No score. A page either hands agents tools, shows signs of trying, or does neither.
Loaded the way a browser loads, recorded the way an engineer records.
- Fetch. The raw HTML, as a desktop Chrome would request it. We look for the Viz registration script (which inlines its whole tool list), declarative form tools, the head link to /ai-contact/, and any script that mentions the API.
- Render. One load in a real Chrome. Before any page script runs we install a recording shim at document.modelContext and navigator.modelContext. Every registerTool and provideContext call is captured with its name, description and input schema. Nothing is executed.
- Probe. Two light requests on the same site: the Viz manifest at /wp-json/vizwp/v1/mcp, which also tells us when the plugin is installed but switched off, and /ai-contact/, the agent contact page. If nothing stronger turned up, up to six same-origin scripts are read for API mentions.
- Verdict. Found when Chrome recorded a registration or a complete declarative form exists. Signals when the page mentions or advertises WebMCP but no tool reached the browser. None otherwise. A live registration outranks a manifest, which outranks a form, which outranks a code mention.
Fair questions.
What is WebMCP?
An open web standard, worked on by Google and Microsoft in a W3C community group and adopted since August 2026 by OpenAI's ChatGPT desktop browser, Codex and Chrome (origin trial from 149), that lets a page hand the AI agent in a visitor's browser a small set of tools to call instead of guessing at buttons. A page registers each tool with a name, a description and an input schema through document.modelContext, or marks a form up with toolname and tooldescription attributes. It is early, and we say so: the browsers that use it are still arriving.
What exactly does the check do?
Four things. It fetches the raw HTML and looks for the Viz registration script, declarative form tools and code that mentions the API. It loads the page once in a real Chrome with a recording shim standing in for document.modelContext and navigator.modelContext, so every registerTool or provideContext call the page makes is captured, and none is executed. It probes the Viz manifest at /wp-json/vizwp/v1/mcp and the /ai-contact/ page on the same site. Then it merges what it saw into one tool list and a verdict: found, signals, or none.
My site runs Viz but the check says none or signals. Why?
Four usual causes. A full-page cache served a copy made before WebMCP was switched on: purge it. A Content Security Policy blocks inline scripts without a nonce, so the registration script never runs: the check shows the page error when that happens. You checked while logged in as an editor: Viz does not print the script for editors, and neither does this check see it if the page is personalised. Or the tools are switched off, or the site is not connected: the manifest endpoint answers with an empty tool list in that case, and the check says so.
Can this run the tools?
No. The check records registrations and never calls execute. Nothing is submitted, nothing is added to a cart, no message is sent. Even in a real browser the agent never checks out; the visitor does.
Chrome shows tools on my page, but the check does not. Why?
We load the page from our servers with a desktop Chrome user agent, logged out, once. A site that gates by cookie, login or location, a bot challenge that stops a headless browser, or a CDN that strips or rewrites scripts for unknown visitors can all show us less than a real browser sees. The report says when the browser load did not complete, and the same page checked from your own browser is the tie-breaker.
What do Reads and Acts mean?
A tool registered with the readOnlyHint annotation changes nothing when called, so it is marked Reads. A tool without that hint, or a declarative form (which submits), is marked Acts: the browser asks the visitor before it runs. Unknown means the page registered the tool without saying either way.
What is a declarative tool?
A normal HTML form with toolname and tooldescription attributes on it, and toolparamdescription on its fields. The browser builds the input schema from the fields and registers the form as a tool. It is a draft part of the standard, so the check lists these forms separately as Form tools and shows its own reading of the fields.
Is it really free?
Yes. Three checks a day, no account. Results are cached for ten minutes so re-running the same page does not spend a check.
Viz registers them on every page and keeps them verified.
This check reads one page from the outside, once. Viz generates the tools from your business profile, contact form and catalog: describe_business and contact_business on every page, and the search, browse, product, cart and coupon tools on WooCommerce. It registers them on every page, verifies them on your live homepage, and logs every call an agent makes next to the leads and purchases that follow.
The agent never checks out; the visitor does. WebMCP is early, and we say so: the channel is real, small, and growing from a baseline you can watch in your own dashboard. Agent tools are free on every plan.
- crawled
- cited
- visited
- converted
The check says what agents can call. Viz makes it true on every page.
AI already reads your site. Viz sees which bots, wins the answers, credits the customers AI sends, and hands the agents among them tools to act.