A server to manage dietary profiles (preferences, needs, allergies) for a family or group, enabling constraint-aware meal planning with smart group inference
Family Serve Delicious has 4 well-structured tools with clear names, descriptions, and schemas. All tools are READ_ONLY and properly annotated. However, there are notable gaps: (1) Parameter descriptions are minimal or missing in some cases (e.g., 'reason' in find-members-by-restriction lacks meaningful context); (2) Output schemas are declared but not fully documented in descriptions; (3) Error handling is present but lacks recovery guidance for LLMs; (4) No pagination or result limits documented despite tools that return lists. The code shows sanitization effort (InputSanitizer.sanitizeObject) and structured responses with both text and structuredContent, which is positive. Average tool score across 4 tools: 62.
Lookup a single group by its name to get its id without listing all groups
Filter members in a group by restriction type and optional reason
Aggregated, anonymized context for recipe generation
Lightweight summary list of groups (no members)
Parameter descriptions lack actionable context. The 'reason' parameter in find-members-by-restriction is described as 'Optional reason for the restriction', this does not clarify what 'reason' values are valid (dietary reason? medical reason?) or when it should be supplied.
Output schemas are declared in code (via Zod) but not documented in tool descriptions. LLMs cannot know what fields to expect from group-recipe-context or find-members-by-restriction because the descriptions do not state the response structure.
No result limits or pagination hints in tool descriptions. groups-summary accepts limit (1-100) but the description does not state: (a) what happens if more than 100 groups exist, (b) whether a total_count is returned, or (c) how to fetch the next page.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Error messages are generic. The code throws 'Database error while fetching group by name' without recovery guidance. LLMs receive no actionable next step (e.g., 'Try a partial name', 'List all groups first').
Tool names could be more specific. 'find-group-by-name' and 'find-members-by-restriction' both use 'find-', which is slightly generic. Consider 'get-group-by-name' (if deterministic) or 'search-group-by-name' (if approximate).