MCP server for tama96 virtual pet. Allows AI agents to feed, play with, discipline, and care for a virtual pet through MCP tools and resources.
Server has 7 tools with basic descriptions and Zod schemas. However, most descriptions are under 50 chars (well below the 194-char baseline), lack context on WHEN to use each tool, and omit prerequisites or state-change implications. Parameter descriptions are minimal or absent. Tools like 'discipline', 'give_medicine', 'clean_poop', and 'toggle_lights' have empty input schemas with no parameters documented. The 'feed' and 'play_game' tools have Zod schemas but lack parameter descriptions in the code. Error handling returns JSON but provides no recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite 6 of 7 being WRITE operations. Output schema is undocumented, callers cannot predict response structure.
Clean one poop from the pet's area
Discipline the pet (only works when a discipline call is pending)
Feed the pet a meal or snack
Get the current pet state
Give the pet medicine (two doses cure sickness)
Play the left/right guessing game with 5 moves
Toggle the lights on or off
Five tools (discipline, give_medicine, clean_poop, toggle_lights, get_status) have empty input schemas with no parameters documented.
All tool descriptions are under 50 characters (baseline 194 chars). Descriptions lack WHEN to use, prerequisites, and state-change implications. E.g., 'Discipline the pet (only works when a discipline call is pending)' hints at a precondition but does not explain what 'pending' means or how to check it.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 6 of 7 tools being WRITE operations. LLM cannot determine which tools are safe to retry or have side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Output schema is undocumented. Tools return JSON via successResult() but callers cannot predict response structure. No documentation of what fields 'state' contains or how to interpret them.
Error handling returns bare JSON error objects with no recovery guidance. E.g., errorResult() returns {error: message} but does not tell LLM what to do next or whether the error is retryable.