An MCP server for managing restaurant lunch options, including listing restaurants, adding new ones, picking random selections, and tracking visit statistics.
Four tools with basic descriptions and minimal parameter documentation. All tools have descriptions (10-60 chars), but descriptions lack actionable context for LLM selection. Input schemas present for AddRestaurant only; other three tools have empty input objects. No output schemas documented. No error handling guidance. No parameter descriptions for AddRestaurant's three string parameters, LLMs cannot infer what 'foodType' means vs 'location'. Tool names are verb-noun (good), but descriptions are generic and under 20 chars for three of four tools, triggering hard scoring caps. No pagination, no result limits documented, no idempotency hints. PickRandomRestaurant modifies state but description does not say so.
Add a new restaurant to the lunch options.
Get a list of all restaurants avaliable for lunch
Get statistics about how many times each restaurant has been visited.
Pick a random restaurant from the available options for lunch.
Three of four tools have empty input schemas ({}). GetRestaurantsAsync, PickRandomRestaurant, and GetVisitStatistics expose no parameter definitions, violating the schema documentation requirement.
Descriptions for GetRestaurantsAsync (11 chars), PickRandomRestaurant (13 chars), and GetVisitStatistics (20 chars) are below the 20-char minimum and lack actionable context.
AddRestaurant's three parameters (name, location, foodType) have descriptions in the source code, but they are generic and do not explain constraints, formats, or valid values. No enum for foodType; LLMs will hallucinate food types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
PickRandomRestaurant modifies state (increments visit counts, saves data) but description does not indicate this is a write operation. LLMs cannot determine if the tool is safe to retry.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Responses are JSON strings, not structured objects with typed fields.