MCP server for logging meals with automatic carbohydrate calculation using AI
Three tools with complete schemas and descriptions, but significant gaps in parameter documentation and error guidance. Tool names follow verb_noun convention (log_meal, calculate_carbs, get_meals). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. Parameter descriptions exist but are minimal (e.g., 'Description of the meal eaten' lacks format/constraint guidance). No output schema documentation visible. Error handling returns generic error messages without recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint). The server uses AI-based carb calculation via a sampling client, but this dependency is not documented in tool descriptions.
Calculate carbohydrates for a meal description without logging
Retrieve logged meals within a date range
Log a meal with automatic carbohydrate calculation using AI
Parameter descriptions lack format constraints and validation rules. 'Description of the meal eaten' does not specify max length, required format, or examples. 'Start date for meal query (YYYY-MM-DD)' is better but lacks min/max date range guidance.
No output schema documentation. Tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream calls or extract data reliably without knowing response structure.
Error messages are generic ('failed to calculate carbs', 'failed to retrieve meals') without recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Tool annotations missing. log_meal is destructive (WRITE risk) but has no destructiveHint. calculate_carbs and get_meals are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe operations.
Undocumented external dependency: log_meal calls s.samplingClient.CalculateCarbs() but tool description does not mention AI-based calculation or that it may require external LLM calls. This dependency should be explicit in the description.