Experiment A demo, not a product. It depends on an on-device model that only recent desktop Chrome exposes, and on the v2 alpha API. Both may change without notice.
Try it

Ask about sending a parcel.

Everything below happens in this tab. The only network call is the tool call to /mcp on this same host - and you can watch it happen on the right.

Checking this browser…

Looking for Chrome's built-in Prompt API.

Conversation

Ask something like “what's the cheapest way to send 2 kg from GB to Germany?”

Live MCP traffic · POST /mcp

How it works

Four moving parts, no backend.

There is no server-side agent here. The page is static; the model is Chrome's; the tool is ours.

  1. Chrome's Prompt API provides the modelGemini Nano runs on your device. The page calls LanguageModel.create() and passes it a tool definition - name, description and JSON-Schema arguments.
  2. The model decides to call the toolChrome invokes the tool's execute() callback itself when the model asks for it. That callback is our MCP bridge.
  3. The bridge speaks MCP to this hostA ~180-line client does initializetools/call against /mcp over Streamable HTTP, same-origin. No SDK, no bundler.
  4. Live prices come backget_quotes runs the real quoting pipeline - the same one behind POST /v2/quotes and our own checkout - and the model writes the answer from the numbers it got.
The contract

The tool, as the server advertises it.

Fetched live from tools/list when this page loaded - not copied into the page. This is exactly what the model is given, and what any MCP client sees.

Loading tool definition from /mcp…

Point your own client at https://api.parcel2go.com/mcp - it needs no credentials. Full REST contract: OpenAPI 3 spec →