Guides · WebMCP · Field Notes

A real session with the bugs left in

This is what actually happens when you call the Reg Z threshold calculator through WebMCP, the draft W3C API that lets a web page offer tools to AI agents. It does not work on the first try, and that is the point: this page is a complete session, every command, every error the browser throws, what each one means, and the cryptographic receipt at the end. Nothing cleaned up, because the debugging is the useful part.

WebMCP art-220 · Reg Z Threshold Lookup Deterministic · Hash-Receipted Draft W3C API
What happened, in order
  1. Fast path: run the working WebMCP demo first
  2. Launching Chrome with WebMCP enabled
  3. Opening DevTools and unlocking the console
  4. Error one: the API is not there at all
  5. Error two: the API moved
  6. Proving the fix with a probe tool
  7. The full call, and the receipt
  8. What changed on this site because of it

No prior experience with browser DevTools is assumed. Start with the working path below. The later sections preserve the original debugging record, including its two failures, so that a reader can identify and recover from the same problems. Every command is safe to paste repeatedly because it runs inside its own temporary scope.

Start here

Fast path: a successful WebMCP call

Use this section if you want to see WebMCP working before reading the debugging history. It takes about three minutes and uses only public, synthetic regulatory data.

Step 1

Launching Chrome with WebMCP enabled

Historical record: the launch command below is what the session actually ran in 2026, kept as it happened. On this site today the fast path above is the setup; the flag route remains what actually ran, for other sites and other Chrome versions.

Step 2

Opening DevTools and unlocking the console

Everything from here on happens in the browser's built-in developer console.

Step 3

Error one: the API is not there at all

Step 4

Error two: the API moved

Step 5

Proving the fix with a probe tool

Step 6

The full call and the receipt

Step 7

What changed on this site because of it

The session found a live defect: the page registered its tool only on the deprecated surface, so current Chrome visitors got no tool at all. The fix is the pattern this site now ships:

const mc = document.modelContext ?? (("modelContext" in navigator) ? navigator.modelContext : null); if (mc) { mc.registerTool({ /* same tool object */ }); }

Try it yourself

Everything above is reproducible in about two minutes: open the calculator in Chrome 149 through 156, and paste the snippet from step 6. The registration is already done for you by the page. Compare the tier values with the form's output and check the hash.

You do not need the flag on most pages: as of 2026-09-26 a first-party origin-trial token sits in a <meta http-equiv="origin-trial"> tag on 472 pages of this site and turns document.modelContext on in stock Chrome through version 156, while five pages that register a tool carry no token yet and still need the flag, among them the art-220 calculator used above. After the trial ends in November 2026, WebMCP either ships as a stable API and the meta tags keep working, or the token is removed and the pages stay byte-identical without it.

Dated observations

2026-09-24. The getter now lives on document.modelContext: the spec draft of 2026-07-21 moved it there, and Chrome 150 deprecates the navigator.modelContext alias, whose registrations quietly go nowhere. On chromestatus.com the origin trial covers Chrome 149 through 156 and Chrome 157 is the pencilled-in ship-by-default milestone; the trial itself ends 2026-11-16. An audit of this site on the same date found the migration already complete: of the 1,861 published pages scanned across the tools, guides, chains, ledger and index areas, exactly zero still call the deprecated alias directly. The only occurrences of navigator.modelContext anywhere are the sanctioned feature-detect fallback (prefer document.modelContext, fall back only where the getter still exists) and the history notes on this page. The origin-trial token currently served carries an expiry of 2026-11-17. Which way November goes is Chrome's decision first: if WebMCP ships in Chrome 157 the tokens stop mattering, and if the trial lapses without renewal the pages render byte-identical without the meta tags and the tools return when the API reaches stock Chrome.

Scope note for the chain composer pages: the three tools registered on every chain page under chaingraph/chains/ are plan, receipt and delegation tools rather than execution tools. plan_chain returns the page's chain definition artifact (the deterministic hash over the ordered steps and handoffs), assemble_session_receipt folds a list of already-produced execution hashes into one Merkle root, and apply_delegation_bundle validates a worker delegation bundle and returns the ordered deep links. No step of a chain computes an output on a composer page; live execution happens on each chain's runner page (chaingraph/runners/), and the composite over ran steps comes from the worker's run_chain. A plan hash and a run composite are different artifact classes by design, and the two are never conflated here.

The pattern here, one page serving humans through a form and agents through a tool with a shared receipt, is how every agent-callable calculator on this site works. For the whole tour in one place, Three doors into one kernel walks the registration, the deep link and the worker path, and runs one input sample through all three. WebMCP is a draft W3C specification; API names on this page reflect current Chrome behavior and may change again. Values shown are the pinned 2026 Reg Z table (FR 2025-22773); always verify at consumerfinance.gov before production compliance use.