Asian Recs
Server Details
SF and NYC restaurants, cafes, desserts and bars ranked by how Asian diners rate them.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- raymond-raymond/asianrecs-claude
- GitHub Stars
- 0
TDQS
Scored across 3 tools
The three tools have clearly distinct roles: search_places finds ranked places, get_place retrieves full details for one place, and list_filters exposes available filter metadata. There is no meaningful overlap in purpose or output.
All tool names follow a consistent snake_case verb_noun pattern: get_place, list_filters, search_places. The convention is predictable and easy to parse.
Three tools are well-scoped for a read-only recommendation service: one search tool, one detail tool, and one filter-listing tool. Each earns its place without redundancy.
The set covers search, detail lookup, and filter metadata, which is most of the read-only workflow. A minor gap is that search_places does not clearly indicate it can apply the filters from list_filters, and there is no explicit city/kind discovery tool.
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).
| 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 declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by enumerating the payload (ratings gap, Asian reviewer share, dish mentions, quotes, cross-platform ratings, links), which tells the agent what it gets back. It does not say what happens when a name is ambiguous or matches nothing.
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?
One front-loaded sentence that names the resource first and then lists the contents. The enumeration is long but each item is a distinct piece of returned data, so it earns its length rather than padding.
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 convey returns, and it does so thoroughly. For a 3-parameter, read-only lookup tool the only real omission is behavior on ambiguous or missing names, which the schema hints at but the description never addresses.
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% with per-parameter descriptions and enums for city and type, so the schema already carries the parameter meaning. The description adds no syntax, format, or disambiguation guidance beyond it; 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+resource ('Full Asian Recs page for one place') and enumerates exactly what the page contains, so the agent knows this is a detail fetch rather than a list. The sibling search_places is not named, but the singular 'one place' framing implicitly separates it from a search/list tool.
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?
There is no explicit when-to-use sentence, no prerequisites, and no mention of the sibling tools (search_places, list_filters). The usage is only implied: fetch this after a search has surfaced a specific place. That is adequate but leaves routing to inference.
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 cuisinesBRead-onlyIdempotentInspect
Areas, neighborhoods and cuisines available for a city and kind of place, with how many ranked places each has.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | sf = San Francisco, nyc = New York | |
| type | No | Kind of place. Default restaurants. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's only added behavioral value is noting the response includes per-item counts of ranked places, which is modest but genuine.
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?
A single tight clause with zero filler and the key scope detail front-loaded. It is a verbless noun phrase, which is slightly awkward for an action tool but costs nothing in length.
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?
For a simple two-parameter, read-only lookup with full enum documentation and a safe annotation profile, the description says enough to call it correctly. The missing piece is the workflow relationship to search_places, which is a minor gap at this complexity.
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% with both enums fully documented (city values mapped, type default stated), so the schema carries the parameter burden. The description only echoes 'a city and kind of place' and adds no new semantics.
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 names the specific resource (areas, neighborhoods, cuisines) and its scope (per city and kind of place), plus a return detail (counts of ranked places). It is clear what the tool returns, though it never explicitly contrasts itself with get_place or search_places.
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?
There is no when-to-use or when-not-to-use guidance and no mention of the sibling tools. An agent can guess this is a filter-discovery call to run before search_places, but that inference is not stated anywhere in the text.
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.
| 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. | |
| 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", "boba", "dim sum". | |
| location | No | Neighborhood or area, e.g. "Mission", "East Village", "Flushing", "Manhattan — Downtown". | |
| 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 declare this as a safe, idempotent, closed-world read. With no output schema, the description earns real credit by enumerating the returned fields (both ratings, the gap, diner counts, top dishes, neighborhood, link), which tells the agent what it gets back. It stops short of disclosing result caps, default limit behavior, or pagination.
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 sentences, front-loaded with purpose and scoping, then the result shape. Every clause carries information, and the second sentence compensates for the absent output schema rather than padding.
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?
For a 9-parameter search with a nested object, three enums, and no output schema, the description covers the core intent and the return shape well. It omits operational details an agent might want (default/max result counts, how filters combine, ordering defaults), but the schema picks up most of that slack.
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 one of the 9 parameters (including the nested near object and all three enums) is documented in the schema itself. The description adds no syntax, format, or interaction guidance beyond restating the SF/NY scope, 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?
Opens with a specific verb and resource ('Find places') and immediately scopes it to two named cities ranked by a named criterion (how Asian diners rate them). This is clearly distinct from the sibling get_place (a detail lookup) and list_filters (enumerating filter vocabularies), so an agent can route between them without opening a schema.
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?
Usage is implied by the framing ('Find places ... ranked by how Asian diners rate them'), which conveys the discovery use case, but there is no explicit when-to-use vs get_place, no mention of when a query/cuisine/location combination is appropriate, and no exclusions. Adequate but leaves the agent to infer routing.
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.
3 tool updates
- First observed
get_place - First observed
list_filters - First observed
search_places
Related MCP Connectors
Editorial NYC restaurant recommendations for AI agents: search, compare, guides, ratings.
Editorial guide to restaurants and bars — hand-picked venues with opinions, not a places database
Agent-native registry: 168k+ real restaurants in LA, Hong Kong & Tokyo. Unranked, honest signals.
Open restaurant data for AI agents in China: search, publish, fact-check. Free, no paid ranking.
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.