Exposes the California culinary dataset via the Model Context Protocol with restaurant information, vibe-based recommendations, and user reviews
Three tools with clear verb-noun naming (get_*, recommend_*) and documented descriptions. However, parameter descriptions are minimal (single short phrases), output schemas are not formally documented, and error handling lacks recovery guidance. Tools return JSON strings rather than structured objects, forcing LLMs to parse unstructured text. No input validation constraints (enums, ranges) visible. Descriptions average ~120 chars, within acceptable range but lack WHEN/WHY context. No tool annotations (readOnlyHint, etc.) despite all being read-only operations.
Search for a restaurant by name and return its structured details including cuisine, rating, price range, and signature dish.
Retrieve the full review for a restaurant.
Find restaurants that match a given vibe or atmosphere keyword. Searches both structured vibe tags and raw text descriptions. Examples of vibe keywords: "moody", "sun-drenched", "romantic"
Output schemas not documented. Tools return JSON strings; LLMs must parse unstructured text. No field descriptions for response objects (status, count, results, structured_matches, etc.).
Parameter descriptions are single short phrases ('The name of the restaurant to search for'). Missing WHEN/WHY context, format constraints, and examples. Descriptions should explain when to use this tool vs similar ones.
Error responses lack recovery guidance. 'No restaurant found' returns a suggestion but does not guide the LLM on next steps (retry with partial name, use recommend_by_vibe, etc.).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
No input validation constraints visible. Parameters accept free-form strings with no enum, pattern, or length limits. LLMs may pass invalid or nonsensical vibe keywords.
Tool annotations missing. All three tools are read-only (no state modification), but readOnlyHint is not declared. Agents cannot distinguish safe tools from destructive ones.