Koko (ここ, "here") is a live, shared map itinerary with no edit UI. The page registers its capabilities as WebMCP tools, and the only way to change the plan is to talk to the agent in your browser — while looking at the same map the agent is changing.

Why WebMCP, not a remote MCP server? I designed a remote-MCP version of this app in August. It collapsed the moment I realized my family would have to complete an OAuth flow to let their agents in. WebMCP inverts that: sharing a URL is granting permissions to someone's AI. The edit URL and the view URL serve the same document, but register different tool sets — 12 tools on the edit page, 8 read-only tools on the view page. A viewer's agent doesn't get its write calls rejected; the write tools don't exist in its world. The server enforces the same split on PUT, and a rotate_share_links tool revokes a leaked view link.

Because the tools live in the page, the agent shares the user's context: get_current_view makes "add a lunch option around here" work, search_places biases to the visible map, and get_travel_time draws the route it just computed and compares it against the travel slot you planned. The itinerary stores decisions — stops, stay times, reserved travel slots with route notes, a wishlist — while live facts (current drive time, what's next, how late we're running) are computed on demand, so the plan never goes stale. Every tool call pans the map, opens a popup and appends to an on-page activity log: the UI is the confirmation.

Try it: the live URL creates your own shiori (edit + view link pair) from a sample 3-day road trip. Open the view link in a second window and watch your agent's permissions change.

Built on Cloudflare Workers + Hono + Leaflet: one Worker, one KV namespace, a Durable Object for atomic saves, valibot validation on every agent input, CSP with per-request nonces, 209 tests. MIT.

Built With

Share this project:

Updates