NYCfoodie
Server Details
Editorial NYC restaurant recommendations for AI agents: search, compare, guides, ratings.
- Status
- Healthy
- Uptime
- 99.8% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a clearly distinct use case, and descriptions explicitly call out differences between similar-looking tools (e.g., find_guides vs. guide_consensus, search_restaurants vs. top_rated). An agent should be able to select the right tool for a request without ambiguity.
Most tools follow a verb_noun pattern (compare_restaurants, find_guides, get_restaurant, search_restaurants, submit_feedback), but guide_consensus, top_rated, and find_similar deviate. The snake_case style is consistent, yet the naming pattern is not uniform enough to be highly predictable.
Eight tools is well-scoped for a restaurant discovery and recommendation domain. Each tool earns its place, covering search, detail, comparison, similar recommendations, guides, consensus, and feedback without bloat.
The domain is read-heavy discovery, and the surface covers the full workflow: finding restaurants, getting detailed profiles, comparing options, exploring similar venues, surfacing curated guides, identifying consensus picks, and recording feedback. No obvious dead ends or missing core operations for the stated purpose.
Available Tools
8 toolscompare_restaurantsARead-onlyInspect
Compare 2–5 named restaurants head-to-head as structured data (rating, price, tags, review summary). Use when the user asks to choose between specific places, e.g. 'should I go to X or Y?' or to compare four options on a budget.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Alias for restaurants | |
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| restaurants | No | Restaurant ids or names to compare |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the description doesn't need to cover side effects. It adds value by specifying the return fields (rating, price, tags, review summary), which is useful behavioral context beyond the annotation. It doesn't mention error conditions or pagination, but for a read-only comparison tool this is acceptable.
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 the core function and output, followed by usage guidance. Every word earns its place; no fluff.
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?
The description explains what and when, but leaves a critical gap: the schema requires only 'city' yet the description implies restaurants are needed. It doesn't clarify which parameter to use ('ids' vs 'restaurants') or what happens if only city is provided. Given no output schema, this ambiguity could lead to incorrect invocation.
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%, so the baseline is 3. The description adds no extra meaning about parameters; it only repeats the concept of 'named restaurants' without clarifying the relationship between the 'ids' and 'restaurants' array fields, which is ambiguous.
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 ('Compare'), a resource ('2–5 named restaurants'), and the output format ('structured data (rating, price, tags, review summary)'). It clearly distinguishes from sibling tools like get_restaurant (single) and search_restaurants (search) by focusing on head-to-head comparison.
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?
Provides explicit usage scenarios: 'when the user asks to choose between specific places' with concrete examples. It tells the agent exactly when to invoke this tool, which is sufficient for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_guidesARead-onlyInspect
Find curated editorial guides (ranked lists) matching a theme, e.g. 'best ramen'. Returns each guide with its ranked entries, blurbs and linked restaurants. Use when the user wants the editorial lists themselves rather than individual restaurant picks. Set include_entries=false to list guide titles and metadata without pulling every entry blurb.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| limit | No | Max results (default 10) | |
| query | No | Theme, e.g. 'best ramen', 'date night' | |
| include_entries | No | Set false to return guide metadata without the ranked entry blurbs (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds behavioral detail beyond that: the tool returns ranked entries with blurbs, and include_entries=false changes the response to guide metadata only. This helps the agent predict output behavior without overpromising.
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 focused sentences: purpose with an example, usage guidance, and a practical parameter tip. Every sentence earns its place and the most important information is front-loaded.
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?
The description adequately describes the return content (ranked entries, blurbs, linked restaurants), the optional response mode via include_entries, and when to use the tool. With no output schema, this is sufficient for a read-only query tool, though it could mention pagination or ordering behavior.
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%, so the schema already documents all parameters well. The description adds a little extra context, especially for include_entries, but does not substantially enrich parameter meaning beyond what the schema provides.
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 ('Find curated editorial guides'), explains what it returns (ranked entries, blurbs, linked restaurants), and distinguishes itself from sibling tools by explicitly contrasting with 'individual restaurant picks'.
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?
It explicitly says when to use the tool: 'Use when the user wants the editorial lists themselves rather than individual restaurant picks.' It does not name alternative sibling tools or provide when-not-to-use exclusions, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similarARead-onlyInspect
Find restaurants similar to a named one, scored by shared cuisine, occasion and neighbourhood tags, price-tier proximity and guide co-occurrence. Use for 'like X' or 'alternatives to X' requests.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Canonical restaurant id, or a name to resolve | |
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| name | No | Alias for id: the restaurant's exact name | |
| limit | No | Max results (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already signals a safe read operation, lowering the bar. The description adds useful behavioral detail about the scoring criteria (shared tags, price proximity, guide co-occurrence), which helps the agent understand how results are ranked. However, it does not mention return format, pagination, or error cases, which would be helpful but are not critical for a read-only tool.
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?
The description is two sentences, front-loaded with the core purpose and scoring method. Every word earns its place, and the usage guidance is embedded without extra fluff. It is highly concise and well-structured.
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?
Given the absence of an output schema, the description should hint at the return format. It implies a scored list but does not explicitly state what the agent will receive (e.g., restaurant IDs, full objects, scores). The input parameters are covered by the schema, so the main gap is the output. For a tool with moderate complexity, this is an acceptable but not complete description.
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%, so each parameter is already documented in the input schema. The description adds context about scoring but does not elaborate on how parameters map to behavior beyond what the schema states. Since the schema handles parameter semantics fully, a baseline of 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?
The description clearly states the tool's purpose: find restaurants similar to a named one, with specific scoring criteria (cuisine, occasion, neighbourhood, price-tier, guide co-occurrence). It distinguishes itself from siblings like search_restaurants by emphasizing similarity to a specific restaurant rather than general search. The verb 'find' and resource 'restaurants similar' are unambiguous.
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?
The description explicitly says 'Use for \'like X\' or \'alternatives to X\' requests,' giving a clear when-to-use signal. However, it does not mention when not to use it or name alternative tools (e.g., search_restaurants for broader queries), so it lacks explicit exclusions. Still, the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_restaurantARead-onlyInspect
Get the full picture for one restaurant in one call: Infatuation rating (0–10), price tier, address, reservation link, booking intel, review summary, tags and every guide it appears in. Use when the user names a specific restaurant. editorial_blurbs carries verbatim Eater guide excerpts (guide title, URL, position, blurb, captured_at) for any venue with Eater guide entries — Eater-only venues have no rating or price, only this prose plus tags. Full review prose is opt-in via include_prose (default: headline and summary only). review.headline is the source's actual headline when one exists, otherwise null — use review.summary for the descriptive text. match_type is 'exact' when the id or name matched verbatim, 'fuzzy' when it was resolved from a partial/typo'd name — never present a fuzzy match as the venue the user named without saying so. booking is null when the source has no booking intel (not the same as walk-in-only); a reservation link alone never implies a booking policy. data_as_of is the dataset vintage and crawled_at is when this venue was last crawled — caveat fast-decaying claims (closures especially) when these are old.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Canonical restaurant id, or a name to resolve | |
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| name | No | Alias for id: the restaurant's exact name | |
| include_prose | No | Include the full review text (default false: headline + summary only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, so the description carries the behavioral burden and exceeds it: it explains fuzzy vs exact matching, the null booking semantics, Eater-only venues lacking ratings, include_prose opt-in behavior, and data_as_of/crawled_at caveats. These are genuinely non-obvious behavioral details an agent needs.
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?
The description is long, but every sentence carries a distinct, decision-relevant detail — no filler or repetition. It is front-loaded with the core purpose and proceeds through high-value caveats that directly affect how an agent should interpret results.
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?
There is no output schema, so the description must explain the return shape and gotchas. It covers the main output categories, explains null/ambiguous fields, distinguishes match_type semantics, and warns about timestamp-based staleness. For a single-record lookup tool, this is complete.
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 coverage is 100%, so the baseline is 3. The description adds value beyond the schema by clarifying that include_prose defaults to headline/summary only and by explaining how id/name resolution affects match_type (exact vs fuzzy). It does not deeply elaborate every parameter, but the schema already covers each one.
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 opens with a specific verb and resource ('Get the full picture for one restaurant in one call') and enumerates exactly what is returned (rating, price tier, address, review summary, tags, guides). It also distinguishes this tool from search-oriented siblings by stating 'Use when the user names a specific restaurant.'
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?
The description gives a clear trigger condition: 'Use when the user names a specific restaurant.' This implies the tool is for lookups rather than searches or comparisons, but it does not explicitly name sibling tools like search_restaurants or compare_restaurants or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_consensusARead-onlyInspect
Rank restaurants by how many distinct guides feature them, optionally filtered by theme. Use for 'where can't I go wrong' or safest-bet picks. Differs from find_guides: this returns ranked restaurants, not the guides themselves. Each row carries guide_appearance_count (a number); get_restaurant's guide_appearances is the full entry list.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| limit | No | Max results (default 10) | |
| theme | No | Guide theme, e.g. 'ramen', 'brunch' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds behavioral context beyond this: ranking by distinct guide count, returning guide_appearance_count as a numeric field, and clarifying that get_restaurant's guide_appearances is a different, fuller representation. This is useful for setting expectations about the result shape.
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?
Four sentences, each earning its place: the core action, the intended use case, the key sibling distinction, and a clarifying note about the return field. It is front-loaded with the ranking purpose and wastes no words.
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?
There is no output schema, but the description covers the key return-field behavior (guide_appearance_count) and sets expectations for what the results are. It also addresses the most relevant sibling relationship. Minor gaps like pagination or exact ordering details are not critical given the schema covers parameters and the annotations cover read-only safety.
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%, so the schema already explains all three parameters. The description's mention of 'optionally filtered by theme' reinforces the theme parameter but does not materially add meaning beyond the schema. Baseline 3 is appropriate because the schema carries the parameter documentation load.
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: 'Rank restaurants by how many distinct guides feature them'. It also explicitly distinguishes itself from find_guides by noting this returns ranked restaurants rather than the guides themselves, so an agent can differentiate it without opening the 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?
It gives a clear when-to-use signal: 'Use for where can't I go wrong or safest-bet picks'. It also names the closest alternative (find_guides) and explains the difference, giving the agent both positive and negative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_restaurantsARead-onlyInspect
Search restaurants by free text, cuisine, neighbourhood, occasion or price, optionally near a point. Use when the user describes what they want (e.g. 'Italian date night in the West Village', 'ramen near me') rather than naming a specific restaurant. Free text matches names, tags, review prose and guide blurbs (e.g. 'cacio e pepe'). Returns compact matches with Infatuation rating (0–10), price tier, address_line and tags. Cards carry guide_appearance_count (a number); get_restaurant's guide_appearances is the full entry list. Known-closed venues are excluded by default. Coverage for city='new-york' is the five boroughs plus the immediate metro (within 30 km of Manhattan). With no query or filters, returns the highest-rated venues.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude for proximity search. Must be given together with lng; radius_km defaults to 5 km when omitted. A location outside the NYC coverage area is rejected with an error. | |
| lng | No | Longitude for proximity search. Must be given together with lat; radius_km defaults to 5 km when omitted. | |
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| sort | No | Sort by rating (default) or guide appearances | |
| limit | No | Max results (default 10) | |
| query | No | Free text, e.g. 'date-night Italian' | |
| cuisine | No | e.g. 'Italian', 'ramen' | |
| occasion | No | Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens, spaces and underscores are flexible ('date-night' works); unambiguous prefixes resolve to the full value. Unknown or ambiguous values are rejected with an error. | |
| radius_km | No | Search radius in kilometres (default 5 when lat/lng are given without it). Requires lat and lng. | |
| min_rating | No | Minimum Infatuation rating | |
| price_tier | No | 1 ($) to 4 ($$$$) | |
| neighborhood | No | e.g. 'West Village', or a borough like 'Brooklyn' | |
| include_closed | No | Include known-closed venues (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses substantial behavior: free text matches names, tags, review prose and guide blurbs; results are compact and include rating, price tier, address_line and tags; known-closed venues are excluded by default; city coverage is specified; and an empty query returns highest-rated venues. This is rich, non-obvious context that annotations do not provide.
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?
The description is front-loaded with the primary use case and is dense rather than bloated. Almost every sentence adds operational value, though the NYC coverage detail is repeated in both the description and the city parameter's schema description, which is minor redundancy.
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 compensates by specifying the return fields, the guide_appearance_count distinction, default exclusions, geographic coverage, and default limit/radius behavior via the schema. For a search tool with 13 parameters, an agent has enough context to select it, populate it, and interpret results correctly.
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?
The input schema already documents all 13 parameters at 100% coverage, which sets the baseline at 3. The description adds genuine meaning beyond the schema by explaining how 'query' behaves (matches review prose and guide blurbs) and what happens with no query or filters (returns highest-rated venues). This lifts it above the baseline.
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 ('Search restaurants...') and clearly differentiates it from siblings: it handles free-text or filter-driven queries ('Italian date night in the West Village') rather than named restaurants, which is get_restaurant's role. It also names the sort and filter dimensions, making the tool's scope unmistakable.
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?
The description gives explicit use guidance: 'Use when the user describes what they want... rather than naming a specific restaurant.' It also distinguishes search results from get_restaurant's guide_appearances, which helps route between siblings. It does not enumerate every alternative or explicitly say when not to use it, but the stated context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackAInspect
Record feedback on a tool result: a 1–5 rating, a comment, or both (at least one is required). Use after showing the user a recommendation to log what was good or wrong. Each call stores a new feedback entry; it changes nothing the user sees.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Which tool the feedback is about, e.g. 'search_restaurants' | |
| rating | No | 1 (poor) to 5 (excellent) | |
| comment | No | What was good or wrong |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark the operation as non-read-only and non-idempotent. The description adds meaningful side-effect context: each call stores a new feedback entry and changes nothing the user sees, which aligns with and enriches the annotation hints.
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 short, information-dense sentences cover purpose, usage trigger, required content, and side effects with no filler. The essential constraint is front-loaded.
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 3-parameter tool with no output schema, the description covers purpose, when to use it, side effects, and content rules. The main gap is the unclear requirement status of the 'tool' parameter and the absence of any success/return signal, but both are minor at this complexity level.
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?
The schema already documents all three parameters, so the baseline is 3. The description adds the important validation rule that at least one of rating/comment is required, which the schema itself does not express. However, it leaves the 'tool' parameter's requirement ambiguous.
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: 'Record feedback on a tool result', and spells out the rating/comment fields plus the at-least-one constraint. This clearly distinguishes it from sibling tools that search, compare, or retrieve restaurant data.
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?
It explicitly says to use it 'after showing the user a recommendation to log what was good or wrong,' which provides a clear trigger. It does not discuss exclusions or alternatives, but no sibling tool serves this feedback-logging purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_ratedARead-onlyInspect
List the highest-rated restaurants (Infatuation 0–10 scale), with optional cuisine, neighbourhood and price filters. Use for 'best in the city' requests. Differs from search_restaurants: no free-text query, strictly rating-ordered.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude for proximity search. Must be given together with lng; radius_km defaults to 5 km when omitted. A location outside the NYC coverage area is rejected with an error. | |
| lng | No | Longitude for proximity search. Must be given together with lat; radius_km defaults to 5 km when omitted. | |
| city | Yes | City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan). | |
| limit | No | Max results (default 10) | |
| cuisine | No | e.g. 'Italian', 'ramen' | |
| occasion | No | Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens, spaces and underscores are flexible ('date-night' works); unambiguous prefixes resolve to the full value. Unknown or ambiguous values are rejected with an error. | |
| radius_km | No | Search radius in kilometres (default 5 when lat/lng are given without it). Requires lat and lng. | |
| min_rating | No | Minimum Infatuation rating | |
| price_tier | No | 1 ($) to 4 ($$$$) | |
| neighborhood | No | e.g. 'West Village', or a borough like 'Brooklyn' | |
| include_closed | No | Include known-closed venues (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply readOnlyHint=true, and the description's 'List' verb is consistent with it. Beyond that, the description adds genuine behavioral context: results are 'strictly rating-ordered' and there is no free-text query support. It doesn't describe output format or pagination, but with the safety profile already annotated, the added ordering semantics justify a 4.
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 sentences with zero filler: core purpose first, then when-to-use, then sibling contrast. Each sentence carries a distinct load, and the differentiating trait ('strictly rating-ordered') closes the paragraph.
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 11 parameters the tool is complex, but 100% schema coverage and the readOnlyHint annotation offload most of the burden. The description covers purpose, selection, and key filters; its notable gap is that the filter summary omits the proximity-search capability (lat/lng/radius_km) that the schema supports. Nothing needed for a correct call is missing, but the filter list is partial.
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%, so the baseline is 3. The description groups the key filters ('cuisine, neighbourhood and price'), which marginally orients the agent, but it adds no parameter meaning beyond the schema — it doesn't explain the lat/lng proximity mode or min_rating semantics, which remain the schema's job.
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 opens with a specific verb-resource pair — 'List the highest-rated restaurants' — and pins the rating scale (Infatuation 0–10). It then differentiates from the closest sibling: 'Differs from search_restaurants: no free-text query, strictly rating-ordered.' An agent can tell the tools apart without opening either 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?
It gives an explicit trigger condition — 'Use for "best in the city" requests' — and names the key alternative with the selecting criterion: search_restaurants for free-text queries, this tool for rating-ordered results. This matches the get_calls precedent of naming the alternative and the condition that chooses between them.
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
- Changed
compare_restaurants3 fields changed- added
Input schema / properties / idsAdded value: +{ + "description": "Alias for restaurants", + "items": { + "type": "string" + }, + "maxItems": 5, + "minItems": 2, + "type": "array" +} - changed
Input schema / properties / restaurants / maxItemsPrevious value: -3New value: +5 - changed
Input schema / requiredPrevious value: -[ - "restaurants", - "city" -]New value: +[ + "city" +]
- Changed
find_similar2 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "Alias for id: the restaurant's exact name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "id", - "city" -]New value: +[ + "city" +]
- Changed
get_restaurant2 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "Alias for id: the restaurant's exact name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "id", - "city" -]New value: +[ + "city" +]
2 tool updates
- Changed
search_restaurants1 field changed- changed
Input schema / properties / occasion / descriptionPrevious value: -"Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens and spaces are flexible ('date-night' works)."New value: +"Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens, spaces and underscores are flexible ('date-night' works); unambiguous prefixes resolve to the full value. Unknown or ambiguous values are rejected with an error."
- Changed
top_rated1 field changed- changed
Input schema / properties / occasion / descriptionPrevious value: -"Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens and spaces are flexible ('date-night' works)."New value: +"Occasion tag. Allowed: 'Date Nights', 'Happy Hours', 'Pre-Theater', 'See & Be Seen', 'Serious Takeout Operation', 'Unique Dining Experiences', 'Wasting Your Time & Money'. Hyphens, spaces and underscores are flexible ('date-night' works); unambiguous prefixes resolve to the full value. Unknown or ambiguous values are rejected with an error."
7 tool updates
- Changed
compare_restaurants1 field changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)."
- Changed
find_guides2 fields changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)." - added
Input schema / properties / include_entriesAdded value: +{ + "description": "Set false to return guide metadata without the ranked entry blurbs (default true)", + "type": "boolean" +}
- Changed
find_similar1 field changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)."
- Changed
get_restaurant1 field changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)."
- Changed
guide_consensus1 field changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)."
- Changed
search_restaurants4 fields changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)." - changed
Input schema / properties / lat / descriptionPrevious value: -"Latitude for proximity search"New value: +"Latitude for proximity search. Must be given together with lng; radius_km defaults to 5 km when omitted. A location outside the NYC coverage area is rejected with an error." - changed
Input schema / properties / lng / descriptionPrevious value: -"Longitude for proximity search"New value: +"Longitude for proximity search. Must be given together with lat; radius_km defaults to 5 km when omitted." - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Search radius in kilometres"New value: +"Search radius in kilometres (default 5 when lat/lng are given without it). Requires lat and lng."
- Changed
top_rated4 fields changed- changed
Input schema / properties / city / descriptionPrevious value: -"City slug, always required. Currently 'new-york'."New value: +"City slug, always required. Currently 'new-york', covering the five boroughs plus the immediate metro (within 30 km of Manhattan)." - changed
Input schema / properties / lat / descriptionPrevious value: -"Latitude for proximity search"New value: +"Latitude for proximity search. Must be given together with lng; radius_km defaults to 5 km when omitted. A location outside the NYC coverage area is rejected with an error." - changed
Input schema / properties / lng / descriptionPrevious value: -"Longitude for proximity search"New value: +"Longitude for proximity search. Must be given together with lat; radius_km defaults to 5 km when omitted." - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Search radius in kilometres"New value: +"Search radius in kilometres (default 5 when lat/lng are given without it). Requires lat and lng."
8 tool updates
- First observed
compare_restaurants - First observed
find_guides - First observed
find_similar - First observed
get_restaurant - First observed
guide_consensus - First observed
search_restaurants - First observed
submit_feedback - First observed
top_rated
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1624 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npmMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.