An interactive explainer about WebMCP: seven kinds of website, one AI agent, and what each site does when software starts doing the visiting. A hand-drawn interactive experience where agents can call tools and visitors predict site reactions.
Seven Rooms demonstrates solid tool design with clear naming conventions (verb_noun pattern: handshake, describe_site, list_rooms, go_to_room, next_slide, read_article, get_summary, get_offer_details, complete_signup). All 9 tools have descriptions (avg ~120 chars, within 10-1024 range). Input schemas are present and properly typed with JSON Schema. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are minimal (most lack detail on format/constraints). Error handling is absent from visible code. The complete_signup tool has good enum constraints (plan, addons) but lacks guidance on failure modes. Tool composition is sound: each tool has one responsibility, and chaining is supported (e.g., go_to_room → next_slide). Security: no credentials exposed as parameters. Descriptions could be more LLM-optimized (e.g., 'Call this first' in handshake is good; others lack dependency hints).
Sign up on this page with exactly the values you pass. Nothing is pre-selected for you: pass the plan id you want and the add-ons you want, and an empty add-on list means none. Prices do not change with time.
Describe this page: what Seven Rooms is, which chapter and slide the visitor is on, and what this slide is waiting for before it will let them continue.
Return the real prices on this page: every plan and what it includes, every add-on and what it actually does, and whether the countdown timer is real. No arguments.
Return a short, one-sentence summary of the article on this page. No arguments.
Move the visitor to the door of one of the seven rooms (its first slide). It never skips ahead inside a room.
Confirm to this page that an AI agent is connected and can call its tools. Call this first. Returns what the site is and how to proceed.
Output schemas not documented. LLMs cannot predict response structure or plan downstream calls. Tools return strings (capped at 1500 chars) but no schema describes fields, types, or structure.
Parameter descriptions lack format/constraint details. E.g., 'number' in go_to_room has min/max in schema but no description text explaining the 1-7 range or what happens if out of bounds.
No error handling guidance. Tools return strings but do not document failure modes (e.g., what if go_to_room(8) is called? What if complete_signup fails?). LLMs have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
List the seven rooms: number, the kind of website it is, what that site wants from a visitor, and whether this visitor has already cast their prediction vote there.
Advance to the next slide, but only if the page has already unlocked its Next button. If it is still locked, this explains what the slide is waiting for instead of forcing it.
Return the full text of the article on this page, so you can read it without scrolling. No arguments.
Discovery tools (read_article, get_summary, get_offer_details) lack dependency hints. No guidance on when to call them or what to do with results.
Transport unknown. Package.json shows Vite + Wrangler (Cloudflare Workers), suggesting HTTP, but no explicit MCP transport declaration visible in source. Cannot verify Streamable HTTP or SSE support.