This page runs a language model on your own machine - Chrome's built-in Gemini Nano - and hands it the Parcel2Go public API's get_quotes MCP tool. Ask a shipping question in plain English; the model decides to call the tool, and the prices come back from the same live engine that powers our checkout.
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
There is no server-side agent here. The page is static; the model is Chrome's; the tool is ours.
LanguageModel.create() and passes it a tool definition - name, description and JSON-Schema arguments.execute() callback itself when the model asks for it. That callback is our MCP bridge.initialize → tools/call against /mcp over Streamable HTTP, same-origin. No SDK, no bundler.get_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.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 →
No on-device model here - but the quoting engine is a plain REST endpoint too. This calls it directly, no AI involved.
Pick a lane and weight, then press Get quotes.