Deterministic rules verdicts for game-running agents — cited, reproducible, honest about jurisdiction. SRD 5.2.1 is adapter #1.
srdcheck provides three tools with complete input schemas and reasonable descriptions, but exhibits significant inconsistencies in schema quality, parameter documentation, and output schema visibility. Tool names follow action-verb patterns (use, move, options) but descriptions vary in completeness. Two of three tools have parameter descriptions (weight_lb, distance_ft, board, player, cell) but the 'kind' parameter in mage-hand.use lacks meaningful guidance on valid values. Output schemas are not documented in the visible code, preventing verification of response structure and downstream tool chaining. The tic-tac-toe tools (ttt.move, ttt.options) are well-scoped READ_ONLY operations with deterministic behavior, but mage-hand.use's description ('Adjudicate a proposed use...') is 96 characters, below the 194-char baseline for A-tier tools and lacks specifics on what constitutes a valid 'use'. No evidence of error handling guidance, recovery paths, or validation messaging. Parameter constraints (distance_ft, weight_lb as integers, player as X|O) are partially documented but lack explicit bounds or enum declarations in visible schema.
Adjudicate a proposed use of the Mage Hand spell effect, checking distance, weight, and allowed actions.
Adjudicate a proposed tic-tac-toe move, checking board validity, cell occupancy, turn order, and game state.
Enumerate legal moves available to the specified player on the current board.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract results without knowing what fields the response contains.
'kind' parameter in mage-hand.use lacks enum constraint and detailed description. Accepts 'attack', 'manipulate_object', 'stow_retrieve_open', 'pour_vial' but no formal enum or validation guidance visible. LLMs cannot determine valid values without guessing.
mage-hand.use description (96 chars) is below the 194-char baseline. Does not clearly state WHEN to call it (e.g., 'call when an agent proposes a Mage Hand action in D&D 5e'), WHAT prerequisites exist (caster level, spell attunement), or what constitutes failure vs. success.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
No error handling or recovery guidance visible. No documentation of how tools respond to invalid board states, out-of-range distances, invalid player values, or occupied cells in tic-tac-toe. LLMs receive raw errors instead of actionable recovery hints.
Integer parameters (weight_lb, distance_ft, cell) lack explicit bounds in descriptions. 'distance_ft' does not state maximum range; 'cell' should document 1-9 constraint in parameter description (currently only in description prose).
ttt.move and ttt.options do not document what fields the response contains. Will the response include win state, remaining legal moves, or game status? Without output schema, agents cannot chain moves or interpret game state.