Thin MCP server exposing Wolt consumer API for restaurant discovery and menu inspection
Two tools with clear, actionable descriptions (194 - 250 chars, within baseline 34 - 392). Both have complete input schemas with proper type constraints (lat/lon bounds, radius limits, string length). Output schemas are partially documented in descriptions but not formally declared. Parameters are well-constrained with enums and ranges. No security issues detected (no secrets in params). Main gaps: output structure not formally specified; no error handling guidance; no pagination support despite list_nearby potentially returning many results.
Fetch a venue's full menu by slug. Returns categories and items with prices in minor units (e.g. 2390 = 23.90 EUR in Estonia). Each item includes `price`, `original_price` (if discounted), `lowest_price` (30-day low used for compliance), `description`, `enabled`, and `tags`. A category named 'ERIPAKKUMISED' (Estonian) or similar typically holds current deals.
List Wolt venues near a location. Defaults to Tallinn center. Returns compact dicts with slug, rating, ETA, online status, tags. Use `query` to substring-match name/tags. Prices are not included here — call `get_menu` for a specific slug.
Output schemas not formally documented. Descriptions mention returned fields (slug, rating, ETA, tags for list_nearby; categories, items, prices for get_menu) but no JSON Schema or structured type definition. LLMs cannot reliably extract nested fields without formal schema.
No pagination support. list_nearby returns up to 30 results by default but no offset/cursor or total_count. If a location has 100+ venues, agent cannot iterate. Baseline pattern requires pagination for list tools.
No error handling guidance. If slug is invalid or API fails, no recovery hint provided. Descriptions lack 'When to use' context or prerequisites (e.g., 'Call list_nearby first to find a valid slug').
Parameter descriptions lack format/constraint details. 'Wolt response language' does not specify valid codes (en, et, etc.). 'Venue slug' example 'vapiano-foorum' is helpful but no pattern or length constraint stated beyond min_length=2.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent but this is not declared in the schema. Agents cannot infer safety properties without explicit hints.