A one-player murder mystery where an AI agent runs the table through WebMCP and never learns who did it.
Sealed Case demonstrates strong naming conventions (verb-first, clear intent) and comprehensive parameter schemas with enums where appropriate. All 14 tools have descriptions exceeding 20 characters. However, parameter descriptions are sparse or missing entirely for most tools, only 'examine' and 'interview' have documented parameter intent. Output schemas are not documented anywhere in the source. Error handling is absent; tools do not guide recovery or explain failure modes. The server is well-designed for its narrative puzzle domain but lacks production-grade parameter documentation and error guidance expected in agent-facing tools.
Open the investigation. This unlocks searching the room and questioning the three suspects. Call it once the player has heard the case file.
Examine one object in the room and get exactly what a person standing there would see. What you get back is all there is; the page does not withhold detail from an object you have examined, and it does not have more to give if you examine it twice.
List the exact culprit, method and motive values an accusation must be built from. Call this before proposing one.
Check where the investigation stands: current phase, how many objects are still unexamined, how many questions the suspects will still answer, and whether an accusation is staged.
Ask one suspect about one topic. Their answer is written by the page, not by you — quote it, do not invent it. Questions are limited: the suspects stop answering after eight in total, so choose them well.
List the three people still in the building, with their stated movements tonight. Use the returned ids when interviewing or accusing.
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls or extract fields without trial-and-error. E.g., list_suspects, search_room, review_notebook lack field documentation.
Parameter descriptions missing or minimal. 12 of 14 tools have empty parameter descriptions (e.g., read_case_file, begin_investigation, search_room). Only 'examine' and 'interview' document parameter intent. LLMs cannot infer when to use parameters or what values are valid.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Put an accusation on the table: who, how, and why. This STAGES the accusation and raises a confirmation card in the page. It does not resolve anything. There is no tool that resolves it — the player must click Confirm themselves. Say out loud what you are staging and why before you call this.
Read the case file for tonight's death at the Lantern Room: what happened, who the victim was, and when the police arrive. Start here.
Read the closing account of what actually happened. Available only after the player has confirmed a correct accusation — before that, the page will refuse, and you have no other way to obtain it.
Go back to the investigation after a wrong accusation. The evidence already gathered is kept.
Start over from the beginning. The case file is re-read, the room is reset, and all evidence and testimony are cleared.
Read back everything gathered so far: physical evidence, testimony, what has not been examined yet, and how many questions remain.
List everything in the Lantern Room that can be looked at, and whether it has been examined yet. Use this to decide what to examine next.
Take a staged accusation back off the table, for instance if the player says they are not convinced.
No error handling or recovery guidance. Tools do not document failure modes (e.g., what happens if an invalid object_id is passed to examine, or if the player calls begin_investigation twice). Agents cannot self-correct or retry intelligently.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The Risk field in the spec (READ_ONLY vs WRITE) is not exposed in the MCP tool definition. Agents cannot distinguish safe tools from destructive ones without reading descriptions.
No pagination or result limits documented. Tools like list_suspects and search_room return lists but do not specify max result count or pagination strategy. For a narrative game this is acceptable, but production tools should cap results and offer pagination.