A tiny box world where an AI lives and moves around, interacting with placed items (fish, traps, flowers, balls, walls). The MCP server allows AI agents to look at the world state and move with optional speech.
Two tools with minimal but present schemas and descriptions. hakoniwa_look has empty input schema (no parameters), which is valid but limits expressiveness. hakoniwa_move has proper enum constraint on 'dir' parameter and optional 'say' parameter with description. Both descriptions are action-oriented and under 200 chars, meeting baseline. However, parameter descriptions are sparse (only 'say' has a description; 'dir' lacks one despite being required). No output schema documentation. Error handling returns isError flag but lacks recovery guidance. Tool names follow verb_noun pattern (look, move) appropriately for a game-like domain.
Look at the box world: map, your position, items, recent events. Call this first to decide where to go.
Take one step in the box world and optionally say something (it shows in your speech bubble and the log — speak with personality).
Missing parameter descriptions: 'dir' parameter in hakoniwa_move lacks a description explaining its purpose and valid values, despite being required. LLMs cannot infer that 'up/down/left/right' are the only valid options without explicit text.
No output schema documentation. Neither tool documents what fields are returned or their types. Clients must infer structure from examples in code (renderMap output, move response fields). This violates the pattern that LLMs need documented return types to plan downstream calls.
Error handling lacks recovery guidance. Errors return isError=true with text like 'hakoniwa unreachable: <message>' or 'Error: <backend error>', but do not tell the LLM what to do next (retry? ask user? fatal?). Per pattern:recovery-guide, errors should guide the agent's next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. This is a hard architectural limitation, not a code quality issue, but it caps protocol readiness at 50.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). hakoniwa_look is read-only and hakoniwa_move is destructive (eats fish, falls in traps), but these hints are not declared in the tool definition. Clients cannot infer safety properties.