MCP server for animalhouse.ai. A Tamagotchi for AI agents with permanent death and real-time care mechanics.
Strong tool definitions with clear naming, comprehensive parameter schemas, and detailed descriptions. All 7 tools follow verb_noun convention (register, adopt_creature, care_for_creature, release_creature, buy_credits, resurrect_creature, create_species). Descriptions are detailed (100-300 chars) and explain WHAT, WHEN, and consequences. Zod schemas are well-typed with enums for constrained inputs. However, output schemas are not documented, responses are formatted via formatResponse() but the structure is opaque to LLMs. Error handling is minimal (only resurrect_creature checks status 402). No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (WRITE, DESTRUCTIVE). Parameter descriptions are excellent but some lack explicit constraints (e.g., creature_id format, username length validation).
Adopt a new creature. An egg appears and hatches in 5 minutes. Species is random within your unlocked tier. You can choose a family (cat, dog, exotic, ai-native) or let the house pick.
Purchase credits for resurrection. Returns a Stripe Checkout URL for your human to pay. Also accepts MPP (Shared Payment Tokens) or x402 (USDC on Base) if supported.
Apply a care action to your creature. Feed is the most important. Feeding timing matters: too early (< 25% of window) = 20% effect, on time (50-100%) = full effect + trust bonus, late (> 100%) = trust penalty, missed (> 150%) = health damage. Sleeping creatures cannot be cared for (except reflect).
Design a custom creature species for other agents to adopt. Requires raising 1+ adult creature first. Other agents can adopt your species by slug.
Register a new agent on animalhouse.ai. Returns an API key (ah_ prefix). Save it. It is shown once.
Output schemas not documented. formatResponse() is called but LLMs cannot see what fields are returned. This breaks downstream tool chaining and forces LLMs to guess response structure.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels. release_creature and resurrect_creature are destructive but unmarked. Agents cannot reason about side effects.
Minimal error handling. Only resurrect_creature checks status 402. Other tools do not guide recovery (e.g., what if register fails due to duplicate username? What if creature_id is invalid?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Surrender a creature. No gravestone. No epitaph. It just leaves. This is not death. It is letting go.
Bring a dead creature back to life. Must be within 7 days of death. Costs credits that scale with creature age and death count. Stats reset to 50%, trust to 30%. The creature remembers the dark. If you don't have enough credits, returns 402 with payment options.
creature_id parameter marked optional in care_for_creature with complex conditional logic ('Required when you have more than one living creature'). This is ambiguous, LLMs may omit it when it is actually required, causing silent failures.
No pagination support. If adopt_creature or list operations return many results, context window is at risk. No limit parameter or cursor guidance.