Skip to main content
Glama

analyze_game

Read-only

Run a full Stockfish analysis of a Lichess or Chess.com game to classify moves, measure accuracy and errors, and identify critical moments for coaching.

Instructions

Run a full engine analysis of one game and classify every move.

Returns evaluation before/after each move, centipawn loss, a label (best/good/inaccuracy/mistake/blunder), the engine's best move and line, per-player accuracy and error counts, and the five most critical moments with their FEN so you can explain why a move was bad. Results are cached, so repeat calls are instant.

Args: game_id: Game id or URL from Lichess or Chess.com (as returned by get_recent_games). platform: "lichess" or "chesscom". Guessed from the id when omitted. username: The player to coach. Required for Chess.com games that were not fetched via get_recent_games; otherwise optional (adds user_color/user_result). depth: Engine search depth (default 14; 18+ is slower but more precise).

Input Schema

NameRequiredDescriptionDefault
depthNo
game_idYes
platformNo
usernameNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Beyond readOnlyHint/openWorldHint, the description adds genuinely useful behavior: results are cached so repeat calls are instant, and depth 18+ is slower but more precise. It also discloses the Chess.com username precondition, a real failure mode. Nothing contradicts the annotations — this is a read-only external-fetch-and-analyze operation.

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?

Front-loaded with the outcome and the payoff ('explain why a move was bad'), followed by a clean Args block. The return-value enumeration partly duplicates the output schema, but it is tight and no sentence is filler.

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 four-parameter analysis tool with an output schema, the definition covers inputs, defaults, caching, and cost/latency tradeoffs. Minor omissions remain — no mention of what happens on an invalid or unsupported game id, and no relationship to engine_status despite engine availability being a likely precondition.

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

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden and does so: game_id accepts an id or URL from either platform, platform enumerates exactly 'lichess'/'chesscom' and is guessed when omitted, username's conditional requirement and its effect on user_color/user_result are stated, and depth's default of 14 with the 18+ tradeoff is given.

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 opens with a specific verb and scope: 'Run a full engine analysis of one game and classify every move', then enumerates the outputs (eval before/after, centipawn loss, labels, accuracy, critical moments). An agent can tell it apart from find_blunders by the 'every move' / 'five most critical moments' framing, though it never explicitly names the sibling it replaces.

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?

Usage context is concrete: game_id comes 'as returned by get_recent_games', username is required only for Chess.com games not fetched via that tool, and depth trades speed for precision. What is missing is explicit routing against siblings — nothing says when to prefer find_blunders or get_opening_stats over a full analysis.

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