Skip to main content
Glama

Escape Room MCP

Python 3.11+ MCP Python SDK License: MIT

An MCP server that turns any LLM into an escape room player.

The model wakes up inside The Clockmaker's Study. It can only perceive and change the room through MCP tools, while the server owns the authoritative game state, puzzle progression, inventory, timer, and score.

Demo

A model playing The Clockmaker's Study through MCP tools

The visual is adapted from deterministic responses from the server. A Claude Desktop recording can be dropped into assets/demo.gif and linked here without changing the game.

Related MCP server: mcp-llm

Why this exists

  • Demonstrate an agent discovering information, chaining tools, making mistakes, and recovering.

  • Provide a compact benchmark based on tool calls, elapsed time, hints, and final score.

  • Show why authoritative state belongs in the environment rather than in a model's conversational memory.

  • Offer a complete stateful MCP example without APIs, credentials, databases, or deployment infrastructure.

How it plays

The room contains a locked door, a silent grandfather clock, a bookshelf, a portrait, a desk, a bricked-up window, and a suspiciously ordinary rug. The player explores, inspects details, manipulates discovered items, and tries to open the door.

The server instructions and tool descriptions contain no solution. A capable model can discover the intended puzzle chain using only the returned narrative, and an observant model may find a legitimate shortcut.

Setup

Requirements

  • Python 3.11 or newer

  • uv

  • An MCP host such as Claude Desktop, Claude Code, or MCP Inspector

Install the locked environment from the project directory:

uv sync --frozen

Claude Desktop

Open claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Add the server, replacing the directory with an absolute path:

{
  "mcpServers": {
    "escape-room": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/escape-room-mcp",
        "run",
        "escape-room-mcp"
      ]
    }
  }
}

On Windows, use either forward slashes or escaped backslashes in the JSON path. If Claude Desktop does not inherit your shell's PATH, set command to the absolute path returned by where.exe uv.

Quit and restart Claude Desktop after changing the configuration. Then ask it:

Play the escape room. Do not ask me for help unless you run out of hints.

MCP Inspector

Launch the server directly in the Inspector UI:

npx -y @modelcontextprotocol/inspector uv --directory /absolute/path/to/escape-room-mcp run escape-room-mcp

The server uses stdio, so running uv run escape-room-mcp by itself correctly waits for an MCP client and does not print ordinary application output to stdout.

Tools

Tool

Purpose

start_game

Create an isolated session and enter the room

look_around

Survey currently visible room features

inspect

Examine one object in detail

pick_up

Try to take or pull a discovered item

inventory

Review currently held items

use

Use an inventory item on a room object

enter_code

Try a four-digit string on the door keypad

hint

Request one of at most three state-aware hints

status

Check time, calls, hints, and current score

restart

Reset one session without creating a new ID

Object and item names accept deterministic aliases such as clock for grandfather clock. Failed in-world actions return narrative results instead of protocol failures, allowing the model to reason and recover.

Scoring

Each game starts at 1,000 points.

Event

Score effect

Action call (inspect, pick_up, use, enter_code, inventory)

-10

Hint delivered

-100

Each whole minute below 15 at escape

+5, up to +75

Failed action attempts still cost 10 points. look_around, status, and hint do not carry the action penalty, but every valid tool invocation counts toward the final tool-call total.

Tool calls

Title

10 or fewer

Master Escapist

11 to 20

Clever Detective

More than 20

Persistent Survivor

Benchmark

Run each model in a fresh conversation with no room spoilers. Give every model the same prompt, permit autonomous tool use, and copy the metrics from the victory response. Record the exact model version and client because tool selection behavior can differ between hosts.

Model

Client

Tool calls

Time

Hints

Score

Claude

Claude Desktop

TBD

TBD

TBD

TBD

GPT

MCP-capable client

TBD

TBD

TBD

TBD

Gemini

MCP-capable client

TBD

TBD

TBD

TBD

Suggested benchmark prompt:

You are the player. Escape the room autonomously using only the available tools. Report the final result.

Architecture

MCP host
   |  stdio / MCP
   v
FastMCP tool adapter
   |
   v
GameManager
   +-- session A: stage, inventory, metrics, timer
   +-- session B: stage, inventory, metrics, timer
   +-- session C: stage, inventory, metrics, timer

The model does not own puzzle state. After start_game, every subsequent call includes an opaque session_id, and GameManager resolves that ID to an in-memory session under a lock. This prevents conversational omissions, retries, or hallucinated inventory from changing reality. It also allows multiple isolated games in one server process.

