Skip to main content
Glama

Server Details

Anonymous, read-only cross-venue discovery of partner-approved venues, cities, destinations.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 45 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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 tools
destination_eventsSearch a destination's events by nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
areaNoArea name or slug; destination_overview lists them.
limitNoMaximum number of items to return.
queryNoWords matched in any order against event names and descriptions.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
to_dateNoISO date; omit to_date for everything upcoming (recommended for "coming up").
categoryNoCategory name or slug; destination_overview lists them.
from_dateNoISO date; defaults to today.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 nameA
Read-onlyIdempotent
Inspect

Answer a question about a named destination from its published FAQs; omit query to read them all.

NameRequiredDescriptionDefault
limitNoMaximum number of items to return.
queryNoText to match in question/answer.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoEntries per page; omit for the server's short default.
queryNoText to match in guide title/body.
topicNoGuide topic; omit for all.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
areaNoArea name or slug; destination_overview lists them.
tagsNoTag slugs; only listings carrying ALL are returned.
limitNoMaximum number of items to return.
queryNoWords matched in any order against listing names, descriptions, tags and categories.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
categoryNoCategory name or slug; destination_overview lists them.
languageNoLanguage code (e.g. 'en', 'es'); defaults to the destination's.
radius_kmNoSearch radius in km around near_listing_id; a larger value is reduced to the server maximum.
listing_idNoOne 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.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.
near_listing_idNoA listing id; returns listings within radius_km, nearest first, each with distance_km.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
areaNoArea name or slug; destination_overview lists them.
limitNoMaximum number of items to return.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
categoryNoCategory name or slug; destination_overview lists them.
valid_onNoISO date an offer must be valid on (valid_from to valid_through, inclusive); defaults to today.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 slugA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 nameA
Read-onlyIdempotent
Inspect

Get a named destination's best time to visit, weather and wildlife seasons (e.g. whale watching), month by month.

NameRequiredDescriptionDefault
monthNo1-12; omit for all twelve.
interestNoAn activity or season, e.g. whales; keeps the months whose highlights or notes mention it.
destinationYesDestination name or slug, e.g. 'Los Cabos'; list_cities names them.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 resultA
Read-onlyIdempotent
Inspect

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".

NameRequiredDescriptionDefault
idYesAn id exactly as search returned it.

Output Schema

NameRequiredDescription
idNo
urlNo
textNo
titleNo
reasonNo
sampleNo
statusYes
metadataNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 citiesA
Read-onlyIdempotent
Inspect

List the cities that have published restaurants and bars. Travel destinations such as Los Cabos are not cities here; read one with destination_overview.

NameRequiredDescriptionDefault
limitNoMaximum number of items to return.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

search_menusSearch menus across venuesA
Read-onlyIdempotent
Inspect

Find dishes across all venues by text, city, dietary tags or allergens to avoid. Each item is tagged with its venue, so one call compares venues; for one named venue use venue_menu.

