Skip to content

WebMCP: What Happened When We Made Our Own Website Work With AI Agents

What WebMCP is, what it took to make pacific54.com bookable by AI agents, and what we learned that the documentation doesn't tell you.

Avi CohenAvi Cohen
··9 min read
Before-and-after slider with a robot agent as the handle: scattered website information on the left, organized into services, booking, and contact cards on the right
Key takeaways
  • WebMCP is a proposed web standard, backed by Google and Microsoft, that lets a website declare its capabilities as named, typed tools an AI agent can call directly instead of guessing its way through the page.
  • We implemented it on our own site in a day: our booking calendar, services, and case studies are now callable tools, verified live in Chrome's origin trial.
  • The build surprised us twice: our anti-spam honeypot would have silently eaten any agent's form submission, and our custom dropdown was invisible to automation. Tools solve both without weakening either.
  • There is almost no agent traffic today, and anyone selling WebMCP as a traffic lever is early by at least a product cycle. The reason to care now is that the prerequisites take a day and the standard is arriving through Chrome, not through a vendor.

WebMCP is a proposed web standard that lets a website declare its capabilities as tools an AI agent can call directly, instead of guessing its way through the page. Google announced it with an origin trial in Chrome, the industry immediately produced a wave of commentary, and most of it was written by people who had not implemented it. So we implemented it — on our own site, before recommending it to anyone else. This is what we learned, including the parts the documentation doesn’t mention.

The problem it solves

When an AI agent uses a website today, it does what Google calls actuation: it reads the page and simulates a human — moving a cursor, clicking buttons, typing into fields. This works about as well as you would expect. Every custom widget is a puzzle, every layout change breaks yesterday’s solution, and the agent can never be quite sure the thing it clicked did the thing it wanted.

WebMCP replaces guessing with declaring. A page registers named tools — book_appointment, filter_results, get_services — each with a typed schema saying exactly what inputs it takes. An agent working in that browser discovers the tools, calls them with structured data, and gets structured answers back. The site stops being a picture an agent squints at and becomes an interface it can use.

What we actually built

Our site now registers four tools. Every page carries two read-only ones: get_services and get_case_studies, which return what we do and what we’ve done, generated at build time from the same content that renders the pages — so they can never drift from what a human visitor sees. The booking page adds get_available_call_times, which serves our live calendar, and book_discovery_call, which wraps our real scheduling flow.

The whole build took about a day, and none of it changed anything for human visitors. Browsers without the API pay no cost at all. That ratio — one day, zero disruption — is worth knowing, because it means the sensible question isn’t whether this is worth a big project. It isn’t a big project.

The two things that surprised us

The audit before the build taught us more than the build itself.

Our spam trap would have eaten every agent submission. Like most sites, our booking form contains a honeypot: a field humans never see, which anything automated tends to fill in. Submissions that touch it are silently discarded. That is exactly correct behavior against spam bots — and exactly wrong against a legitimate prospect’s agent trying to book a call on their behalf. The uncomfortable part is the silence: the agent believes it booked, the visitor believes they booked, and nothing happened. WebMCP resolves the conflict cleanly. The tool is the defined door for legitimate automation; the trap stays armed for everything that comes in through the wall.

Our topic dropdown was invisible. Our form’s “what is this call about?” picker is a custom-built dropdown — better-looking and more accessible for humans than a native one, and completely opaque to automation, since its value lives in a hidden field no agent could reliably set. The fix we settled on is one we’d now recommend as a pattern: the booking tool reads its list of valid topics out of the real form at page load and publishes them as constraints in its schema. One source of truth; the human interface and the agent interface cannot drift apart.

The rule we’d urge anyone to copy

Booking a call sends emails and writes to calendars, which makes it what the standard politely calls a sensitive action. Google’s guidance is that these should require user interaction, and we’d put it more strongly: an agent should never be able to complete a consequential action silently. On our site, book_discovery_call assembles everything, then stops and asks the actual human — a confirmation dialog naming the time, the name, and the email about to be sent. The agent does the typing. The person still decides.

