Skip to main content
Glama
chrischall

OurFamilyWizard MCP

by chrischall

gyg_search_tours

Read-onlyIdempotent

Search GetYourGuide tours and activities; filter by text, location, category, or dates, and sort by popularity, price, or rating.

Instructions

Search GetYourGuide tours and activities. Filter by free text (or "iata:" for airports), location ID, category ID, and date range; sort by popularity, price, or rating. Returns slim summaries by default; pass view:"full" for the whole records.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search, e.g. "louvre skip the line" or "iata:jfk".
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns the slim tour projection (id, title, price, duration, rating, cancellation) and strips image URLs; "full" returns GetYourGuide's whole records.
limitNoMaximum number of items to return (1-500).
dateToNoLatest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss). Must not be before dateFrom.
offsetNoNumber of items to skip (0-based).
currencyNoCurrency for prices, ISO 4217 (e.g. USD, EUR). Defaults to GYG_CURRENCY when set.
dateFromNoEarliest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss). Required when dateTo is set.
languageNoContent language (e.g. en, de). Defaults to GYG_LANGUAGE when set.
sortFieldNoSort field (API default: popularity).
categoryIdNoRestrict to a category ID.
locationIdNoRestrict to a location ID (city/POI/region).
extraParamsNoExtra raw query params to merge into the request (escape hatch for API drift). Keys that duplicate this tool's own arguments are ignored.
sortDirectionNoSort direction (ignored for popularity).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv2.1.7
    • addedInput schema / properties / dateFrom / anyOf
      Added value: +[
      +  {
      +    "format": "date",
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z)|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / dateFrom / type
      Removed value: -"string"
    • addedInput schema / properties / dateTo / anyOf
      Added value: +[
      +  {
      +    "format": "date",
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z)|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / dateTo / description
      Previous value: -"Latest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss)."New value: +"Latest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss). Must not be before dateFrom."
    • removedInput schema / properties / dateTo / type
      Removed value: -"string"
    • changedInput schema / properties / extraParams / description
      Previous value: -"Extra raw query params to merge into the request verbatim (escape hatch for API drift)."New value: +"Extra raw query params to merge into the request (escape hatch for API drift). Keys that duplicate this tool's own arguments are ignored."
  2. Changed1 schema field changedv2.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed2 schema fields changedv1.3.1
    • removedInput schema / properties / compact
      Removed value: -{
      -  "default": false,
      -  "description": "Return slim tour summaries instead of full records (recommended for browsing).",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact returns the slim tour projection (id, title, price, duration, rating, cancellation) and strips image URLs; \"full\" returns GetYourGuide's whole records.",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  4. First observedv1.1.2

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety/read profile is covered. The description's only behavioral addition is that results default to slim summaries and view:"full" expands them — but that same detail is already spelled out in the view parameter's schema description, so it adds little beyond structured data.

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

Conciseness5/5

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

Two dense sentences with no filler; the purpose is front-loaded before filters, sort, and response shape. Every clause carries information.

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

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, all-optional search tool with no output schema, the description covers purpose, filter axes, sorting, and response shape, and annotations carry the read-only profile. It omits pagination (limit/offset), currency/language defaults, and the extraParams escape hatch, though the schema documents all of these.

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

Parameters3/5

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

Schema description coverage is 100%, including the view enum semantics, date formats, limits, and the iata: free-text convention, so the baseline is 3. The description restates the filter/sort axes and the iata: hint already present in the q parameter, adding no new syntax or constraints.

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

Purpose4/5

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

States a specific verb+resource ("Search GetYourGuide tours and activities") and enumerates the supported filter axes and sort options. It does not, however, distinguish itself from siblings like gyg_list_location_tours or gyg_list_category_tours, which overlap with the location/category filtering described here, so an agent still has to infer which to pick.

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

Usage Guidelines3/5

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

The description implies usage by listing what can be filtered (free text, location, category, dates) and sorted, which tells an agent this is the flexible query tool. But it never states when to prefer it over gyg_list_location_tours, gyg_list_category_tours, or gyg_get_tour, and gives no exclusions or prerequisites.

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