The tradeoff is intentional: sessions disappear when the local server process exits. There is no persistence, expiry policy, analytics service, network transport, or embedded LLM in v1.

Development

uv sync --all-groups
uv run ruff format --check .
uv run ruff check .
uv run pytest --cov=escape_room_mcp --cov-report=term-missing --cov-fail-under=95
uv build

The tests cover the intended chain, direct shortcut, error recovery, aliases, scoring boundaries, hint states, session isolation, protocol schemas, in-memory MCP calls, and a packaged stdio subprocess.

License

MIT

Available Tools

10 tools
enter_codeEnter Door CodeC

Enter a candidate four-digit code on the locked door's keypad.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode to try on the door keypad, supplied as a string so leading zeroes are preserved.
session_idYesSession ID returned by start_game.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation (readOnlyHint=false), description does not add any behavioral details like feedback on wrong code, rate limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, but could include more context without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and simple parameters, description is mostly complete but misses context about game state or constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already fully describes both parameters; description does not add extra semantics beyond restating the code format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Enter' and specific resource 'candidate four-digit code on the locked door's keypad' distinguishes from siblings like status or look_around. Not perfectly differentiated but adequate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus others, no prerequisites or conditions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hintRequest HintA

Request a state-aware hint; at most three hints are available per game.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_game.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: state-awareness and three-per-game limit. Annotations already indicate non-idempotent, non-read-only; description adds useful constraints without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence with no filler; all words carry meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers purpose and constraint adequately. Could mention expected return type slightly, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (session_id) with 100% schema description coverage. Description adds no extra parameter info beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Request' and resource 'state-aware hint' with a specific constraint (max three), distinguishing it from sibling tools like look_around or use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use hint versus other tools; 'state-aware' implies but does not specify conditions. No alternatives or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspectInspect Room ObjectA

Examine one visible room object in greater detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesName or reasonable synonym for a visible room object.
session_idYesSession ID returned by start_game.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations set readOnlyHint to false, implying potential side effects, but the description portrays the tool as a simple examination without clarifying any behavioral traits. It fails to explain what happens during inspection (e.g., state changes, action consumption) or address the contradiction with readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, directly stating the tool's purpose. It is appropriately front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple inspection tool, the description is minimal but functional. However, with no output schema, it provides no information about what 'greater detail' means (e.g., format, content) leaving the agent to guess. Some additional context on return value would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond the schema; it does not clarify acceptable synonyms for 'target' or session ID handling. Baseline 3 is appropriate due to full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Examine one visible room object in greater detail' clearly identifies the action (examine), the resource (visible room object), and distinguishes from sibling tools like look_around which likely provide a broader view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests usage when a player wants more detail on a specific object, but it does not explicitly state when to use this versus sibling tools (e.g., look_around) nor provide exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inventoryCheck InventoryA

Review the items you are currently carrying.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_game.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With all annotations false, the description implies a safe read operation ('review'). It does not disclose side effects, but for an inventory check, no further disclosure is necessary. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded verb, no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple inventory tool with one parameter and no output schema, the description is complete enough. Could optionally hint at output format, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (session_id described). The description adds no extra parameter meaning beyond the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'review' with the resource 'items you are currently carrying,' clearly specifying the action and object. It distinguishes itself from siblings like 'look_around' (environment) and 'inspect' (specific item).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives are given, but the purpose is self-contained; the agent can infer usage from context. Lacks explicit guidance on when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

look_aroundLook AroundB

Survey the room and its currently visible features.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_game.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no safety hints. The description does not disclose if the tool is read-only, changes state, or has any side effects. For a simple survey, this might be acceptable but still lacks transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy. Front-loaded with the action verb 'Survey'. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description adequately conveys purpose. However, missing behavioral details slightly reduce completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with 'session_id' described as 'Session ID returned by start_game'. The description adds no additional parameter context, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool surveys the room and its visible features. It distinguishes from sibling 'inspect' which likely targets specific objects, but this differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'inspect' or 'status'. No prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pick_upPick Up ItemA