If WebMCP adoption goes wrong anywhere, it will be sites skipping this step for conversion’s sake. Don’t.

What this doesn’t do, stated plainly

There is almost no agent traffic today. The API sits behind an origin trial; mainstream consumer agents that call WebMCP tools are not yet shipping; nobody’s analytics show a meaningful “AI agent” segment. Implementing WebMCP this quarter will not move your numbers this quarter, and anyone selling it as a traffic lever is early by at least a product cycle.

It also isn’t AI search optimization. Whether AI Overviews or ChatGPT cite you is decided by retrieval and trust — the fundamentals we covered in our guide to generative engine optimization and in how AI Overviews choose the sources they cite — not by tools on your pages. WebMCP is about the visit after the citation: when software arrives to do something. (For the prior question of how models learn who you are at all, see LLM SEO.)

So why build now? Because the standard is arriving through the browser itself, not through a vendor you can evaluate later; because the build is a day, not a quarter; and because the audit that precedes it — can an agent actually complete your most valuable action? — finds problems worth fixing regardless, as our honeypot proved.

If you run a website, in order

Now: make sure the fundamentals hold — semantic markup, structured data, and a hard look at whether your critical form is silently hostile to automation. Add an llms.txt file; it costs an hour and serves today’s AI systems, not tomorrow’s.

Soon: if your business runs on a bookable, orderable, or quotable action, plan the WebMCP version of that action — one tool, with a confirmation step — so you’re implementing from a plan when agent traffic becomes real rather than reacting to it.

Watch for: WebMCP graduating from origin trial to stable Chrome, and the first consumer agents that call site tools. Either event is the signal to ship.

Epilogue: a real assistant tested us the next day

The day after this shipped, we asked a popular AI assistant a simple question: can you book a meeting on pacific54.com? It answered confidently that our booking calendar was broken, and quoted our own error message as proof.

The calendar was fine. That assistant reads pages from a server without running JavaScript, and our scheduler’s HTML — like most JavaScript apps — ships with every state present in the markup, including a hidden “couldn’t load” fallback that only ever displays if something actually fails. The assistant’s text extractor read the hidden panel and reported it as the live page. A visitor in a browser saw a working calendar; a machine reading the raw HTML saw a failure that never happened.

The fix took twenty minutes and is worth copying. We reworded the fallback so it reads as conditional rather than declarative — “if times don’t load” instead of “we could not load” — and we published the availability itself as plain JSON at a stable URL, pointed to from our llms.txt and from a noscript note on the booking page, with the booking link included in the data so an assistant can hand its user somewhere to go.

Then we asked the same assistant again. This time it listed our real open slots, day by day, confirmed the calendar integration was healthy, and added — accurately — that completing the booking itself would need an agentic browser session it didn’t have. Which is the entire thesis of this post in one anecdote: assistants that read need your data published where reading works. Agents that act need tools. We now serve both, and the difference between “your site is broken” and “here are their open Thursday slots” was one day of making the machine-readable path exist.

Postscript: our own tools went dark and nothing told us

A week after publishing, we checked our own implementation on current Chrome and found it registering nothing at all. No error, no warning, no failed request. The tools had simply stopped existing.

Two things had happened, and both are worth knowing before you build this.

Chrome moved the API and we did not notice. Registration lives on document.modelContext now. It used to be navigator.modelContext, which survived for a while as an alias and then went away. Our code checked the old name, found nothing, and did what it was written to do: nothing, quietly, because a browser without WebMCP is supposed to cost the visitor nothing. That is the right behavior for an unsupported browser and precisely the wrong behavior for a renamed one, and the two are indistinguishable from the outside. Our booking tools were absent from every current-Chrome session for days and every check we had said the site was healthy.

The lesson is not “read the changelog.” It is that a silent feature detect is a bad place to be wrong. If you ship WebMCP, verify registration the way you would verify a payment webhook: check that the tools are actually there, on the actual browser, on a schedule. await document.modelContext.getTools() in a console takes five seconds and is the only thing that would have caught this.

