Yenta Directory
Server Details
Anonymous, read-only cross-venue discovery of partner-approved venues, cities, destinations.
- Status
- Healthy
- Uptime
- 100.0% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 21 tools
The set separates global search/get tools from destination_* and venue_* scoped tools, with explicit cross-references for fallback pairs like get_destination/destination_overview and get_venue/venue_profile. A few pairs are close in name, such as search vs search_venues and search_menus vs venue_menu_search, but the descriptions clearly define scope so misselection is unlikely.
Most destination_* and venue_* tools use a resource-prefix noun pattern, while global actions use verb_noun names like get_venue, search_venues, and list_cities, so two conventions coexist. This is readable and grouped but not fully uniform, with outliers like facet_vocabulary and venue_menu_search.
21 tools sits in the borderline-heavy 16-25 band, and many are thin per-resource wrappers such as destination_faq, venue_links, and venue_faq rather than distinct capabilities. The count is defensible for a directory spanning venues and destinations, but it strains the upper bound of a well-scoped set.
The surface covers discovery, detail, batch retrieval, facets/vocabulary, menus, FAQs, guides, events, listings, and links, with booking delegated via mcp_endpoint. There are no obvious dead ends or missing read operations for a directory's purpose.
Available Tools
21 toolsdestination_eventsSearch a destination's events by nameARead-onlyIdempotentInspect
Find a named destination's events overlapping a date window (default from today; a recurring event's span is not a single date — read its recurrence; the destination's own host calls this search_events).
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area slug from destination_facets. | |
| limit | No | Maximum number of items to return. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| to_date | No | ISO date; open-ended if omitted. | |
| category | No | Category slug from destination_facets. | |
| from_date | No | ISO date; defaults to today. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive, so the bar is lower. The description adds genuinely non-obvious behaviors: from_date defaults to today, and recurring events must be read via their recurrence rather than a single date span. This is useful context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with the main action front-loaded and caveats following. The semicolon and em-dash make it slightly dense, but every clause earns its place and there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full parameter schema, annotations, and presence of an output schema, the description covers the non-obvious top-level behaviors and the host-alias mapping. Minor omissions such as exact boundary inclusivity are acceptable because the structured schema fills most remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description reinforces the date-window filter and today default, but adds no new per-parameter semantics (e.g., slug meaning, cursor usage, limit constraints) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Find a named destination's events' with an explicit date-window constraint. This distinguishes it from the many destination_* fact/listing siblings and generic search tools, and the alias note reinforces identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use versus alternative tools is given; the description only describes the operation. The date-window and recurrence notes are behavioral constraints rather than tool-selection guidance. The host-alias clause is a weak routing hint but not a comparison against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_facetsDestination facets by nameBRead-onlyIdempotentInspect
List a named destination's valid area, category and tag filter values (the destination's own host calls this list_facets).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Return only this facet family; omit for all three. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds the detail that the destination's host calls this list_facets, which is peripheral. It doesn't disclose return format or error behavior, but with annotations present, the bar is lower; still, more context could be added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loads the verb and resource. The added parenthetical about the host's naming is slightly extra but not wasteful. It earns points for being concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 100% schema coverage, output schema present, annotations provided), the description is mostly sufficient. It lacks explicit mention of what the output structure looks like, but output schema exists to cover that. It could mention that it returns filter values for all three families by default, but the schema's default covers that. Overall adequate with minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for both parameters: 'kind' is described as 'Return only this facet family; omit for all three,' and 'destination' is described as 'Destination name or slug; call search_destinations to discover one.' The description adds no additional parameter information beyond what schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('list') and resource ('a named destination's valid area, category and tag filter values'). It distinguishes from siblings by focusing on facets, but could explicitly differentiate from facet_vocabulary. The mention of the host's own name 'list_facets' adds clarity but the purpose is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when you need filter values for a destination, and the 'kind' parameter hints at selectivity. However, it doesn't explicitly say when to use this vs facet_vocabulary or search_destinations, though the schema provides some guidance via parameter descriptions. Lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_faqDestination FAQ by nameARead-onlyIdempotentInspect
Search a named destination's FAQs, optionally filtered by text (the destination's own host calls this get_faq).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| query | No | Text to match in question/answer. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the alias context ('the destination's own host calls this get_faq') and the optional text filter, but it does not disclose pagination behavior, result ordering, or that cursor is a skip-based cursor. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and resource, then adds the optional filter and the alias note. Every word earns its place; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent search tool with a rich output schema and 100% parameter coverage, the description is nearly complete. The only missing context is explicit pagination behavior (cursor as skip) and any note about result ordering, but the schema's cursor description already covers the skip mechanism. The alias note adds useful real-world context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds the alias context and the notion of filtering by text, which maps to the query parameter, but it does not add meaning beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), a specific resource ('a named destination's FAQs'), and an optional filter ('by text'). It also distinguishes itself from the destination's own host call ('get_faq'), which helps an agent understand this is a wrapper/alias. This clearly differentiates it from siblings like venue_faq and search_destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need FAQs for a named destination, optionally filtered by text. It also notes the destination's host calls it get_faq, which is a useful alias. However, it does not explicitly state when not to use it or mention alternatives like venue_faq for venue FAQs, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_guideDestination guides by nameARead-onlyIdempotentInspect
Read a named destination's editorial guides such as weather, getting here and safety (the destination's own host calls this get_guide).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text to match in guide title/body. | |
| topic | No | Guide topic; omit for all. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint true, and destructiveHint=false, so the safe-read nature is covered. The description adds mild context by clarifying the content is 'editorial guides' and noting the destination host calls it get_guide, but it does not disclose richer behavior such as filtering or matching semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and resource, then adds the useful alias. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, a complete input schema, and an output schema, the description is largely sufficient. The only notable gap is the lack of explicit guidance for choosing this tool over siblings such as destination_faq or destination_overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents query, topic, and destination. The description adds only topic examples that echo the enum values and does not meaningfully extend the parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and a clear resource ('a named destination's editorial guides') with concrete examples (weather, getting here, safety). It distinguishes the tool from sibling destination_* tools like destination_faq and destination_overview by focusing on editorial guide content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool reads but gives no guidance on when to use it versus the many sibling destination tools. It does not mention alternatives, exclusions, or conditions that would route an agent to destination_overview, destination_faq, or another sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_listingGet a destination listing by nameARead-onlyIdempotentInspect
Get one listing's full detail by its id, including a live linked venue's mcp_endpoint and linked_venue_slug to read or book it via the venue_* tools (the destination's own host calls this get_listing).
| Name | Required | Description | Default |
|---|---|---|---|
| listing_id | Yes | The listing's id, as returned by destination_listings. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds context about the returned data including mcp_endpoint and linked_venue_slug, and notes the destination host's internal name for the tool. This adds value beyond the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose first, then adds the important detail about the linked venue info and the host's alias. It is slightly dense but efficient, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and annotations cover safety. The description explains the return content and its relationship to venue_* tools, and the schema covers the parameters. There is no missing critical information for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described in the input schema. The description does not add new information about the parameters beyond referencing the id and destination. The baseline of 3 applies as the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (one listing's full detail), and the specific retrieval method (by id). It also distinguishes itself from the plural destination_listings tool by specifying it returns a single listing. The mention of the venue_* tools further clarifies its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it's the tool to get a single listing's full detail, and it explicitly mentions how to use the returned data for venue_* tools. However, it doesn't explicitly state when not to use it or name alternative tools like destination_listings, though the singular vs plural distinction is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destination_listingsSearch a destination's listings by nameARead-onlyIdempotentInspect
Search a named destination's listings by text, category, area and tags (slugs from destination_facets); optionally near another listing, and the destination's own host calls this search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area slug from destination_facets. | |
| tags | No | Tag slugs; only listings carrying ALL are returned. | |
| limit | No | Maximum number of items to return. | |
| query | No | Text to match listing names/descriptions. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| category | No | Category slug from destination_facets. | |
| language | No | Language code (e.g. 'en', 'es'); defaults to the destination's. | |
| radius_km | No | Search radius in km around near_listing_id; a larger value is reduced to the server maximum. | |
| destination | Yes | Destination name or slug; call search_destinations to discover one. | |
| near_listing_id | No | A listing id; returns listings within radius_km, nearest first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds some useful context, such as tag slugs coming from destination_facets and optional proximity search, but it does not disclose pagination behavior or result ordering beyond what the schema already specifies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core action and enumerates filters efficiently. The trailing clause about the destination's host calling this search_listings is somewhat unclear and adds little value, but overall the structure is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich input schema, output schema, and annotations covering safety, the description is largely complete. It captures the essential search dimensions and facet provenance. It could be stronger on when to choose this over sibling tools, but the available structured metadata fills most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description mostly restates the filter categories and facet provenance, adding little beyond the schema. It does not introduce new format, default, or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: search a named destination's listings, with explicit filter dimensions (text, category, area, tags) and an optional near-listing mode. This distinguishes it from singular destination_listing and other destination_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to search listings for a specific destination. However, it does not explicitly contrast it with alternatives like destination_listing, search, or search_destinations, and the final clause about the destination's host is not actionable guidance.
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 nameARead-onlyIdempotentInspect
Get a named destination's summary: counts by category, currency, timezone — if it reports the destination is not available, fall back to get_destination with the slug from search_destinations (the destination's own host calls this get_overview).
| Name | Required | Description | Default |
|---|---|---|---|
| destination | Yes | Destination name or slug; call search_destinations to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it reveals that the tool can report a destination as unavailable and exposes the alias relationship ('the destination's own host calls this get_overview').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the primary purpose, then appends a precise fallback instruction. Every clause contributes essential information, including the alias context, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with a full output schema and clear annotations, the description covers purpose, output contents, fallback behavior, parameter discovery, and alias context. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the input schema already states 'Destination name or slug; call search_destinations to discover one.' The description's mention of 'named destination' and 'slug from search_destinations' reinforces but does not add new semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('named destination') and specifies the output ('summary: counts by category, currency, timezone'). It also distinguishes itself from get_destination by framing the latter as a fallback for unavailable destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit conditional fallback: if the destination is reported unavailable, use get_destination with the slug from search_destinations. This gives clear routing guidance for the common failure case, though it does not broadly contrast with other sibling tools like destination_listing or destination_faq.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facet_vocabularyFacet vocabularyARead-onlyIdempotentInspect
The closed VENUE facet vocabulary (vibe, cuisine, dietary, and more) plus today's live cuisine, price_band and neighbourhood values across published venues, the exact values search_venues' matching filters accept — for a destination's areas, categories and tags call destination_facets instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds useful behavioral context beyond that: the vocabulary is 'closed,' the values are 'today's live' values, and they are scoped 'across published venues.' This meaningfully explains freshness and scope without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the primary purpose and immediately follows with an explicit sibling-route alternative. Every clause carries useful information; there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, no parameters, and annotations covering safety and world assumptions, the description fully supplies the remaining context: what the values are for, their freshness, and how this tool differs from destination_facets. Nothing an agent needs to select and invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the baseline is 4. The description adds contextual meaning about what the no-parameter call returns, which is sufficient given there is nothing to configure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource—the closed VENUE facet vocabulary plus today's live cuisine, price_band, and neighbourhood values—and states what those values are for: the exact values search_venues' matching filters accept. It also explicitly distinguishes this tool from destination_facets, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly identifies when to use this tool (for venue facet filter values across published venues) and gives an explicit exclusion: 'for a destination's areas, categories and tags call destination_facets instead.' This gives the agent a concrete routing decision without needing to open schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_destinationGet destinationARead-onlyIdempotentInspect
Get one published destination's summary and live mcp_endpoint by its slug — always available for any published destination, so use this if destination_overview reports it is not available.
| Name | Required | Description | Default |
|---|---|---|---|
| destination_slug | Yes | The destination's slug, as returned by search_destinations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly, idempotent, and non-destructive; the description contributes an availability guarantee and tells the agent the response includes a live mcp_endpoint. It does not cover error behavior or rate limits, but those are less critical for a simple read with a safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with the key scoping phrase front-loaded before the routing guidance. No filler or repeated annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with an output schema, the description covers how to identify the destination, what to expect in the result, and when to prefer it over destination_overview. The only light gap is that 'live mcp_endpoint' is domain jargon, but the output schema presumably defines it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the only parameter (destination_slug) as 'as returned by search_destinations', and the description essentially repeats 'by its slug'. Schema coverage is 100%, so no additional parameter semantics are needed; the description adds no new constraint or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise action ('get') and specific resource ('one published destination's summary and live mcp_endpoint'), keyed by slug. The phrase 'use this if destination_overview reports it is not available' distinguishes it from the most similar sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use: 'always available for any published destination', and points to the alternative destination_overview when that tool reports non-availability. It does not list exclusion cases, but for a simple read the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venueGet venueARead-onlyIdempotentInspect
Get one published venue's summary, capabilities and live mcp_endpoint by its slug — always available for any published venue, so use this if venue_profile reports the venue is not available.
| Name | Required | Description | Default |
|---|---|---|---|
| venue_slug | Yes | The venue's slug, as returned by search_venues. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable context beyond annotations by guaranteeing availability for any published venue and highlighting the 'live mcp_endpoint', which conveys freshness. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that first states what is returned, then the usage condition. No filler or repetition; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with an output schema and comprehensive annotations, the description covers purpose, usage condition, and availability guarantee. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already explains that venue_slug comes from search_venues. The description merely repeats 'by its slug' without adding new meaning or format details. Per baseline for high schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Get') and resource ('one published venue's summary, capabilities and live mcp_endpoint by its slug'), and explicitly distinguishes it from venue_profile and get_venues by naming the condition. An agent can immediately identify what this tool returns and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'always available for any published venue, so use this if venue_profile reports the venue is not available.' This names the alternative tool and the precise condition for choosing this one, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venuesGet venues (batch)ARead-onlyIdempotentInspect
Get several published venues' summaries in ONE call by their slugs — the batch counterpart to get_venue, so a shortlist from search_venues needs no per-slug round-trip; the base view (identity, essentials, capabilities, booking, mcp_endpoint) is always returned, while include opts into heavier per-venue reads — hours, dietary (dietary-tag/allergen vocabulary), attributes (facets) and menu_summary — with items coming back in the requested order (a repeated slug resolves once) and not_found listing any requested slug that did not resolve to a published venue.
| Name | Required | Description | Default |
|---|---|---|---|
| slugs | Yes | The venues' slugs, as returned by search_venues; duplicates resolve once. Either one slug per list entry, or comma-separated within an entry (a,b) — both work and mix; the cap applies to the total slug count. | |
| include | No | Optional add-ons, any of: attributes, dietary, hours, menu_summary. Omit for the lean base view; an unknown value is a 422. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint, idempotentHint, and destructiveHint annotations by disclosing that only published venues are returned, items come back in requested order, duplicate slugs resolve once, and a not_found list identifies unresolved slugs. These are valuable behavioral traits an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, long sentence but is front-loaded with the core purpose and then logically expands to usage contrast, base view, include options, and behavioral details. While dense, every clause carries information; it could be broken into sentences for readability, but it is not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch read tool with two well-documented parameters, an output schema, and annotations covering read-only and idempotency, the description covers all essential aspects: what it returns, how include affects payload, ordering, deduplication, and error handling for missing slugs. Nothing critical is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters well, and the description adds further context: slugs are as returned by search_venues, duplicates resolve once, comma-separated entries are allowed, and include options are enumerated with a note that unknown values cause a 422. This meaningfully supplements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get several published venues' summaries in ONE call by their slugs'), and immediately contrasts it with get_venue as the 'batch counterpart,' making the purpose unambiguous and differentiating it from sibling tools like search_venues. It also outlines what the base view includes, which adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use this tool: 'a shortlist from search_venues needs no per-slug round-trip,' directly positioning it as the batch alternative to get_venue. This gives clear usage context and an implied exclusion (use get_venue for single venues), which is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList citiesARead-onlyIdempotentInspect
List the cities that have at least one published venue.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the 'at least one published venue' filter, which is useful, but it does not disclose behaviors like ordering, pagination semantics, or handling of cities without venues. Given the annotation coverage, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the verb and resource, and adds the key filtering constraint without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with optional parameters, full schema coverage, an output schema, and complete annotations, the description provides the essential filter context. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit and cursor both fully documented. The description itself adds no parameter-level meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a clear resource ('cities'), and a meaningful filter ('at least one published venue'). This distinguishes it from sibling tools focused on destinations or venues and leaves no ambiguity about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context: use this tool when you need cities that have published venues. However, it does not explicitly discuss when to prefer this over sibling tools like get_destination or search_destinations, though no direct alternative is obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch venues and destinationsARead-onlyIdempotentInspect
Search published venues and destinations together in one call, each result tagged with its kind (venue or destination); pass kind to scope to one type, query to match names and venue descriptions, and city to narrow venues, then use search_venues or search_destinations for type-specific filters such as cuisine, hours or area.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Narrow VENUES to this city (case-insensitive); destinations have no city and are not narrowed by it. Call list_cities for the exact values. | |
| kind | No | Scope to 'venue' or 'destination'; omit to return both, each tagged kind. | |
| limit | No | Maximum number of items to return. | |
| query | No | Match venue names/descriptions and destination names; omit for all. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful context: it searches only 'published' items, and each result is tagged with its kind. It doesn't mention pagination but the cursor parameter is self-explanatory. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that packs all key information without redundancy. It is front-loaded with the main purpose, then parameter guidance, then alternative tool routing. It is slightly long but earns its length with substantive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (combined search with 5 parameters) and that the schema fully documents each parameter, the description covers the core usage and directs to more specific tools. It does not describe return format, but an output schema exists. The only minor gap is no mention of the cursor/next_cursor behavior, but that's implied by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented. The description adds marginal detail, such as clarifying that query matches venue descriptions as well as names, but this is already implied in the schema for the query field. The description does not significantly add meaning beyond the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches published venues and destinations together in one call, with each result tagged by kind. It explicitly mentions the resource and the action, and differentiates itself from search_venues and search_destinations by noting those are for type-specific filters. This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: pass kind to scope to one type, query to match names and venue descriptions, and city to narrow venues. It also explicitly says 'then use search_venues or search_destinations for type-specific filters', giving clear when-to-use versus alternatives. This is excellent routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_destinationsSearch destinationsARead-onlyIdempotentInspect
Search published travel destinations by name; omit the query to list all, and connect to each result's mcp_endpoint for its listings, events and guides.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| query | No | Text to match against destination names; omit to list all. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context beyond the annotations: it searches only 'published' destinations and directs the agent to each result's mcp_endpoint for related listings, events, and guides. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the primary action, the list-all option, and the follow-up routing. Every clause earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With the output schema present, parameter schema fully self-describing, and annotations covering safety traits, nothing essential is missing. The mention of mcp_endpoint completion makes the tool's role in the larger workflow clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has descriptive text. The description reinforces that query matches destination names and that omitting it lists all, but it does not add substantial semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search published travel destinations by name') with a clear resource, and clarifies the omit-query-to-list-all behavior. It also implicitly distinguishes itself from sibling tools by pointing users to each result's mcp_endpoint for listings, events, and guides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: search by name or omit query to list all, and connect to mcp_endpoint for further details. It does not explicitly name alternatives or state when not to use this tool, but the guidance is enough for an agent to choose it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_venuesSearch venuesARead-onlyIdempotentInspect
Search published venues by name or description, optionally filtered by city, cuisine, price band, neighbourhood, whether the venue takes reservations, proximity (near a lat/long within a radius, nearest first) and opening hours (open on a given day/time, or open now) — all HARD filters that exclude on a miss, plus a HARD experiential-facet filter (facets, ':' tokens from facet_vocabulary) — with prefer_cuisine, prefer_neighbourhood, avoid and prefer_facets as SOFT preferences that only rank a venue up or down and never drop it; each result carries the venue's capabilities and, when it is live, its mcp_endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | A 24-hour HH:MM time; with open_on, require the venue be open then. | |
| city | No | Only return venues in this city (case-insensitive); call list_cities for the exact values this directory knows. | |
| near | No | Only return venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded. | |
| avoid | No | Soft preference: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped. | |
| limit | No | Maximum number of items to return. | |
| query | No | Text to match against venue names and descriptions; omit to list all. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. | |
| facets | No | HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'). 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. | |
| cuisine | No | Only return venues with this cuisine (case-insensitive exact match). | |
| open_on | No | Only return venues open on this weekday (optionally at 'at'); venues with no published hours are excluded. | |
| open_now | No | Only return venues open (true) or closed (false) at their own local time now; venues with no timezone or hours are excluded. | |
| radius_km | No | Search radius in km around 'near' (default applied when omitted). | |
| price_band | No | Only return venues in this price band, e.g. '$$' (case-insensitive). | |
| neighbourhood | No | Only return venues in this neighbourhood (case-insensitive exact match). | |
| prefer_facets | No | SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped. Call facet_vocabulary for the legal types and values. | |
| prefer_cuisine | No | Soft preference: venues of these cuisines rank higher; non-matches are NOT dropped. | |
| accepts_reservations | No | Filter by whether the venue takes reservations (has a live booking tool or a booking link); omit for both. | |
| prefer_neighbourhood | No | Soft preference: venues in these neighbourhoods rank higher; non-matches are NOT dropped. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly distinguishes HARD filters (exclude on miss) from SOFT preferences (never drop, only rank up/down), discloses ordering behavior ('nearest first'), explains exclusion rules for missing data (venues with no coordinates, no published hours, no timezone), and states the result payload includes capabilities and mcp_endpoint. This is far beyond the readOnly/idempotent annotations and gives agents accurate behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long, dense sentence, but every clause carries necessary information. It front-loads the core purpose and uses em-dashes to separate filter groups, making the structure parseable. It could be split into shorter sentences for readability, but given 18 parameters and the need to convey hard/soft semantics, the density is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter search tool with an output schema present, the description covers all cross-cutting behavioral semantics: hard vs soft filters, ordering, exclusions based on missing data, result content, and references to vocabulary tools. With the output schema handling return structure, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents each parameter individually. The description adds valuable global semantics by grouping filters into HARD vs SOFT, explaining the facet token format, and clarifying that prefer_* parameters only affect ranking. This meaningfully supplements the schema's per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Search published venues by name or description') and then enumerates the full set of filter dimensions (city, cuisine, price band, neighbourhood, reservations, proximity, opening hours, experiential facets). This clearly distinguishes it from sibling tools like search_destinations, search_menus, or get_venues, and tells an agent exactly what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary use case obvious: search venues with optional filters and soft preferences. It also points to list_cities and facet_vocabulary for valid values, which are the right companion tools. However, it does not explicitly state when to prefer this over get_venues or get_venue (e.g., 'for a single venue by ID, use get_venue'), so there is no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_dietary_optionsVenue dietary options by nameARead-onlyIdempotentInspect
List a named venue's declared dietary tags and allergens — the exact spellings venue_menu_search matches literally (the venue's own host calls this get_dietary_options).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral value beyond that by revealing that results are 'declared' tags and 'exact spellings,' meaning the output is a literal vocabulary rather than normalized or computed values. This is genuinely useful for downstream usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action first, then packs in the key semantic constraint about exact spellings and the host-side alias. Every clause contributes value; there is no padding or wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is well covered across all dimensions: schema covers all parameters, annotations cover side-effect behavior, output schema exists, and the description clarifies the important literal-matching relationship with venue_menu_search. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including city disambiguation and venue-as-slug behavior. The description adds only the 'named venue' framing and does not need to repeat schema details. Baseline 3 is appropriate when the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List a named venue's declared dietary tags and allergens.' This clearly distinguishes the tool from siblings like venue_profile or get_venue by focusing on dietary vocabulary. It also adds a useful cross-reference to venue_menu_search, so an agent knows exactly what this tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description communicates when to use the tool: to obtain the exact spellings that venue_menu_search matches literally. That is a clear use case, though it does not explicitly say 'use this instead of X' or list exclusion criteria. Still, the context is strong enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_faqVenue FAQ by nameARead-onlyIdempotentInspect
Search a named venue's published FAQs, optionally filtered by text (the venue's own host calls this get_venue_faq).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| limit | No | Maximum number of items to return. | |
| query | No | Text to match against questions and answers. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. | |
| cursor | No | Number of items to skip; pass `next_cursor` from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that only published FAQs are searched and notes the upstream host alias (get_venue_faq), which is useful context beyond annotations. It does not disclose pagination or ordering behavior, though the output schema and parameter descriptions partially cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the primary purpose before adding the alias context. There is minor redundancy with the schema's query parameter ('optionally filtered by text'), but the sentence remains compact and readable. The parenthetical about the venue host's name adds useful cross-reference context without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with rich annotations, a full input schema, and an output schema, the description is almost complete for selection and invocation. The only notable gap is the absence of explicit guidance about when to choose this over sibling tools like destination_faq or get_venue. Overall, an agent can correctly select and call this tool with the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are fully documented with types, defaults, constraints, and helper guidance like 'call search_venues'. The description's phrase 'optionally filtered by text' adds no new parameter meaning beyond the query field already documented in the schema. Baseline 3 is appropriate because the schema carries the parameter-semantics burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb-resource pair ('Search a named venue's published FAQs') and adds the optional text-filter behavior. It distinguishes itself from siblings like get_venue or destination_faq by focusing on venue FAQs for a named venue. The title 'Venue FAQ by name' reinforces the same clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you want a named venue's published FAQs, optionally filtered by text. However, it does not explicitly name alternatives or state when not to use it, leaving sibling differentiation to inference. This meets the bar for implied usage guidance but lacks explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_linksVenue links by nameARead-onlyIdempotentInspect
Get a named venue's published booking and other links (connect to its mcp_endpoint to actually book; the venue's own host calls this get_venue_links).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context that only published links are returned and that actual booking happens via the mcp_endpoint, but it does not explain much beyond that, and the 'venue's own host calls this get_venue_links' note is somewhat ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main clause is concise and front-loaded: 'Get a named venue's published booking and other links.' The parenthetical adds important behavioral context but is a bit convoluted, especially the phrase 'the venue's own host calls this get_venue_links.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full schema, explicit annotations, and an existing output schema, the description covers the essential purpose and the key distinction between fetching links and actually booking. The only notable gap is that 'mcp_endpoint' is referenced without explanation, though the output schema likely clarifies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the venue and city parameters already well documented. The description does not add parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get a named venue's published booking and other links.' This clearly identifies what the tool returns. It does not explicitly differentiate from sibling venue tools like get_venue or venue_profile, though the 'links' focus is reasonably distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need a named venue's published links) and includes an exclusion: use the mcp_endpoint to actually book rather than this tool. However, it does not give broader when-to-use guidance versus sibling tools such as get_venue or venue_profile.
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 nameARead-onlyIdempotentInspect
Get a named venue's published profile summary — give its name (and city) or slug; not every venue enables this richer profile, so if it reports the venue is not available, fall back to get_venue with the slug from search_venues (the venue's own host calls this get_venue_profile).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Disambiguate a name by city (call list_cities); ignored for a slug. | |
| venue | Yes | Venue name or slug; call search_venues to discover one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| items | No | |
| reason | No | |
| sample | No | |
| source | No | FR-13: which approved revision an answer was read from, and how fresh. ``source`` is ``approved-content-revision:<id>`` for every read that answers from one venue, and the literal ``directory`` for the two cross-venue reads, which have no single revision to cite. |
| status | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context: not every venue enables this richer profile, and the tool may report unavailability, which is beyond what annotations provide. It also clarifies the fallback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the core purpose and then packs in usage guidance, fallback logic, and a naming hint. Every clause earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description doesn't need to explain return values. It covers the key contextual aspects: input forms, disambiguation, availability caveat, fallback path, and sibling relationship. An agent has enough to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds meaning by explaining that 'venue' can be a name or slug, and that 'city' is used for disambiguation and ignored for slugs. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving a named venue's published profile summary, with specific input forms (name+city or slug). It also distinguishes itself from sibling tools like get_venue and search_venues by noting the richer profile and fallback behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when to use this tool (for a named venue's richer profile) and when not to (if unavailable, fall back to get_venue with slug from search_venues). It also mentions the venue's own host calls this get_venue_profile, which helps an agent understand the tool's role.
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.
21 tool updates
- Changed
destination_events1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_facets1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_faq2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_guide2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_listing1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_listings5 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / radius_km / anyOfPrevious value: -[ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 50, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Search radius in km around near_listing_id."New value: +"Search radius in km around near_listing_id; a larger value is reduced to the server maximum." - added
Input schema / properties / tags / maxItemsAdded value: +8 - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
destination_overview1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
facet_vocabulary1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_destination1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_venue1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
get_venues2 fields changed- added
Input schema / properties / include / items / enumAdded value: +[ + "attributes", + "dietary", + "hours", + "menu_summary" +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
list_cities1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_destinations2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_menus4 fields changed- added
Input schema / properties / allergens / maxItemsAdded value: +8 - added
Input schema / properties / dietary_tags / maxItemsAdded value: +8 - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
search_venues3 fields changed- added
Input schema / properties / near / examplesAdded value: +[ + "19.0413,-98.2062" +] - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_dietary_options1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_faq2 fields changed- changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_links1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_menu_search4 fields changed- added
Input schema / properties / allergens / maxItemsAdded value: +8 - added
Input schema / properties / dietary_tags / maxItemsAdded value: +8 - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
- Changed
venue_profile1 field changed- added
Output schema / properties / sampleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sample" +}
21 tool updates
- First observed
destination_events - First observed
destination_facets - First observed
destination_faq - First observed
destination_guide - First observed
destination_listing - First observed
destination_listings - First observed
destination_overview - First observed
facet_vocabulary - First observed
get_destination - First observed
get_venue - First observed
get_venues - First observed
list_cities - First observed
search - First observed
search_destinations - First observed
search_menus - First observed
search_venues - First observed
venue_dietary_options - First observed
venue_faq - First observed
venue_links - First observed
venue_menu_search - First observed
venue_profile
Related MCP Connectors
Search and explore a global travel points-of-interest catalog (cities, countries, POIs).
Discover, read and book verified real-world businesses through one endpoint.
Live Las Vegas shows, restaurants, attractions and resorts. Read-only, no API key needed.
Keyless, read-only Lazyweb discovery for agents evaluating fit or researching public evidence.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables read-only research of public Outsite locations, quoted stay rates, and individual room calendars.MIT
- AlicenseNot gradedqualityDmaintenanceEnables discovery of events, venues, and attractions through the Ticketmaster Discovery API, with flexible search filters and multiple output formats.MIT
- AlicenseAqualityAmaintenanceSearch VeryChic hotel deals from any MCP client; browse flash-sale offers, filter by destination or price, and read availability and prices by date. Read-only, anonymous, no account needed.421MIT
- AlicenseNot gradedqualityCmaintenanceEnables read-only access to Pocket Agent's product information, public persona templates, and app catalog. No authentication required.37 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.