Advanced chess analysis using Stockfish engine via UCI (Universal Chess Interface). Analyzes positions, finds best moves, evaluates positions. Returns structured results.
Single tool (chess_engine) with comprehensive description and detailed UCI command reference. Input schema present with two parameters. However, output schema is completely undocumented, critical gap for a tool that returns analysis results. Parameter descriptions are present but could be more structured. The description is extensive (1200+ chars) but reads more like a manual than an LLM-optimized docstring. No error handling guidance, no schema for response structure, and no examples of actual output format.
Advanced chess analysis using Stockfish engine via UCI (Universal Chess Interface). Analyzes positions, finds best moves, evaluates positions. Returns structured results. MOVE NOTATION: Use algebraic notation (e2e4, g1f3, e1g1 for castling, e7e8q for promotion) EVALUATION: Centipawns (100 = 1 pawn), positive = White advantage, negative = Black advantage ═══ UCI COMMAND REFERENCE ═══ ENGINE CONTROL: ┌─ uci → Initialize engine, get info & options ├─ isready → Check if engine ready for commands ├─ quit → Shutdown engine └─ stop → Stop current analysis immediately POSITION SETUP: ┌─ position startpos → Initial chess position ├─ position startpos moves e2e4 e7e5 → Initial + move sequence ├─ position fen [FEN] → Custom position from FEN └─ position fen [FEN] moves [MOVES] → Custom FEN + additional moves ANALYSIS COMMANDS: ┌─ go depth [N] → Analyze N plies deep (typical: 15-25) ├─ go movetime [MS] → Analyze for N milliseconds (typical: 3000-10000) ├─ go infinite → Analyze until stopped (use 'stop' to end) ├─ go wtime [MS] btime [MS] → Analysis with time controls └─ go nodes [N] → Analyze exactly N nodes ENGINE OPTIONS (setoption name [NAME] value [VALUE]): ┌─ Hash [1-32768] → Memory in MB (default: 16) ├─ Threads [1-128] → CPU threads (default: 1) ├─ MultiPV [1-500] → Show N best lines (default: 1) ├─ Skill Level [0-20] → Engine strength (20=strongest) ├─ Move Overhead [0-5000] → Time buffer in ms ├─ Slow Mover [10-1000] → Time usage factor └─ Contempt [-100-100] → Draw tendency TYPICAL WORKFLOWS: 1. Quick analysis: "position startpos moves e2e4" → "go movetime 3000" 2. Deep analysis: "position startpos" → "go depth 25" 3. Custom position: "position fen r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq -" → "go depth 20" 4. Multi-line: "setoption name MultiPV value 3" → "position startpos" → "go depth 18" 5. Weaker play: "setoption name Skill Level value 10" → "position startpos" → "go depth 15" EXAMPLES: • "uci" → Get engine info • "position startpos moves e2e4 e7e5 g1f3 b8c6" → Set position • "go depth 18" → Deep analysis • "setoption name Hash value 512" → Increase memory • "setoption name MultiPV value 5" → Show top 5 moves
Output schema completely missing. Tool returns 'structured results' but no schema documents what fields are in the response, their types, or ranges. LLM cannot plan downstream calls or validate results.
Parameter 'session_id' undocumented in terms of purpose and lifecycle. Is it optional? What does maintaining state across commands mean in a STDIO context? This creates ambiguity about stateful vs stateless behavior.
Description is 1200+ characters, far exceeds optimal range of 10-1024 chars. Reads like a UCI manual rather than LLM-friendly documentation. LLMs struggle with token-heavy descriptions and may miss the core use case.
No error handling guidance. What happens if Stockfish crashes? If command is invalid? If analysis times out? Tool provides no recovery hints or error categories.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 50 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Command parameter accepts free-form strings with no validation hints. LLM could pass malformed UCI commands (e.g., 'go depth abc' or 'position invalid'). No enum constraints or format specification despite UCI being a strict protocol.