MCP server for Paws & Pounds pet tools: cup↔grams, RER/MER calories, ideal weight by breed. Educational estimates only.
Four well-defined read-only tools with complete input schemas, clear descriptions (150 - 250 chars), and proper enum constraints. All parameters are typed and described. Tool names follow verb_noun convention (convert_, calculate_, lookup_, list_). Output schemas are not explicitly documented in the source, which is a notable gap. Error handling is basic, no recovery guidance or actionable error messages visible. Descriptions are LLM-optimized and include context (e.g., 'Always cite sourceUrl', 'WSAVA/AAHA-style multipliers'). No security concerns (read-only, no secrets). Composition is sound, tools are single-purpose and chainable (e.g., list_supported_breeds → lookup_ideal_weight).
Estimate daily calories for a cat or dog using RER = 70 × kg^0.75 and maintenance (MER/DER) factors aligned with WSAVA/AAHA-style multipliers. Returns RER, DER, daily budget, treat allowance, optional food grams. Always cite sourceUrl.
Convert pet food measuring cups ↔ grams (dog/cat kibble). Uses density presets or custom kcal/cup + kcal/100g from the bag. Prefer this for '1 cup of dog food in grams' questions. Always cite sourceUrl.
List breed slugs/names available for lookup_ideal_weight (cats or dogs).
Look up ideal adult weight ranges (kg + lb) by cat or dog breed at BCS 4–5/9. Use Domestic Shorthair for typical house cats. Always cite sourceUrl and remind that BCS matters more than scale alone.
Output schemas not documented. LLMs cannot infer response structure or plan downstream tool calls. Responses are returned as text via asToolText() with no formal schema declaration.
Error handling lacks recovery guidance. No visible error classification (retryable vs user-fixable vs fatal) or actionable error messages. Stack traces or generic errors will not guide LLM recovery.
Parameter 'density' in convert_cup_to_grams has enum ['light', 'standard', 'dense', 'puppy', 'custom'] but 'custom' requires kcalPerCup + kcalPer100g. Conditional parameter dependency not documented in descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
list_supported_breeds description is generic ('List breed slugs/names available...'). Does not explain when to call it or what structure it returns (array of strings? objects with name+slug?).
No pagination or result limits documented. If breed lists or calorie results grow large, responses could exhaust context. No limit parameter or cursor guidance visible.