how it works

One declaration, four consumers.

There is no clever part. The whole site rests on refusing to write the same thing twice.

The registry

Every capability this page has lives in one array in lib/tools.ts. Each entry carries a name, a description written for a reader with no eyes, a JSON schema for its arguments, and the function that does the work.

Four things read that array, and none of them is the original:

  1. The controls. The buttons and sliders are generated against those schemas. A slider knows its range because the schema says 0–100.
  2. WebMCP. The same array is handed to navigator.modelContext, so an agent in the browser gets a typed list rather than a page to interpret.
  3. The automaton. When the local model is asked to operate the cabinet, it calls the same functions.
  4. The manifest. The visible list at the bottom of the page is that array, drawn.

Everything routes through one function, call(name, args, caller). It validates arguments, runs the tool, and writes the result to the log. Who called is recorded and never branched on. A human click and an agent invocation take the identical path, which is the only reason the log can be trusted as a record of both.

The model

Chrome’s Prompt API reached stable in Chrome 148. It exposes a language model that runs on the visitor’s own device — no API key, no request to any server, no per-token cost, and no way for this page to see what you typed. The model was already on most machines before this site existed; Chrome distributed it quietly over the course of 2026.

There is deliberately no fallback engine. The argument here is that the model is already on your machine, and shipping a few hundred megabytes of a different model to browsers that lack the API would contradict that while making the page enormously heavier. Where the API is absent the site says so and the other five tools carry on working.

What the shading means

As the answer streams in, each chunk is shaded by how long it took to arrive, scaled against that answer’s own median so the reading calibrates itself. Darker means slower.

It is not confidence. Confidence would be the more interesting picture, and the browser does not expose token probabilities, so drawing it would mean inventing it. Arrival time is a real measurement taken on your machine, so that is what gets drawn. Hover any word to see its figure in milliseconds.

WebMCP

WebMCP is a proposed W3C standard that extends the Model Context Protocol into the browser. A page calls navigator.modelContext to declare its own tools; a browser-resident agent reads that declaration and calls them directly, instead of inferring intent from markup and hoping the selectors hold.

It is in public origin trial from Chrome 149 to Chrome 156, so most visitors will not have it, and the status bar says so plainly rather than showing a green light that means “probably”. The tools are real either way — the human half of the site is calling them constantly.

The interesting part is not the plumbing. It is that a website with a declared tool surface is a different kind of object from a website with a nice homepage, and almost nobody has started designing for the difference.

Who is the agent, then?

Because the trial has not landed, almost nobody visiting this page has a browser agent that could call its tools — which would leave the entire demonstration invisible. So the local model stands in.

The second box in the console hands your instruction to the model on your machine along with the exact manifest WebMCP would have published. The model picks one tool and its arguments; the site executes that choice and tags it agent, because a machine genuinely chose it. Nothing is scripted, and there is no list of canned responses — ask it for something impossible and watch it pick badly. That is logged too.

It is a substitution and it is named as one. A real WebMCP agent would arrive at the same call() by a different road.

The cabinet

Wolfgang von Kempelen built the Mechanical Turk in 1770 for the court of Maria Theresa. It played strong chess, toured for decades under several owners, and was destroyed by fire in Philadelphia in 1854. Before each game its operator swung the cabinet doors open in sequence so the audience could see the machinery and satisfy itself that no one was concealed inside.

Someone was. A chess player on a sliding seat, moving between compartments as each door opened — the demonstration of emptiness was itself the trick.

The drawing on the front page opens the same way. Open all three doors and the seat is there, marked UNOCCUPIED, because this time the claim survives inspection: pull your network connection out and the machine keeps answering.

Sources