Asian Recs
Server Details
SF and NYC restaurants, cafes, desserts and bars ranked by how Asian diners rate them.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- raymond-raymond/asianrecs-claude
- GitHub Stars
- 0
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: get_place fetches details for one place, list_filters describes available filter dimensions, and search_places finds places by ranking. There is no meaningful overlap; an agent can choose the right tool based on whether it needs one place, valid filters, or discovery.
All three tools use a consistent verb_noun snake_case convention: get_place, list_filters, search_places. The pattern is predictable and readable throughout.
Three tools is on the thin side for a recommendations service, but each earns its place by covering lookup, filter discovery, and search. Slightly under-scoped but adequate for the apparent purpose.
The surface covers discovery, filtering, and place detail, but lacks obvious operations like listing cities/areas supported or pagination/result-count controls for search. Agents can work around some gaps via list_filters, but the lifecycle feels incomplete for a recommendation domain.
Available Tools
3 toolsget_placeAsian Recs place detailsARead-onlyIdempotentInspect
Full Asian Recs page for one place: both ratings and the gap, share of reviewers who are Asian, dishes Asian diners mention most, quotes from Asian diners, Google and Yelp ratings, and links (Asian Recs, Google Maps, Yelp, Instagram). Use when someone asks about one specific place in San Francisco or New York.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | sf = San Francisco, nyc = New York | |
| name | Yes | Place name; partial names work. | |
| type | No | Narrow to one kind of place when a name is ambiguous. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real value by enumerating the returned payload (both ratings and the gap, Asian reviewer share, mentioned dishes, quotes, Google/Yelp ratings, links), which is important since there is no output schema. It does not, however, disclose behavior for ambiguous or missing place names, which matters given the optional 'type' disambiguator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the second sentence gives the usage trigger. The long enumeration of return fields is justified by the absence of an output schema, though it reads as a list dump rather than tightly integrated prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations covering return values, the description correctly compensates by spelling out the payload. Usage context and geographic limits are present. The main remaining gap is failure/ambiguity behavior, which the description leaves to the optional 'type' parameter in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented inline, including the city enum labels and the note that partial names work, so the description's 'San Francisco or New York' phrasing merely echoes the enum. Baseline 3 is appropriate when the schema carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Full Asian Recs page for one place') and enumerates exactly what that page contains, so an agent knows it retrieves a single rich record. It implicitly distinguishes itself from search_places via the singular 'one place,' but never names the sibling, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when someone asks about one specific place in San Francisco or New York' gives a clear triggering condition and a geographic scope constraint. It stops short of naming search_places as the alternative when the user asks about a category or multiple places, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filtersAsian Recs neighborhoods and cuisinesARead-onlyIdempotentInspect
Areas, neighborhoods and cuisines available for a city and kind of place, with how many ranked places each has. Use to find the exact neighborhood and cuisine names search_places accepts, or to answer what is covered.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | sf = San Francisco, nyc = New York | |
| type | No | Kind of place. Default restaurants. Boba, coffee, tea and bakeries are cafes; ice cream and dessert shops are desserts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so safety is covered. The description adds one useful piece of context beyond the name — that each entry includes a count of ranked places, which hints at the return shape. It says nothing about cache freshness, ordering, or whether results change over time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero filler. The core purpose is front-loaded, followed immediately by the usage framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must gesture at return content, and it does by mentioning the places-per-entry count. For a simple two-enum read-only lookup this is nearly sufficient, though a bit more on the returned grouping (areas vs neighborhoods vs cuisines) would fully close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry enum value definitions with clarifying notes (e.g. boba/coffee/tea map to cafes). The description only restates 'city and kind of place' generically, adding no enum or default semantics beyond the schema — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — lists the areas, neighborhoods and cuisines available for a given city and place type — and adds the distinguishing detail that each carries a count of ranked places. It explicitly positions itself relative to the search_places sibling by noting it resolves the exact names that tool accepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases: resolving exact neighborhood/cuisine names for search_places, or answering coverage questions. The alternative (search_places) is named, but there is no explicit when-not guidance or mention of the get_place sibling, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_placesSearch Asian RecsARead-onlyIdempotentInspect
Find places in San Francisco or New York ranked by how Asian diners rate them. Each result has the Asian diners' rating, everyone else's rating, the gap between them, how many Asian diners reviewed it, top dishes, neighborhood and a link to its page. Use when someone asks where to eat or drink in San Francisco or New York, or for restaurant, dessert, cafe or bar recommendations there. When nothing matches, message says why.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | sf = San Francisco, nyc = New York | |
| near | No | A point to measure distance from; adds distance_mi to results. | |
| sort | No | asian_rating: Asian diners' rating, highest first; loved_more: Biggest gap above everyone else; most_asian_diners: Most Asian diners; share_asian: Highest share of Asian reviewers; distance: Closest first (needs near). Default asian_rating. | |
| type | No | Kind of place. Default restaurants. Boba, coffee, tea and bakeries are cafes; ice cream and dessert shops are desserts. | |
| limit | No | Default 10. | |
| query | No | Free text matched against name, cuisine, neighborhood and dishes, e.g. a dish like "soup dumplings". | |
| cuisine | No | Cuisine or drink category, e.g. "ramen", "sichuan", "korean", "dim sum", or "boba" with type cafes. | |
| location | No | Neighborhood or area, e.g. "Mission", "East Village", "Flushing", "Manhattan — Downtown". list_filters has the exact names. | |
| radius_mi | No | With near: only places within this many miles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value by enumerating the returned fields (both ratings, the gap, review counts, top dishes, neighborhood, link) and by disclosing empty-result behavior ('message says why').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, none of them filler: capability and ranking first, usage triggers second, empty-state behavior last. Nothing is repeated and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the result fields, and the nine params are fully covered by the schema. Only minor gaps remain, such as pagination or how limit interacts with ranking, which are not addressed anywhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter, including the enums and the near/radius interaction, is documented in the schema itself. The description adds no syntax, format, or default information beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find), resource (places), geography (San Francisco or New York), and the distinctive ranking signal (how Asian diners rate them). It does not, however, differentiate itself from siblings get_place or list_filters, leaving the agent to infer that get_place is for detail lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear triggering contexts: 'when someone asks where to eat or drink' and 'restaurant, dessert, cafe or bar recommendations' in the two supported cities. No explicit when-not-to-use or named alternatives, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
list_filters1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"Kind of place. Default restaurants."New value: +"Kind of place. Default restaurants. Boba, coffee, tea and bakeries are cafes; ice cream and dessert shops are desserts."
- Changed
search_places3 fields changed- changed
Input schema / properties / cuisine / descriptionPrevious value: -"Cuisine or drink category, e.g. \"ramen\", \"sichuan\", \"korean\", \"boba\", \"dim sum\"."New value: +"Cuisine or drink category, e.g. \"ramen\", \"sichuan\", \"korean\", \"dim sum\", or \"boba\" with type cafes." - changed
Input schema / properties / location / descriptionPrevious value: -"Neighborhood or area, e.g. \"Mission\", \"East Village\", \"Flushing\", \"Manhattan — Downtown\"."New value: +"Neighborhood or area, e.g. \"Mission\", \"East Village\", \"Flushing\", \"Manhattan — Downtown\". list_filters has the exact names." - changed
Input schema / properties / type / descriptionPrevious value: -"Kind of place. Default restaurants."New value: +"Kind of place. Default restaurants. Boba, coffee, tea and bakeries are cafes; ice cream and dessert shops are desserts."
3 tool updates
- First observed
get_place - First observed
list_filters - First observed
search_places
Related MCP Connectors
Restaurant picks from food creators you trust: ranked guides, reviews and places near you.
Editorial NYC restaurant recommendations for AI agents: search, compare, guides, ratings.
Live tables, release times and booking odds at hard-to-book restaurants in NYC, SF, LA and Chicago.
Editorial guide to restaurants and bars — hand-picked venues with opinions, not a places database
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables conversational exploration of California restaurant data, vibe-based recommendations, and access to structured restaurant details and reviews.-

PosDO MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceDiscovers over 356,000 restaurants across 20 countries, providing search, reviews, time-based offers, and cultural context via the Model Context Protocol.Apache 2.0- AlicenseNot gradedqualityBmaintenanceEnables natural language semantic search for dishes, aggregated multi-reviewer restaurant insights, and personalized food tour itinerary generation based on Bilibili food review videos.MIT
- FlicenseNot gradedqualityNot gradedmaintenanceAn AI-native restaurant discovery service that enables searching and receiving natural language recommendations for over 2,200 restaurants across 15+ US cities. It provides tools for accessing detailed restaurant info, curated lists, and cuisine-specific searches through the Model Context Protocol.-
Glama MCP Gateway
Add one secure layer between your agents and this server.