NameRequiredDescriptionDefault
cityNoOnly return items from venues in this city (case-insensitive); call list_cities for the exact values.
limitNoMaximum number of items to return.
queryNoText matched in item name, description, section and menu names; every word must match; connector words (and, with, in) aren't required.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
allergensNoExclude items that declare any of these allergens (spelling-insensitive; synonyms match: milk, lactose and dairy all match dairy; pass one term).
max_priceNoOnly items priced at or under this, in the menu's currency.
dietary_tagsNoRequire ALL of these dietary tags (case- and separator-insensitive).

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4.4/5.0
Behavior4/5

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 genuinely useful behavior beyond that: every returned item is tagged with its venue, which is what makes single-call cross-venue comparison valid. It stops short of describing ordering or pagination mechanics, which the schema partly covers via cursor/next_cursor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first states scope, the second states the comparison benefit and the alternative tool. No filler, and the differentiator is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not be explained, and all seven parameters are optional and fully documented in the schema. The description covers purpose and the sibling alternative adequately; the only mild gap is that it does not state what an unfiltered call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the main filter axes (text, city, dietary tags, allergens) but adds no syntax, matching semantics, or defaults beyond what the schema already documents (match-all-words, synonym handling, currency, max item counts).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (find) and resource (dishes across all venues) and enumerates the discovery axes (text, city, dietary tags, allergens). It also names the sibling it is not (venue_menu) and explains the cross-venue comparison intent, so an agent can distinguish it from venue_menu and search_venues without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit routing rule: multi-venue comparison here, "for one named venue use venue_menu." The city parameter description further points to list_cities for valid values, giving the agent a concrete dependency to resolve before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_venuesSearch venuesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
atNoA local time (20:00 or 8pm); requires open_on.
cityNoHARD filter: only venues in this city (case-insensitive); call list_cities for the exact values this directory knows.
nearNoHARD filter: only venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded.
avoidNoSOFT: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped.
limitNoMaximum number of items to return.
queryNoONE 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.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
facetsNoHARD 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.
cuisineNoHARD filter: only venues with this cuisine (case-insensitive exact match; a miss's reason lists the valid values).
open_onNoHARD 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_nowNoSet true = open at this moment, not later today (venue local time); for tonight use open_on=today with at; omit otherwise.
radius_kmNoSearch radius in km around 'near' (default applied when omitted).
price_bandNoHARD filter: only venues in this price band, e.g. '$$'.
neighbourhoodNoHARD filter: only venues in this neighbourhood (case-insensitive exact match; a miss's reason lists the valid values).
prefer_facetsNoSOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped.
prefer_cuisineNoSOFT: venues of these cuisines rank higher; non-matches are NOT dropped.
accepts_reservationsNoSet true to require venues that take reservations (a booking link or a live booking tool); omit otherwise.
prefer_neighbourhoodNoSOFT: venues in these neighbourhoods rank higher; non-matches are NOT dropped.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
cityNoThe city the question was about; a city name only, never an address.
kindYesWhat the report is about.
toolNoThe Yenta tool the report is about, if any.
modelNoThe model sending the report, e.g. its model id.
clientNoThe app or agent the model runs in.
messageYesThe report itself, in plain words.
purposeNoWhat the person was trying to do, in one short sentence.
subjectNoThe venue, destination or city the report is about, if any.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
cityNoDisambiguate a name by city (call list_cities); ignored for a slug.
limitNoMaximum number of items to return.
venueYesVenue name or slug; call search_venues to discover one.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
to_dateNoISO date; omit to_date for everything upcoming (recommended for "coming up").
from_dateNoISO date; defaults to the venue's own local today, or to today UTC if it publishes no timezone.
event_typeNoExact event_type spelling from published events.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 nameA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
cityNoDisambiguate a name by city (call list_cities); ignored for a slug.
limitNoMaximum number of items to return.
queryNoText to match against questions and answers.
venueYesVenue name or slug; call search_venues to discover one.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_menuA venue's menu by nameA
Read-onlyIdempotent
Inspect

Find dishes at a named venue, e.g. venue="Acme Bistro", dietary_tags=["vegan"], allergens=["milk"]. Filter by text, tags, allergens or max_price; unfiltered, item lists its dietary tags, example dishes and allergen counts. If not available, check the capabilities venue_profile lists; the venue may not publish this.

NameRequiredDescriptionDefault
cityNoDisambiguate a name by city (call list_cities); ignored for a slug.
limitNoMaximum number of items to return.
queryNoText matched in item name, description, section and menu names; every word must match; connector words (and, with, in) aren't required.
venueYesVenue name or slug; call search_venues to discover one.
cursorNoNumber of items to skip; pass `next_cursor` from the previous page.
allergensNoExclude items declaring any of these allergens (case- and separator-insensitive (gluten free = gluten-free); synonyms match: milk, lactose and dairy all match dairy; pass one term).
max_priceNoOnly items priced at or under this, in the menu's currency.
dietary_tagsNoA JSON array, e.g. ["gluten-free"]: items must carry ALL of these tags; case- and separator-insensitive (gluten free = gluten-free).

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive and closed-world, so safety is covered. The description adds real behavioral context beyond that: the default (unfiltered) response shape lists dietary tags, example dishes and allergen counts, and it discloses that a venue may simply not publish a menu. It stops short of describing pagination behavior, which the cursor param implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and example, with no filler. The middle clause ('unfiltered, item lists its dietary tags, example dishes and allergen counts') is compressed to the point of being slightly telegraphic, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 filters, the unfiltered default, and the unavailable-data case. The main residual gap is that it never distinguishes this from search_menus, leaving the agent to infer which lookup surface to choose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema carries the parameter burden. The description restates the filter set and shows example values for venue/dietary_tags/allergens, which is mildly reinforcing but adds no syntax or semantics beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find dishes at a named venue') and immediately grounds it with a concrete example call, which separates it from the cross-venue search_menus sibling. An agent can tell what this 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a worked usage example and enumerates the filter axes (text, tags, allergens, max_price), plus a fallback path when data is unavailable ('check the capabilities venue_profile lists'). It does not explicitly contrast with search_menus or say when a broader search is preferable, so it falls short of a full when/when-not statement.

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 slugA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
cityNoDisambiguate a name by city (call list_cities); ignored for a slug.
venueYesVenue name or slug; call search_venues to discover one.

Output Schema

NameRequiredDescription
itemNo
itemsNo
reasonNo
sampleNo
sourceNo
statusYes
paginationNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updates
    • Changeddestination_listings1 field changed
      • changedInput schema / properties / listing_id / description
        Previous 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."
    • Addedsend_feedback
  2. 26 tool updates
    • Changeddestination_events43 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / area / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / area / description
        Previous value: -"Area slug from destination_facets."New value: +"Area name or slug; destination_overview lists them."
      • addedInput schema / properties / area / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / category / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / category / description
        Previous value: -"Category slug from destination_facets."New value: +"Category name or slug; destination_overview lists them."
      • addedInput schema / properties / category / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / destination / maxLength
        Added value: +256
      • removedInput schema / properties / from_date / anyOf
        Removed value: -[
        -  {
        -    "format": "date",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / from_date / format
        Added value: +"date"
      • addedInput schema / properties / from_date / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / query
        Added value: +{
        +  "default": null,
        +  "description": "Words matched in any order against event names and descriptions.",
        +  "maxLength": 256,
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedInput schema / properties / to_date / anyOf
        Removed value: -[
        -  {
        -    "format": "date",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / to_date / description
        Previous value: -"ISO date; open-ended if omitted."New value: +"ISO date; omit to_date for everything upcoming (recommended for \"coming up\")."
      • addedInput schema / properties / to_date / format
        Added value: +"date"
      • addedInput schema / properties / to_date / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Removeddestination_facets
    • Changeddestination_faq32 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / destination / maxLength
        Added value: +256
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Changeddestination_guide34 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / cursor
        Added value: +{
        +  "default": 0,
        +  "description": "Number of items to skip; pass `next_cursor` from the previous page.",
        +  "maximum": 10000,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / destination / maxLength
        Added value: +256
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": null,
        +  "description": "Entries per page; omit for the server's short default.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Removeddestination_listing
    • Changeddestination_listings49 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / area / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / area / description
        Previous value: -"Area slug from destination_facets."New value: +"Area name or slug; destination_overview lists them."
      • addedInput schema / properties / area / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / category / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / category / description
        Previous value: -"Category slug from destination_facets."New value: +"Category name or slug; destination_overview lists them."
      • addedInput schema / properties / category / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / destination / maxLength
        Added value: +256
      • removedInput schema / properties / language / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / language / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / listing_id
        Added 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"
        +  ]
        +}
      • removedInput schema / properties / near_listing_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / near_listing_id / description
        Previous 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."
      • addedInput schema / properties / near_listing_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / query / description
        Previous value: -"Text to match listing names/descriptions."New value: +"Words matched in any order against listing names, descriptions, tags and categories."
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / radius_km / anyOf
        Removed value: -[
        -  {
        -    "maximum": 50,
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / radius_km / maximum
        Added value: +50
      • addedInput schema / properties / radius_km / minimum
        Added value: +0
      • addedInput schema / properties / radius_km / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Addeddestination_offers
    • Changeddestination_overview29 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / destination / maxLength
        Added value: +256
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Addeddestination_seasonality
    • Removedfacet_vocabulary
    • Addedfetch
    • Removedget_destination
    • Removedget_venue
    • Removedget_venues
    • Changedlist_cities27 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Changedsearch26 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / city
        Removed 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."
        -}
      • removedInput schema / properties / cursor
        Removed value: -{
        -  "default": 0,
        -  "description": "Number of items to skip; pass `next_cursor` from the previous page.",
        -  "maximum": 10000,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / kind
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "enum": [
        -        "venue",
        -        "destination"
        -      ],
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Scope to 'venue' or 'destination'; omit to return both, each tagged kind."
        -}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 20,
        -  "description": "Maximum number of items to return.",
        -  "maximum": 50,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / query / default
        Removed value: -null
      • changedInput schema / properties / query / description
        Previous value: -"Match venue names/descriptions and destination names; omit for all."New value: +"A name or keywords, e.g. 'whale watching' or 'Acme Bistro'."
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +"string"
      • addedInput schema / required
        Added value: +[
        +  "query"
        +]
      • removedOutput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / description
        Previous 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."
      • removedOutput schema / properties / item
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Item"
        -}
      • removedOutput schema / properties / items
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Items"
        -}
      • removedOutput schema / properties / pagination
        Removed 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
        -}
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +"string"
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "title",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / sample
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Sample"
        -}
      • removedOutput schema / properties / source
        Removed 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"
        -}
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • changedOutput schema / required
        Previous value: -[
        -  "status"
        -]New value: +[
        +  "results"
        +]
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Removedsearch_destinations
    • Changedsearch_menus35 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / allergens / description
        Previous 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)."
      • removedInput schema / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / max_price
        Added value: +{
        +  "default": null,
        +  "description": "Only items priced at or under this, in the menu's currency.",
        +  "maximum": 1000000,
        +  "minimum": 0,
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / query / description
        Previous 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."
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Changedsearch_venues66 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / accepts_reservations / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / accepts_reservations / description
        Previous 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."
      • addedInput schema / properties / accepts_reservations / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / at / anyOf
        Removed value: -[
        -  {
        -    "format": "time",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / at / description
        Previous 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."
      • addedInput schema / properties / at / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / avoid / description
        Previous 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."
      • removedInput schema / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / city / description
        Previous 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."
      • addedInput schema / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / cuisine / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / cuisine / description
        Previous 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)."
      • addedInput schema / properties / cuisine / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / facets / description
        Previous 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."
      • removedInput schema / properties / near / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / near / description
        Previous 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."
      • addedInput schema / properties / near / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / neighbourhood / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / neighbourhood / description
        Previous 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)."
      • addedInput schema / properties / neighbourhood / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / open_now / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / open_now / description
        Previous 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."
      • addedInput schema / properties / open_now / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / open_on / anyOf
        Previous 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"
        +  }
        +]
      • changedInput schema / properties / open_on / description
        Previous 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."
      • changedInput schema / properties / prefer_cuisine / description
        Previous 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."
      • changedInput schema / properties / prefer_facets / description
        Previous 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."
      • changedInput schema / properties / prefer_neighbourhood / description
        Previous 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."
      • removedInput schema / properties / price_band / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / price_band / description
        Previous value: -"Only return venues in this price band, e.g. '$$' (case-insensitive)."New value: +"HARD filter: only venues in this price band, e.g. '$$'."
      • addedInput schema / properties / price_band / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / query / description
        Previous 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."
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / radius_km / anyOf
        Removed value: -[
        -  {
        -    "maximum": 50,
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / radius_km / maximum
        Added value: +50
      • addedInput schema / properties / radius_km / minimum
        Added value: +0
      • addedInput schema / properties / radius_km / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Removedvenue_dietary_options
    • Addedvenue_events
    • Changedvenue_faq34 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / city / maxLength
        Added value: +256
      • addedInput schema / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / query / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 256,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / query / maxLength
        Added value: +256
      • addedInput schema / properties / query / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / venue / maxLength
        Added value: +256
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
    • Removedvenue_links
    • Addedvenue_menu
    • Removedvenue_menu_search
    • Changedvenue_profile31 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / city / maxLength
        Added value: +256
      • addedInput schema / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / venue / maxLength
        Added value: +256
      • removedOutput schema / properties / item / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / item / default
        Removed value: -null
      • removedOutput schema / properties / item / title
        Removed value: -"Item"
      • addedOutput schema / properties / item / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / items / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / items / default
        Removed value: -null
      • removedOutput schema / properties / items / title
        Removed value: -"Items"
      • addedOutput schema / properties / items / type
        Added value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / pagination / anyOf
        Removed 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"
        -  }
        -]
      • removedOutput schema / properties / pagination / default
        Removed value: -null
      • addedOutput schema / properties / pagination / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / default
        Removed value: -null
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • addedOutput schema / properties / reason / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sample / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sample / default
        Removed value: -null
      • removedOutput schema / properties / sample / title
        Removed value: -"Sample"
      • addedOutput schema / properties / sample / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / source / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / source / description
        Removed 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."
      • removedOutput schema / properties / source / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / properties / source / required
        Removed value: -[
        -  "content_version",
        -  "source"
        -]
      • removedOutput schema / properties / source / title
        Removed value: -"SourceReference"
      • removedOutput schema / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / title
        Removed value: -"PublicResponse"
  3. 21 tool updates
    • Changeddestination_events1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_facets1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_faq2 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_guide2 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_listing1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_listings5 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / radius_km / anyOf
        Previous value: -[
        -  {
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 50,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / radius_km / description
        Previous 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."
      • addedInput schema / properties / tags / maxItems
        Added value: +8
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changeddestination_overview1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedfacet_vocabulary1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedget_destination1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedget_venue1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedget_venues2 fields changed
      • addedInput schema / properties / include / items / enum
        Added value: +[
        +  "attributes",
        +  "dietary",
        +  "hours",
        +  "menu_summary"
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedlist_cities1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedsearch2 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedsearch_destinations2 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedsearch_menus4 fields changed
      • addedInput schema / properties / allergens / maxItems
        Added value: +8
      • addedInput schema / properties / dietary_tags / maxItems
        Added value: +8
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedsearch_venues3 fields changed
      • addedInput schema / properties / near / examples
        Added value: +[
        +  "19.0413,-98.2062"
        +]
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedvenue_dietary_options1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedvenue_faq2 fields changed
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedvenue_links1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedvenue_menu_search4 fields changed
      • addedInput schema / properties / allergens / maxItems
        Added value: +8
      • addedInput schema / properties / dietary_tags / maxItems
        Added value: +8
      • changedInput schema / properties / query / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
    • Changedvenue_profile1 field changed
      • addedOutput schema / properties / sample
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sample"
        +}
  4. 21 tool updates
    • First observeddestination_events
    • First observeddestination_facets
    • First observeddestination_faq
    • First observeddestination_guide
    • First observeddestination_listing
    • First observeddestination_listings
    • First observeddestination_overview
    • First observedfacet_vocabulary
    • First observedget_destination
    • First observedget_venue
    • First observedget_venues
    • First observedlist_cities
    • First observedsearch
    • First observedsearch_destinations
    • First observedsearch_menus
    • First observedsearch_venues
    • First observedvenue_dietary_options
    • First observedvenue_faq
    • First observedvenue_links
    • First observedvenue_menu_search
    • First observedvenue_profile

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables 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.
    2
    22
    164 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources