Yenta Directory
Server Details
Anonymous, read-only cross-venue discovery of partner-approved venues, cities, destinations.
- Status
- Healthy
- Uptime
- 100.0% over 45 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 17 tools
The tools separate cleanly by scope: destination_* for destination pages, venue_* for one venue, and search tools for broad discovery. Some discovery overlap remains between search, search_venues, and destination_listings, but descriptions explicitly steer between them.
Most tools follow predictable snake_case patterns, especially destination_* and venue_* resource groups, plus search_* tools. A few outliers such as fetch, list_cities, and send_feedback use different verb/scope conventions, but the set remains readable.
Seventeen tools is slightly heavy but justified by the domain: destinations, venues, menus, events, FAQs, offers, search, fetch, and feedback all need representation. No obvious duplicate tool bloats the count.
The read-only directory surface is broad and covers core destination and venue discovery, including menus, events, offers, guides, seasonality, FAQs, fetch, and feedback. Minor gaps remain around broad cross-entity event/offer search, but most workflows are supported.
Available Tools
17 toolsdestination_eventsSearch a destination's events by nameARead-onlyIdempotentInspect
Find what is on in a named destination: events from today onwards. A recurring event's dates are its series span, so read its recurrence. Results carry booking_url, the partner's booking page when present, and canonical_url, the destination's page.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area name or slug; destination_overview lists them. | |
| limit | No | Maximum number of items to return. | |
| query | No | Words matched in any order against event names and descriptions. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| to_date | No | ISO date; omit to_date for everything upcoming (recommended for "coming up"). | |
| category | No | Category name or slug; destination_overview lists them. | |
| from_date | No | ISO date; defaults to today. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/non-destructive/closed-world, so the bar is lower. The description adds real value beyond them: that a recurring event's dates represent the series span and the agent should read recurrence, plus what booking_url and canonical_url represent. This is useful behavioral context not in the annotations.
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, tightly written and front-loaded with the core purpose, with no wasted filler. The recurrence caveat and return-field notes are dense but earn their place; slightly compressed phrasing is the only knock.
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 rich annotations, a full output schema, and 100% parameter coverage, the description only needs to add the non-obvious semantics (recurrence span, return field meanings), which it does. The missing piece is explicit sibling routing, but that is a minor gap in an otherwise complete definition.
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 all eight parameters are fully documented in the schema, including the from_date/to_date defaults and cursor semantics. The description adds no parameter format or filtering detail beyond the schema, so 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 and resource ('Find what is on in a named destination: events from today onwards') and implicitly contrasts with the venue-scoped sibling venue_events via the 'destination' framing. An agent can tell what it returns 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?
'Events from today onwards' implies the default temporal scope, and the note on reading recurrence gives usage context for recurring events. However, it never names the alternative (venue_events) or states when to prefer destination-level vs venue-level search, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_faqDestination FAQ by nameARead-onlyIdempotentInspect
Answer a question about a named destination from its published FAQs; omit query to read them all.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| query | No | Text to match in question/answer. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds only that results come from 'published FAQs'; it says nothing about pagination behavior, result limits, or what happens when a destination has no FAQ entry, which would be genuinely useful context.
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 sentence with the primary behavior first and the null-query special case second; no filler and nothing redundant.
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?
An output schema exists, so return values need not be explained, and the required destination parameter is described in-schema with a pointer to list_cities. The definition is nearly complete, missing only minor operational detail such as whether a query with no match returns an empty list.
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 limit/cursor/query/destination are all documented, and the schema already shows query defaults to null. The description's 'omit query' note restates the schema default rather than adding format or matching semantics, so 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 ('Answer a question about a named destination from its published FAQs') and explicitly covers the no-query case, which cleanly separates it from the sibling venue_faq and from destination_guide/overview.
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 'omit query to read them all' clause gives clear conditional usage for the query parameter. It stops short of naming the alternative sibling (venue_faq) or stating when a destination FAQ is preferable to destination_guide, so routing between siblings is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_guideDestination guides by nameARead-onlyIdempotentInspect
Read a named destination's travel guides: weather, getting here, transport, entry requirements, safety and more. Pass topic (from destination_overview guide_topics) to read one subject; page with cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Entries per page; omit for the server's short default. | |
| query | No | Text to match in guide title/body. | |
| topic | No | Guide topic; omit for all. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety/idempotency profile is fully structured. The description adds useful interaction context (topic narrowing, cursor pagination), but does not disclose rate limits, auth requirements, or result-size behavior beyond what annotations and schema cover.
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 dense sentences, front-loaded with what the tool returns, then the optional topic filter and paging mechanics. No redundancy or filler; every clause earns its place.
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 tool has an output schema, so return-value explanation is not required. The description covers purpose, the topic relationship to destination_overview, and pagination with cursor/next_cursor. Given five parameters and multiple sibling destination tools, it is nearly complete, though it could briefly note the default-limit behavior for an agent orchestrating pagination.
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 every parameter is already documented in the schema (topic enum, query, cursor, limit, destination). The description mentions topic and cursor usage but adds no format details beyond the schema; baseline 3 is appropriate when the schema carries the parameter 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?
States a specific verb (Read) and resource (a named destination's travel guides), then enumerates the concrete content areas (weather, getting here, transport, entry requirements, safety). This distinguishes it from destination_overview, destination_events, destination_faq, and the other destination_* siblings by specifying it returns guide content, not events/FX/offers.
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 usage: pass topic (sourced from destination_overview guide_topics) to read one subject; page with cursor. It explains the relationship to destination_overview for topic discovery and how to paginate, but it does not state when NOT to use it or name a specific alternative for bulk guide listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_listingsSearch a destination's listings by nameARead-onlyIdempotentInspect
Find places to stay, eat and visit in a named destination by text, category, area or tags. Every query word matches, in any order; each business appears once (also_listed_as) with a snippet and map_url, so call it again with listing_id for the full text. An unknown filter value's reason lists the valid ones.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area name or slug; destination_overview lists them. | |
| tags | No | Tag slugs; only listings carrying ALL are returned. | |
| limit | No | Maximum number of items to return. | |
| query | No | Words matched in any order against listing names, descriptions, tags and categories. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| category | No | Category name or slug; destination_overview lists them. | |
| language | No | Language code (e.g. 'en', 'es'); defaults to the destination's. | |
| radius_km | No | Search radius in km around near_listing_id; a larger value is reduced to the server maximum. | |
| listing_id | No | One listing's id from a previous result: returns its full detail in item, ignoring the other filters; read a live linked_venue_slug with the venue_* tools, whose answer carries its booking link. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. | |
| near_listing_id | No | A listing id; returns listings within radius_km, nearest first, each with distance_km. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: deduplication ('each business appears once (also_listed_as)'), what a result row contains (snippet, map_url), and that error responses enumerate valid filter values. It stops short of describing pagination or result-set size behavior.
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, no filler, and the core purpose plus match semantics are front-loaded before the follow-up-call and error notes. Every clause carries operational information.
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 an output schema present, the description needn't explain return values, yet it still sketches the row shape (snippet, map_url, also_listed_as). For an 11-parameter tool it covers search semantics, dedup, and error handling well; the remaining gap is sibling routing guidance, which matters given five overlapping search tools.
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 still adds real meaning the schema leaves ambiguous: 'Every query word matches, in any order' pins down AND semantics for the multi-word query, and the listing_id re-call path clarifies that this is a detail-retrieval mode rather than a filter combination.
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 with scope: 'Find places to stay, eat and visit in a named destination by text, category, area or tags.' An agent immediately knows this is a destination-scoped listing search. It does not, however, name or distinguish itself from plausible siblings like search_venues, search, or destination_overview, which an agent may hesitate between.
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 follow-up path ('call it again with listing_id for the full text') and hints at error recovery ('an unknown filter value's reason lists the valid ones'). It does not say when this tool should be chosen over search_venues or destination_overview, nor what preconditions (e.g. needing a destination slug from list_cities) apply, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_offersSearch a destination's offers by nameARead-onlyIdempotentInspect
Find a named destination's current deals and packages, with the partner booking link. Only offers valid on valid_on (today by default) are returned. Results carry booking_url, the partner's booking page when present, and canonical_url, the destination's page.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area name or slug; destination_overview lists them. | |
| limit | No | Maximum number of items to return. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| category | No | Category name or slug; destination_overview lists them. | |
| valid_on | No | ISO date an offer must be valid on (valid_from to valid_through, inclusive); defaults to today. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral detail beyond that: results are filtered to offers valid on valid_on (defaulting to today), and booking_url is only present for partners that have one, which warns the agent the field may be missing.
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 sentences, front-loaded with what is returned and immediately followed by the validity filter. The final sentence describing booking_url and canonical_url partially duplicates the output schema, keeping it just shy of a 5.
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 an output schema present, the description needn't enumerate return values, and annotations plus full schema coverage handle safety and parameter detail. The remaining gap is routing guidance against the many destination_* siblings, which the description does not address.
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 all six parameters (including area/category slugs and cursor pagination) are already documented in the schema. The description restates the valid_on behavior but adds no syntax, format, or interaction detail beyond it, 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 and resource ('Find a named destination's current deals and packages') plus the linkage to the partner booking link, which is enough to distinguish it from destination_events or destination_listings by resource type. It does not explicitly name a sibling or contrast scope, so it falls short of a 5.
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 implies the use case (look up current deals for a destination) and notes the validity filter, but never says when to prefer this over destination_overview, destination_listings, or the venue_* siblings. No exclusions or prerequisites are given, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_overviewDestination overview by name or slugARead-onlyIdempotentInspect
One call answers what a destination offers and what's on: counts, a few places, next events and guide topics. It counts offers, seasonality and FAQs too, and names the categories and areas listings, events and offers filter by. preview.complete is false when destination_listings / destination_events hold more.
| Name | Required | Description | Default |
|---|---|---|---|
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/non-open-world, so safety is covered. The description adds genuinely new behavioral facts the annotations don't carry: results are a partial preview ('a few places'), and truncation is signalled through preview.complete being false when destination_listings/destination_events hold more. That truncation contract is the key thing an agent needs to know.
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 dense sentences with the capabilities front-loaded and zero boilerplate; the truncation caveat sits at the end where it belongs. The middle clause ('It counts offers, seasonality and FAQs too') is list-heavy and slightly redundant with the first sentence, which keeps it from a 5.
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 an output schema present, return values need no explanation, and annotations cover the safety profile. The description covers scope, contents, and the truncation signal — enough for an agent to call it correctly — with only the sibling-selection guidance left implicit.
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?
Only one parameter and schema coverage is 100%; the schema itself documents that it accepts a name or slug and points at list_cities for discovery. The description adds no syntax, format, or resolution-order detail beyond that, so 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?
The description says concretely what the call returns — counts, a few places, next events, guide topics, plus offer/seasonality/FAQ counts and the category/area facets listings, events and offers filter by. That content inventory implicitly distinguishes it from the single-facet siblings (destination_events, destination_offers, destination_seasonality). It never states the core verb+resource as plainly as the title does ('Overview of a destination'), so it lands just short of a 5.
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 line 'preview.complete is false when destination_listings / destination_events hold more' implies a routing rule: start here for a summary, go to those tools when the preview is truncated. But it's phrased as a return-value note rather than an explicit 'use this tool when…' instruction, and no sibling is named as an alternative for the common case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_seasonalityDestination seasonality by nameARead-onlyIdempotentInspect
Get a named destination's best time to visit, weather and wildlife seasons (e.g. whale watching), month by month.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | 1-12; omit for all twelve. | |
| interest | No | An activity or season, e.g. whales; keeps the months whose highlights or notes mention it. | |
| destination | Yes | Destination name or slug, e.g. 'Los Cabos'; list_cities names them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, non-destructive and non-open-world, so the safety profile is covered. The description adds that results are month-by-month and cover weather and wildlife seasons, which is useful domain context. It doesn't disclose pagination, response completeness, or error behavior, but with an output schema present that burden is reduced.
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, front-loaded sentence with no waste. The key resource and scope (best time, weather, wildlife, month by month) are immediately clear.
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 read-only lookup with an output schema and 100% param coverage, the description is largely sufficient. It could add explicit routing to sibling tools or note how interest interacts with month, but nothing critical is missing for correct 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 schema already documents destination, month, and interest with examples and semantics. The description adds little param-level detail beyond restating month-by-month behavior. Baseline 3 is appropriate when the schema does the heavy lifting.
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 (get) and resource (named destination's best time to visit, weather and wildlife seasons), and scopes it month by month. Among siblings like destination_events, destination_faq, destination_guide, it clearly carves out the seasonality/timing niche.
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?
Implies use when you want seasonal timing for a named destination, but gives no explicit when-to-use or when-not-to-use guidance, and doesn't route to alternatives like destination_overview or destination_guide. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch a search resultARead-onlyIdempotentInspect
Read a search result's full page: a restaurant's menu, dietary options, hours and events, or a destination's. Returns Markdown text with its citable url. Ids look like "venue:acme-bistro", "destination:los-cabos" or "listing:los-cabos:1234".
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An id exactly as search returned it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| text | No | |
| title | No | |
| reason | No | |
| sample | No | |
| status | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the description only needs to add context. It does so by disclosing the return medium (Markdown text) and that the page carries a citable URL, though it says nothing about error behavior for stale or malformed ids.
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 action and payload, followed by id formats. No filler or restatement of the tool name.
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 single-parameter read with 100% schema coverage, an output schema, and full safety annotations, the description supplies what is missing: what content the page contains and what id forms are valid. Only minor gaps remain (behavior on invalid/expired ids, content completeness).
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% and the schema already says the id must match what search returned. The description still earns credit by showing the concrete id shapes ("venue:acme-bistro", "destination:los-cabos", "listing:los-cabos:1234"), which is genuinely useful formatting detail beyond the schema.
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 ("Read a search result's full page") and enumerates the content types it yields (menu, dietary options, hours/events, destination page). It does not explicitly contrast itself with siblings like venue_menu or destination_overview, so the boundary is implied rather than stated.
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?
"A search result's full page" implies this is the follow-up step after search, but there is no explicit when-to-use/when-not guidance and no named alternative for structured sub-resources (e.g., venue_menu) that a caller might prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList citiesARead-onlyIdempotentInspect
List the cities that have published restaurants and bars. Travel destinations such as Los Cabos are not cities here; read one with destination_overview.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context about data scope, namely that only cities with published restaurants and bars are included and travel destinations are excluded. It does not add pagination or auth details, but those are less critical given the annotations and output schema.
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 purpose and followed by the key exclusion rule. Every sentence earns its place with no filler or repetition.
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 tool is simple, the output schema exists, and the annotations cover safety and idempotency. The description supplies the scope and sibling-routing information an agent needs to call it correctly, so it is complete for this context.
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 limit and cursor are clearly documented in the input schema. The description adds no parameter-specific syntax or constraints beyond what the schema already provides. Baseline 3 is appropriate when the schema carries parameter semantics fully.
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: 'List the cities that have published restaurants and bars.' It also distinguishes this tool from destination-oriented siblings by explicitly excluding travel destinations and naming destination_overview as the alternative. An agent can tell what this tool returns 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 an explicit inclusion rule ('cities that have published restaurants and bars'), a clear exclusion ('Travel destinations such as Los Cabos are not cities here'), and a named alternative ('read one with destination_overview'). This is exactly the routing guidance needed to choose between list_cities and destination_overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch everything by nameARead-onlyIdempotentInspect
Search venues, travel destinations and places inside destinations by name or keyword. Returns results of id, title and url; pass an id to fetch for the full page. For filters use search_venues, search_menus or destination_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A name or keywords, e.g. 'whale watching' or 'Acme Bistro'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | |
| status | No | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive) and closed-world semantics, so the description only needs to add operational context. It does add the return shape (id, title, url) and the next-step action (pass an id to fetch for the full page), which is genuinely useful beyond annotations. It does not mention result limits or ranking, a minor gap.
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: scope, return/next-step, then alternative tools. Front-loaded with what it searches and zero filler; each sentence earns its place.
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 one-parameter search tool with an output schema (which handles return details), the description supplies scope, return summary, follow-up (fetch), and sibling routing. Nothing an agent needs to invoke it correctly is missing.
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 single query parameter is already fully documented with examples. The description restates the name/keyword intent but adds no syntax, matching behavior, or formatting guidance beyond the schema. Baseline 3 applies when the schema carries the parameter burden.
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 (search) and resource scope (venues, travel destinations, places inside destinations), and explicitly distinguishes itself from the filtered siblings search_venues, search_menus, and destination_listings. An agent can select it without opening any other 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?
Clearly implies when to use by contrast: 'For filters use search_venues...', which routes filtering needs elsewhere. It does not explicitly state when-not or prerequisites, but the alternative routing is concrete enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_venuesSearch venuesARead-onlyIdempotentInspect
Find restaurants and bars by city, cuisine, opening time or features. Filters are HARD, prefer_* and avoid are SOFT (rank only), and query is ONE keyword. Each result has slug, capabilities, open_now and distance_km; a place inside a destination is not here, use destination_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | A local time (20:00 or 8pm); requires open_on. | |
| city | No | HARD filter: only venues in this city (case-insensitive); call list_cities for the exact values this directory knows. | |
| near | No | HARD filter: only venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded. | |
| avoid | No | SOFT: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped. | |
| limit | No | Maximum number of items to return. | |
| query | No | ONE keyword: a name or cuisine word; for a dish use search_menus. Matched in name, description, cuisine, neighbourhood, city or alternate names; omit to list all. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| facets | No | HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'); types are vibe, good_for, not_good_for, feature, noise_level, view, dress_code, meal_period, cuisine, dietary, accessibility. A venue must match every facet_type given (values OR within a type); a miss EXCLUDES it. | |
| cuisine | No | HARD filter: only venues with this cuisine (case-insensitive exact match; a miss's reason lists the valid values). | |
| open_on | No | HARD filter: only venues open on this weekday, or today/tomorrow in the venue's own timezone (optionally at 'at'); for tonight use open_on=today with at. Venues with no published hours are excluded. | |
| open_now | No | Set true = open at this moment, not later today (venue local time); for tonight use open_on=today with at; omit otherwise. | |
| radius_km | No | Search radius in km around 'near' (default applied when omitted). | |
| price_band | No | HARD filter: only venues in this price band, e.g. '$$'. | |
| neighbourhood | No | HARD filter: only venues in this neighbourhood (case-insensitive exact match; a miss's reason lists the valid values). | |
| prefer_facets | No | SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped. | |
| prefer_cuisine | No | SOFT: venues of these cuisines rank higher; non-matches are NOT dropped. | |
| accepts_reservations | No | Set true to require venues that take reservations (a booking link or a live booking tool); omit otherwise. | |
| prefer_neighbourhood | No | SOFT: venues in these neighbourhoods rank higher; non-matches are NOT dropped. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare safe read-only, idempotent behavior, so the bar is lower. The description adds useful behavioral context: HARD filters exclude, prefer_* and avoid only rank, query matches one keyword, and results include slug, capabilities, open_now, and distance_km.
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, front-loaded with the core purpose, then filter semantics, then result/scope context. Every sentence carries useful information without repetition or filler.
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 an 18-parameter tool with full schema descriptions, rich annotations, and an output schema, the description is complete enough. It covers purpose, hard/soft filter semantics, query behavior, result fields, and the key routing exclusion to destination_listings.
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 schema already documents all 18 parameters. The description still adds a useful cross-parameter distinction by grouping filters as HARD versus prefer_*/avoid as SOFT and clarifying that query is a single keyword.
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 restaurants and bars' with city, cuisine, opening time, or features. It also explicitly distinguishes the tool from destination_listings for places inside a destination, so an agent can identify its scope 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 an explicit when-not-to-use case: places inside a destination belong to destination_listings. It also clarifies hard versus soft filter behavior and that query is one keyword, but it does not explicitly cover other sibling alternatives such as search_menus or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackSend feedback to YentaAInspect
Send Yenta a report: data that is missing or looks wrong, a tool that was hard to use, or anything else. Stored for Yenta's team and never shown publicly; the answer carries a reference. Leave out personal details.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | The city the question was about; a city name only, never an address. | |
| kind | Yes | What the report is about. | |
| tool | No | The Yenta tool the report is about, if any. | |
| model | No | The model sending the report, e.g. its model id. | |
| client | No | The app or agent the model runs in. | |
| message | Yes | The report itself, in plain words. | |
| purpose | No | What the person was trying to do, in one short sentence. | |
| subject | No | The venue, destination or city the report is about, if any. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only signal a non-destructive, non-idempotent write), it discloses the key traits an agent can't infer: the report is stored for Yenta's team, never shown publicly, and returns a reference. The "leave out personal details" instruction is genuine behavioral guidance. It does not say whether repeat submissions create duplicate reports or whether the report is ever answered conversationally.
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 compact sentences, front-loaded with what to report, then the privacy/visibility constraints. No filler, and the most decision-relevant content (what counts as a report) comes first.
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 output schema covers the reference returned, and the description still flags it; annotations cover the safety profile; the privacy note covers the main misuse risk for an 8-parameter write tool. Remaining gap is small: nothing about duplicate submissions or any rate/abuse limit on a non-idempotent mutation.
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 parameters are already fully documented, and the description's category list largely restates the `kind` enum. The one addition is the privacy constraint ("leave out personal details"), which shapes what goes into `message` beyond the schema's length limit – real but marginal added meaning, so baseline 3 fits.
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 sentence pairs a specific verb ("Send ... a report") with the target (Yenta) and enumerates the exact report categories, which map cleanly onto the `kind` enum. The write nature makes it unmistakable against the read-only destination_*/venue_*/search_* siblings, though no sibling is named explicitly.
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?
"data that is missing or looks wrong, a tool that was hard to use, or anything else" gives concrete triggering conditions that align with the enum values. There are no exclusions, however – it never says what should NOT be reported here (e.g. ordinary search questions) or what the alternative channel is.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_eventsSearch a venue's events by nameARead-onlyIdempotentInspect
Find what is on at a named venue: dated events from its local today onwards. Filter by exact event_type if you know it. If not available, check the capabilities venue_profile lists; the venue may not publish this.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| limit | No | Maximum number of items to return. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| to_date | No | ISO date; omit to_date for everything upcoming (recommended for "coming up"). | |
| from_date | No | ISO date; defaults to the venue's own local today, or to today UTC if it publishes no timezone. | |
| event_type | No | Exact event_type spelling from published events. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results are bounded to the venue's local today onward, and event-type data may not exist for a given venue (partial-availability caveat).
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 compact sentences, front-loaded with the purpose and scope, followed by the filter hint and the capability caveat. No padding or repetition.
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?
An output schema exists, so return values need no explanation, and the description covers temporal scope, the event_type caveat, and the fallback to venue_profile. The only gap is that cross-tool routing (venue vs destination events) is left unaddressed.
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 all seven parameters are already documented, including the local-today default and cursor semantics. The description restates the event_type exactness and the temporal floor but adds no syntax or format detail beyond the schema; 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 and resource ("Find what is on at a named venue: dated events") plus a scope ("from its local today onwards"), so the agent knows exactly what is returned. It distinguishes itself from destination-level siblings implicitly via "a named venue" but never names destination_events as the contrasting alternative.
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 conditional guidance for the event_type filter and routes the agent to venue_profile to check whether the venue publishes event types. It does not, however, state when to prefer this tool over destination_events or other discovery tools like search_venues, leaving the primary selection question to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_faqVenue FAQ by nameARead-onlyIdempotentInspect
Answer a question about a named venue from its published FAQs; omit query to read them all. If not available, check the capabilities venue_profile lists; the venue may not publish this.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| limit | No | Maximum number of items to return. | |
| query | No | Text to match against questions and answers. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningful context beyond that: omitting query changes behavior to a full read, and the venue may simply not publish this content, which sets expectations for empty results.
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 compact clauses, front-loaded with the primary action and then the fallback. No filler; every phrase carries information.
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 an output schema present, return values needn't be described, and the description covers the query-optional behavior and the unavailability fallback. It stops short of tying into the city/list_cities disambiguation flow that the schema mentions, but is otherwise sufficient for correct 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 coverage is 100%, so the baseline is 3, but the description adds semantics the schema alone doesn't convey: the absence of query is a deliberate read-all mode, and there is an explicit fallback path when the data isn't published.
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: answering a question about a named venue from its published FAQs. The 'venue' scope distinguishes it from the similarly-shaped destination_faq, though the differentiation is implied by naming rather than stated outright.
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 conditional guidance: omit query to read all FAQs, and fall back to the venue_profile capabilities list if the FAQ isn't available. No explicit when-not or direct sibling comparison, but the operating context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_profileVenue profile by name or slugARead-onlyIdempotentInspect
Get a venue's hours, address, map, phone, booking and links by name or slug, e.g. venue="Acme Bistro". It also holds cuisine, attributes, menu_summary and capabilities (the other venue_* tools that answer for it); hours_summary is ready to quote.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds that hours_summary is 'ready to quote' and that capabilities point at sibling tools, which is useful, but it does not disclose lookup failure behavior (e.g. ambiguous name handling) beyond the schema's city note.
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 front-loaded sentence leads with the verb and resource before the field list. Dense but essentially waste-free, with only the tangled parenthetical slightly harming readability.
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 an output schema present, the description need not explain return values, and it still previews the payload and flags hours_summary as quotable. Combined with full annotation and parameter coverage, an agent has enough to invoke it 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?
Schema description coverage is 100%, so both venue and city are already documented in the schema, including the city disambiguation and slug behavior. The description only echoes the name/slug input with an example, adding no semantics the schema lacks; 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?
Specific verb (Get) plus resource (venue profile) with an enumerated payload: hours, address, map, phone, booking, links. It partially differentiates from siblings by noting the venue_* tools 'that answer for it', though the relationship is stated cryptically rather than contrasted.
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 implies context (retrieve a known venue by name or slug) and parenthetically signals that other venue_* tools resolve against this entity, but it never states when to choose it over search_venues or the other venue_* siblings. The 'call search_venues to discover one' guidance lives in the schema, not the description.
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
destination_listings1 field changed- changed
Input schema / properties / listing_id / descriptionPrevious value: -"One listing's id from a previous result: returns its full detail in item, ignoring the other filters; read a live linked_venue_slug with the venue_* tools and book via its booking link."New value: +"One listing's id from a previous result: returns its full detail in item, ignoring the other filters; read a live linked_venue_slug with the venue_* tools, whose answer carries its booking link."
- Added
send_feedback
26 tool updates
- Changed
destination_events43 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / area / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / area / descriptionPrevious value: -"Area slug from destination_facets."New value: +"Area name or slug; destination_overview lists them." - added
Input schema / properties / area / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / category / descriptionPrevious value: -"Category slug from destination_facets."New value: +"Category name or slug; destination_overview lists them." - added
Input schema / properties / category / typeAdded value: +[ + "string", + "null" +] - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination name or slug; call search_destinations to discover one."New value: +"Destination name or slug, e.g. 'Los Cabos'; list_cities names them." - added
Input schema / properties / destination / maxLengthAdded value: +256 - removed
Input schema / properties / from_date / anyOfRemoved value: -[ - { - "format": "date", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / from_date / formatAdded value: +"date" - added
Input schema / properties / from_date / typeAdded value: +[ + "string", + "null" +] - added
Input schema / properties / queryAdded value: +{ + "default": null, + "description": "Words matched in any order against event names and descriptions.", + "maxLength": 256, + "type": [ + "string", + "null" + ] +} - removed
Input schema / properties / to_date / anyOfRemoved value: -[ - { - "format": "date", - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / to_date / descriptionPrevious value: -"ISO date; open-ended if omitted."New value: +"ISO date; omit to_date for everything upcoming (recommended for \"coming up\")." - added
Input schema / properties / to_date / formatAdded value: +"date" - added
Input schema / properties / to_date / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Removed
destination_facets - Changed
destination_faq32 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination name or slug; call search_destinations to discover one."New value: +"Destination name or slug, e.g. 'Los Cabos'; list_cities names them." - added
Input schema / properties / destination / maxLengthAdded value: +256 - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Changed
destination_guide34 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / cursorAdded value: +{ + "default": 0, + "description": "Number of items to skip; pass `next_cursor` from the previous page.", + "maximum": 10000, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination name or slug; call search_destinations to discover one."New value: +"Destination name or slug, e.g. 'Los Cabos'; list_cities names them." - added
Input schema / properties / destination / maxLengthAdded value: +256 - added
Input schema / properties / limitAdded value: +{ + "default": null, + "description": "Entries per page; omit for the server's short default.", + "maximum": 50, + "minimum": 1, + "type": [ + "integer", + "null" + ] +} - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Removed
destination_listing - Changed
destination_listings49 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / area / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / area / descriptionPrevious value: -"Area slug from destination_facets."New value: +"Area name or slug; destination_overview lists them." - added
Input schema / properties / area / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / category / descriptionPrevious value: -"Category slug from destination_facets."New value: +"Category name or slug; destination_overview lists them." - added
Input schema / properties / category / typeAdded value: +[ + "string", + "null" +] - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination name or slug; call search_destinations to discover one."New value: +"Destination name or slug, e.g. 'Los Cabos'; list_cities names them." - added
Input schema / properties / destination / maxLengthAdded value: +256 - removed
Input schema / properties / language / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / language / typeAdded value: +[ + "string", + "null" +] - added
Input schema / properties / listing_idAdded value: +{ + "default": null, + "description": "One listing's id from a previous result: returns its full detail in item, ignoring the other filters; read a live linked_venue_slug with the venue_* tools and book via its booking link.", + "maxLength": 256, + "type": [ + "string", + "null" + ] +} - removed
Input schema / properties / near_listing_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / near_listing_id / descriptionPrevious value: -"A listing id; returns listings within radius_km, nearest first."New value: +"A listing id; returns listings within radius_km, nearest first, each with distance_km." - added
Input schema / properties / near_listing_id / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / query / descriptionPrevious value: -"Text to match listing names/descriptions."New value: +"Words matched in any order against listing names, descriptions, tags and categories." - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / radius_km / anyOfRemoved value: -[ - { - "maximum": 50, - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / radius_km / maximumAdded value: +50 - added
Input schema / properties / radius_km / minimumAdded value: +0 - added
Input schema / properties / radius_km / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Added
destination_offers - Changed
destination_overview29 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination name or slug; call search_destinations to discover one."New value: +"Destination name or slug, e.g. 'Los Cabos'; list_cities names them." - added
Input schema / properties / destination / maxLengthAdded value: +256 - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Added
destination_seasonality - Removed
facet_vocabulary - Added
fetch - Removed
get_destination - Removed
get_venue - Removed
get_venues - Changed
list_cities27 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Changed
search26 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / cityRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Narrow VENUES to this city (case-insensitive); destinations have no city and are not narrowed by it. Call list_cities for the exact values." -} - removed
Input schema / properties / cursorRemoved value: -{ - "default": 0, - "description": "Number of items to skip; pass `next_cursor` from the previous page.", - "maximum": 10000, - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / kindRemoved value: -{ - "anyOf": [ - { - "enum": [ - "venue", - "destination" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Scope to 'venue' or 'destination'; omit to return both, each tagged kind." -} - removed
Input schema / properties / limitRemoved value: -{ - "default": 20, - "description": "Maximum number of items to return.", - "maximum": 50, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / query / defaultRemoved value: -null - changed
Input schema / properties / query / descriptionPrevious value: -"Match venue names/descriptions and destination names; omit for all."New value: +"A name or keywords, e.g. 'whale watching' or 'Acme Bistro'." - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +"string" - added
Input schema / requiredAdded value: +[ + "query" +] - removed
Output schema / additionalPropertiesRemoved value: -false - changed
Output schema / descriptionPrevious value: -"The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from."New value: +"OpenAI search results: each id can be passed to fetch." - removed
Output schema / properties / itemRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Item" -} - removed
Output schema / properties / itemsRemoved value: -{ - "anyOf": [ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Items" -} - removed
Output schema / properties / paginationRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +"string" - added
Output schema / properties / resultsAdded value: +{ + "items": { + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / sampleRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Sample" -} - removed
Output schema / properties / sourceRemoved value: -{ - "additionalProperties": false, - "description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.", - "properties": { - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } - }, - "required": [ - "content_version", - "source" - ], - "title": "SourceReference", - "type": "object" -} - removed
Output schema / properties / status / titleRemoved value: -"Status" - changed
Output schema / requiredPrevious value: -[ - "status" -]New value: +[ + "results" +] - removed
Output schema / titleRemoved value: -"PublicResponse"
- Removed
search_destinations - Changed
search_menus35 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / allergens / descriptionPrevious value: -"Exclude items that declare any of these allergens (spelling-insensitive)."New value: +"Exclude items that declare any of these allergens (spelling-insensitive; synonyms match: milk, lactose and dairy all match dairy; pass one term)." - removed
Input schema / properties / city / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / city / typeAdded value: +[ + "string", + "null" +] - added
Input schema / properties / max_priceAdded value: +{ + "default": null, + "description": "Only items priced at or under this, in the menu's currency.", + "maximum": 1000000, + "minimum": 0, + "type": [ + "number", + "null" + ] +} - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / query / descriptionPrevious value: -"Text to match against menu item names and descriptions."New value: +"Text matched in item name, description, section and menu names; every word must match; connector words (and, with, in) aren't required." - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Changed
search_venues66 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / accepts_reservations / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Input schema / properties / accepts_reservations / descriptionPrevious value: -"Filter by whether the venue takes reservations (has a live booking tool or a booking link); omit for both."New value: +"Set true to require venues that take reservations (a booking link or a live booking tool); omit otherwise." - added
Input schema / properties / accepts_reservations / typeAdded value: +[ + "boolean", + "null" +] - removed
Input schema / properties / at / anyOfRemoved value: -[ - { - "format": "time", - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / at / descriptionPrevious value: -"A 24-hour HH:MM time; with open_on, require the venue be open then."New value: +"A local time (20:00 or 8pm); requires open_on." - added
Input schema / properties / at / typeAdded value: +[ + "string", + "null" +] - changed
Input schema / properties / avoid / descriptionPrevious value: -"Soft preference: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped."New value: +"SOFT: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped." - removed
Input schema / properties / city / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / city / descriptionPrevious value: -"Only return venues in this city (case-insensitive); call list_cities for the exact values this directory knows."New value: +"HARD filter: only venues in this city (case-insensitive); call list_cities for the exact values this directory knows." - added
Input schema / properties / city / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / cuisine / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / cuisine / descriptionPrevious value: -"Only return venues with this cuisine (case-insensitive exact match)."New value: +"HARD filter: only venues with this cuisine (case-insensitive exact match; a miss's reason lists the valid values)." - added
Input schema / properties / cuisine / typeAdded value: +[ + "string", + "null" +] - changed
Input schema / properties / facets / descriptionPrevious value: -"HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'). A venue must match every facet_type given (values OR within a type, types AND across); a miss EXCLUDES it. Call facet_vocabulary for the legal types and values."New value: +"HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'); types are vibe, good_for, not_good_for, feature, noise_level, view, dress_code, meal_period, cuisine, dietary, accessibility. A venue must match every facet_type given (values OR within a type); a miss EXCLUDES it." - removed
Input schema / properties / near / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / near / descriptionPrevious value: -"Only return venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded."New value: +"HARD filter: only venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded." - added
Input schema / properties / near / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / neighbourhood / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / neighbourhood / descriptionPrevious value: -"Only return venues in this neighbourhood (case-insensitive exact match)."New value: +"HARD filter: only venues in this neighbourhood (case-insensitive exact match; a miss's reason lists the valid values)." - added
Input schema / properties / neighbourhood / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / open_now / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Input schema / properties / open_now / descriptionPrevious value: -"Only return venues open (true) or closed (false) at their own local time now; venues with no timezone or hours are excluded."New value: +"Set true = open at this moment, not later today (venue local time); for tonight use open_on=today with at; omit otherwise." - added
Input schema / properties / open_now / typeAdded value: +[ + "boolean", + "null" +] - changed
Input schema / properties / open_on / anyOfPrevious value: -[ - { - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + "today", + "tomorrow" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / open_on / descriptionPrevious value: -"Only return venues open on this weekday (optionally at 'at'); venues with no published hours are excluded."New value: +"HARD filter: only venues open on this weekday, or today/tomorrow in the venue's own timezone (optionally at 'at'); for tonight use open_on=today with at. Venues with no published hours are excluded." - changed
Input schema / properties / prefer_cuisine / descriptionPrevious value: -"Soft preference: venues of these cuisines rank higher; non-matches are NOT dropped."New value: +"SOFT: venues of these cuisines rank higher; non-matches are NOT dropped." - changed
Input schema / properties / prefer_facets / descriptionPrevious value: -"SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped. Call facet_vocabulary for the legal types and values."New value: +"SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped." - changed
Input schema / properties / prefer_neighbourhood / descriptionPrevious value: -"Soft preference: venues in these neighbourhoods rank higher; non-matches are NOT dropped."New value: +"SOFT: venues in these neighbourhoods rank higher; non-matches are NOT dropped." - removed
Input schema / properties / price_band / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / price_band / descriptionPrevious value: -"Only return venues in this price band, e.g. '$$' (case-insensitive)."New value: +"HARD filter: only venues in this price band, e.g. '$$'." - added
Input schema / properties / price_band / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / query / descriptionPrevious value: -"Text to match against venue names and descriptions; omit to list all."New value: +"ONE keyword: a name or cuisine word; for a dish use search_menus. Matched in name, description, cuisine, neighbourhood, city or alternate names; omit to list all." - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / radius_km / anyOfRemoved value: -[ - { - "maximum": 50, - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / radius_km / maximumAdded value: +50 - added
Input schema / properties / radius_km / minimumAdded value: +0 - added
Input schema / properties / radius_km / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Removed
venue_dietary_options - Added
venue_events - Changed
venue_faq34 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / city / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / city / maxLengthAdded value: +256 - added
Input schema / properties / city / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / query / maxLengthAdded value: +256 - added
Input schema / properties / query / typeAdded value: +[ + "string", + "null" +] - added
Input schema / properties / venue / maxLengthAdded value: +256 - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
- Removed
venue_links - Added
venue_menu - Removed
venue_menu_search - Changed
venue_profile31 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / city / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / city / maxLengthAdded value: +256 - added
Input schema / properties / city / typeAdded value: +[ + "string", + "null" +] - added
Input schema / properties / venue / maxLengthAdded value: +256 - removed
Output schema / properties / item / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / item / defaultRemoved value: -null - removed
Output schema / properties / item / titleRemoved value: -"Item" - added
Output schema / properties / item / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / items / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Output schema / properties / items / defaultRemoved value: -null - removed
Output schema / properties / items / titleRemoved value: -"Items" - added
Output schema / properties / items / typeAdded value: +[ + "array", + "null" +] - removed
Output schema / properties / pagination / anyOfRemoved value: -[ - { - "additionalProperties": false, - "description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.", - "properties": { - "cursor": { - "title": "Cursor", - "type": "integer" - }, - "limit": { - "title": "Limit", - "type": "integer" - }, - "next_cursor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Next Cursor" - }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "limit", - "cursor", - "total" - ], - "title": "Pagination", - "type": "object" - }, - { - "type": "null" - } -] - removed
Output schema / properties / pagination / defaultRemoved value: -null - added
Output schema / properties / pagination / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / reason / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / reason / defaultRemoved value: -null - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - added
Output schema / properties / reason / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / sample / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / properties / sample / defaultRemoved value: -null - removed
Output schema / properties / sample / titleRemoved value: -"Sample" - added
Output schema / properties / sample / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / source / additionalPropertiesRemoved value: -false - removed
Output schema / properties / source / descriptionRemoved value: -"FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite." - removed
Output schema / properties / source / propertiesRemoved value: -{ - "approved_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Approved At" - }, - "content_version": { - "title": "Content Version", - "type": "integer" - }, - "powered_by": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Powered By" - }, - "source": { - "title": "Source", - "type": "string" - } -} - removed
Output schema / properties / source / requiredRemoved value: -[ - "content_version", - "source" -] - removed
Output schema / properties / source / titleRemoved value: -"SourceReference" - removed
Output schema / properties / status / titleRemoved value: -"Status" - removed
Output schema / titleRemoved value: -"PublicResponse"
21 tool updates
- Changed
destination_events1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_facets1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_faq2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_guide2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_listing1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_listings5 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / radius_km / anyOfPrevious value: -[ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 50, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Search radius in km around near_listing_id."New value: +"Search radius in km around near_listing_id; a larger value is reduced to the server maximum." - added
Input schema / properties / tags / maxItemsAdded value: +8 - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_overview1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
facet_vocabulary1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_destination1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_venue1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_venues2 fields changed- added
Input schema / properties / include / items / enumAdded value: +[ + "attributes", + "dietary", + "hours", + "menu_summary" +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
list_cities1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_destinations2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_menus4 fields changed- added
Input schema / properties / allergens / maxItemsAdded value: +8 - added
Input schema / properties / dietary_tags / maxItemsAdded value: +8 - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_venues3 fields changed- added
Input schema / properties / near / examplesAdded value: +[ + "19.0413,-98.2062" +] - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_dietary_options1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_faq2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_links1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_menu_search4 fields changed- added
Input schema / properties / allergens / maxItemsAdded value: +8 - added
Input schema / properties / dietary_tags / maxItemsAdded value: +8 - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_profile1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
21 tool updates
- First observed
destination_events - First observed
destination_facets - First observed
destination_faq - First observed
destination_guide - First observed
destination_listing - First observed
destination_listings - First observed
destination_overview - First observed
facet_vocabulary - First observed
get_destination - First observed
get_venue - First observed
get_venues - First observed
list_cities - First observed
search - First observed
search_destinations - First observed
search_menus - First observed
search_venues - First observed
venue_dietary_options - First observed
venue_faq - First observed
venue_links - First observed
venue_menu_search - First observed
venue_profile
Related MCP Connectors
Find travel places (sights, museums, parks, beaches) and read place cards. Read-only, no auth.
Open places, menus, ratings and booking routes in 119 travel destinations. Read-only, no key needed.
Search and explore a global travel points-of-interest catalog (cities, countries, POIs).
Discover, read and book verified real-world businesses through one endpoint.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables read-only research of public Outsite locations, quoted stay rates, and individual room calendars.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to browse curated city event feeds, retrieve full details for individual events, and list an organizer's public calendar without authentication. It returns only public event metadata, stripping attendee, guest, host, and manager data before responding.73 npmMIT
- AlicenseAqualityAmaintenanceEnables read-only access to B2match event and matchmaking data through tools for events, participants, organisations, opportunities, agenda, sessions, speakers, and authenticated meeting, schedule, conversation, and notification workflows. Supports anonymous public queries and secure local token-based access.222164 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to browse public event listings from explore pages and fetch full detail for a single event — titles, descriptions, times, locations, host display names, and aggregate RSVP counts — across eight supported city regions. Keyless and read-only, with no guest lists, contact info, or authentication required.73 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.