Try to take or pull an item you have discovered in the room.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesName or reasonable synonym for an item in the room or inventory.
session_idYesSession ID returned by start_game.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so description carries burden. It says 'try' indicating possible failure but does not detail what happens on success/failure or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, clear sentence. Front-loaded with action and necessary context. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with full schema parameter descriptions, the description completes the picture. Lacks edge-case handling but adequate for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. Description adds that the item must be 'discovered in the room', refining the parameter meaning beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'take or pull an item you have discovered in the room.' It specifies the resource (item) and distinguishes from sibling tools like inspect or use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when a discovered item is present in the room. Does not explicitly list when not to use or provide alternatives, but context suggests it's for obtaining items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restartRestart Escape RoomA
Destructive

Discard progress and restart this session from the beginning.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_game.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description adds 'Discard progress', reinforcing the destructive nature. It provides useful context about losing progress, going beyond the annotation flag alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that is front-loaded with the key action 'Discard'. Every word earns its place, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, no output schema, annotations cover behaviors), the description is complete enough. The context of sibling tools provides further clarity on when restart is used.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add additional meaning for the session_id parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it discards progress and restarts the session. Verb 'restart' and resource 'session' are explicit, and it distinguishes from siblings like start_game (creates new session) and status (checks state).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use when you want to reset the current session. However, there is no explicit guidance on when not to use it or clear alternatives. The sibling tools suggest context, but the description does not provide direct usage recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_gameStart Escape RoomA

Start a fresh escape-room session and receive its session ID and introduction.

ParametersJSON Schema
NameRequiredDescriptionDefault
player_nameNoName to use for the player in this session.Agent

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false (no hints), so description carries burden. It states the tool creates a new session, which implies mutation, but does not disclose side effects (e.g., if starting a new session ends an existing one). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the main action and output. No unnecessary words; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description adequately covers the return value (session ID and introduction). No gaps given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'player_name' with a clear description. The tool description adds no additional parameter information beyond the schema, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts a fresh escape-room session and returns a session ID and introduction. It uses a specific verb ('Start') and resource ('escape-room session'), and distinguishes from siblings like 'restart' and other game interaction tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when beginning a new session, but does not explicitly state when not to use it or compare to alternatives like 'restart' (which resumes or restarts an existing session). No guidance on prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusCheck Game StatusA

Check elapsed time, tool calls, hints used, and current score.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_game.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false and provide no guidance. The description clarifies it is a read-only query of game state, though it does not explicitly state lack of side effects. It adds value beyond annotations by listing what is checked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with key details. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple with one parameter, the description sufficiently covers what the tool does and what it returns (elapsed time, tool calls, hints, score). No output schema is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add extra information about the session_id parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks elapsed time, tool calls, hints used, and current score. This is a specific verb + resource, and it distinguishes from sibling tools like look_around or inventory which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking game progress, but does not explicitly provide 'when to use' vs alternatives or any exclusion criteria. Since the purpose is straightforward, it still gives clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

useUse ItemB

Use an item from your inventory on a room object.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesName or reasonable synonym for an item in the room or inventory.
targetYesName or reasonable synonym for a visible room object.
session_idYesSession ID returned by start_game.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds no behavioral context beyond that. It does not disclose potential side effects like item consumption, state changes, or failure conditions, relying entirely on annotations which are incomplete for a game action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, straightforward sentence with no extraneous information. Every word is necessary and earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a potentially complex action (using an inventory item on a room object), the description lacks crucial details such as prerequisites (item in inventory, target visible), outcomes (success/failure), and side effects (item consumption). With no output schema, more explanation is needed for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all three parameters (session_id, item, target). The description adds no additional semantic value; baseline score of 3 applies since the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'use', the resource 'item from your inventory', and the target 'room object'. It effectively distinguishes from sibling tools like 'pick_up' (taking items) and 'inspect' (examining objects).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs. alternatives. The description implies usage when combining an item with a room object, but does not mention prerequisites, exclusions, or alternative tools for scenarios like examining ('inspect') or moving items ('pick_up').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedenter_code
    • First observedhint
    • First observedinspect
    • First observedinventory
    • First observedlook_around
    • First observedpick_up
    • First observedrestart
    • First observedstart_game
    • First observedstatus
    • First observeduse

TDQS

A3.8/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a unique and well-defined purpose, from starting the game to interacting with objects and requesting hints, with no overlap between them.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., start_game, enter_code), but a few like inventory, status, and hint are nouns, creating slight inconsistency while remaining understandable.

Tool Count5/5

With 10 tools, the set is well-scoped for an escape room game, covering essential actions without being too many or too few.

Completeness5/5

The tool surface covers all major escape room interactions: starting, exploring, collecting, using items, entering codes, getting hints, and checking status, with no obvious gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers