MCP server for exploring Tabelog, Japan's largest restaurant review site with millions of user reviews
Tabelog Explorer demonstrates solid tool design with clear naming, comprehensive parameter descriptions, and well-documented schemas. All 8 tools follow verb_noun conventions (search_, get_, list_). Descriptions are detailed (150-400 chars) and include context about Tabelog's rating system and when to use batch vs. individual methods. Input schemas are complete with types and descriptions for all parameters. However, output schemas are documented only in docstrings, not as formal JSON Schema. Error handling is minimal, no recovery guidance or actionable error messages. The batch tools (get_restaurant_info_batch, get_reviews_batch) are excellent composition patterns, reducing N+1 call problems. Parameter constraints are well-specified (enums for sort/meal_type, ranges for price tiers, filter options). One minor issue: search_restaurants has many optional parameters (10 total), which could benefit from smart defaults to reduce agent reasoning.
Get neighborhood/district codes for filtering searches by specific area. Use this to narrow searches to specific neighborhoods (e.g., Ginza, Shibuya, Shinjuku). Pass the returned 'code' to search_restaurants(area="tokyo/CODE").
Get comprehensive details for a single restaurant. ⚠️ FOR MULTIPLE RESTAURANTS: Use get_restaurant_info_batch() instead! It's much faster (parallel fetching) and you already have URLs from search.
Get detailed info for multiple restaurants in parallel (much faster than individual calls).
Fetch detailed user reviews for a single restaurant. ⚠️ FOR MULTIPLE RESTAURANTS: Use get_reviews_batch() instead! It's much faster (parallel fetching) and you already have URLs from search. Reviews are in Japanese. Each page has ~20 reviews.
Fetch reviews for multiple restaurants in parallel (much faster than individual calls).
List all cuisine/restaurant type slugs for filtering searches. Returns slugs to use with search_restaurants(genre="slug"). Common genres (no need to call this for these): - Staples: "ramen", "sushi", "izakaya", "yakitori", "udon", "soba", "tempura" - Meat: "yakiniku", "sukiyaki", "shabu", "tonkatsu", "kushikatsu", "steak" - Other Japanese: "kaiseki", "oden", "okonomiyaki", "takoyaki", "donburi" - International: "italian", "french", "chinese", "korean", "thai", "curry" - Casual: "cafe", "bar", "bakery", "sweets" Call this tool only if you need the complete list or less common genres.
Output schemas documented only in docstrings, not as formal JSON Schema. LLMs cannot parse docstring descriptions of return types; they need structured schema definitions to plan downstream tool calls reliably.
No error handling or recovery guidance. Tools do not return actionable error messages (e.g., 'Invalid area code. Call get_areas("tokyo") to discover valid codes'). Agents cannot self-correct on failures.
search_restaurants has 10 optional parameters with no smart defaults. Agents must reason about all combinations (keyword vs. area, price_min/max require meal_type). Simplify by defaulting meal_type='dinner', sort='trend', limit=20.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
List all available price tier values for use with price_min/price_max filters.
Search Tabelog, Japan's largest restaurant review site. Tabelog ratings are strict: 3.5+ is excellent, 4.0+ is exceptional. Most quality restaurants score 3.0-3.8.
Batch tools (get_restaurant_info_batch, get_reviews_batch) lack per-item error reporting. If 1 of 10 restaurants fails to fetch, the entire batch response fails. Should return partial results with per-item success/failure status.
get_reviews and get_reviews_batch return reviews in Japanese with no translation or language detection. Agents cannot reason about review content without explicit language handling or translation guidance.