Most agents cannot see your tools yet, even when everything works. While the API is in origin trial, it is gated per origin by a token the site serves. Chrome’s extension documentation is explicit that origin trials for web features are not active inside a content script, which is where browser-extension agents run. So an extension-based assistant on your site will find no tools and can reasonably conclude you registered none, while a console on the same page in the same browser lists them all. One told us exactly that this week. It was testing the old property name, on a surface where the new one would have been invisible to it anyway, and it was wrong about our site for two independent reasons at once.

This narrows the real audience for WebMCP tools during the trial more than the announcements suggest. Your tools are reachable by the browser’s own agent surfaces, and not by the extension-based assistants most people actually have installed. That is a temporary condition and it will lift when the API ships in stable Chrome. It is also the honest answer to “who can call this today,” and it is a shorter list than it looks.

Neither of these is a reason not to build it. The prerequisites we described above (published availability, an agent-safe path through the spam trap, one source of truth for form options) paid for themselves regardless of who calls the tools. But they are the difference between believing you shipped agent support and having shipped it.

We’ll keep publishing what we learn from ours as real agents start arriving. And if you’d rather someone who has already done this looked at your site, that is literally our job.

Prompt

Audit your own site for agent readiness

Paste this into an AI assistant that can browse, pointed at your site. The answers map to the same checks we ran on ours.

Visit [YOUR WEBSITE URL] and assess how well an AI agent could operate it. Answer honestly:

1. What is the single most important action a visitor can take on this site (book, buy, quote, contact)?
2. Walk through completing that action. Where would an automated agent get stuck — custom dropdowns, hidden fields, multi-step widgets, CAPTCHAs?
3. Are there hidden anti-spam fields (honeypots) that an agent filling every field would trigger?
4. Does the site expose anything machine-readable on purpose: structured data (JSON-LD), an llms.txt file, or WebMCP tools (document.modelContext)?
5. If you had to summarize what this business does using only what a machine can reliably parse, what would you get wrong or miss?

List the three cheapest fixes first.

Paste into Claude, ChatGPT, Gemini, or any assistant. Check the output against your own data before acting on it.

Frequently asked questions

What is WebMCP?

WebMCP is a proposed web standard that lets a website register its capabilities as tools that AI agents can discover and call in the browser. Instead of an agent reading your page and simulating clicks and keystrokes, the site says directly: here is a booking tool, here are its required fields, here is what it returns. It is being developed in Chrome, with an origin trial open since Chrome 149.

Is WebMCP the same as MCP?

They are related but not the same. MCP (Model Context Protocol) is a general standard for connecting AI models to tools and data, typically used server-side. WebMCP brings the same idea into the web page itself: the browser exposes document.modelContext, the page registers tools, and agents operating in that browser can call them. If MCP connects assistants to systems, WebMCP connects them to websites.

Do I need WebMCP for AI search visibility?

No. AI Overviews, ChatGPT search, and similar systems cite content they retrieve and trust, which is a function of search fundamentals, not WebMCP. WebMCP matters for a different future: agents that act on a visitor's behalf — booking, ordering, filling forms. If your site depends on visitors completing an action, WebMCP is how that action stays reliable when software is doing the clicking.

Can agents book appointments on a WebMCP site without permission?

Not on a well-built one. The standard anticipates this: sensitive actions should require explicit user confirmation before anything is sent. On our site, an agent can assemble a booking, but the actual submission waits for the human visitor to approve a confirmation dialog naming the time, name, and email involved. The agent does the typing; the person still decides.

How do I know if my website is ready for AI agents?

Three checks cover most of it. First, can an agent understand your pages — semantic HTML, structured data, accurate metadata? Second, can an agent complete your key action without tripping over custom widgets or hidden anti-spam fields? Third, do you expose anything machine-readable on purpose — an llms.txt file, structured data, or WebMCP tools? Most sites pass the first check, stumble on the second, and have never considered the third.

Avi Cohen
About the author
Avi Cohen · SEO & Digital Analytics

Runs SEO and analytics across Pacific54’s client roster: the audits, the clusters, and the dashboards that keep everyone honest.