{"serverId":"mcp-registry/com.viatsy/mcp","tools":[{"name":"get_trip_details","fixed":{"name":"get_trip_details","description":"Get full trip details: description, duration, highlights, what is included/excluded, and a short itinerary summary. Use when the user asks about a specific trip.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string","description":"Trip slug from search_trips results"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"list_blog_articles","fixed":{"name":"list_blog_articles","description":"Browse travel guides and articles. Returns published blog posts.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Page size (default 20, max 50)"},"cursor":{"type":"string","description":"Opaque pagination cursor from a previous response"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"list_destinations","fixed":{"name":"list_destinations","description":"List all published destinations this agency operates in (countries and sub-destinations).","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Page size (default 50, max 100)"},"cursor":{"type":"string","description":"Opaque pagination cursor from a previous response"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"list_upcoming_departures","fixed":{"name":"list_upcoming_departures","description":"Find open group-trip departures with future dates. Filter by destination slug, date range, or max price. Use when the user asks \"when can I go to X?\" or wants to compare dates.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Page size (default 20, max 50)"},"cursor":{"type":"string","description":"Opaque pagination cursor from a previous response"},"toDate":{"type":"string","description":"Latest departure date (YYYY-MM-DD). Optional."},"fromDate":{"type":"string","description":"Earliest departure date (YYYY-MM-DD). Defaults to today."},"maxPrice":{"type":"number","description":"Max price per person (departure currency)"},"destinationSlug":{"type":"string","description":"Destination slug — use list_destinations to get valid slugs"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"search_trips","fixed":{"name":"search_trips","description":"Search published tours. Filter by destination slug, free-text search, duration, or price. `priceFrom` is the cheapest \"from\" price per person; `bookable: false` marks an indicative price only (a group trip with no open departure yet — the traveller requests dates).","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Page size (default 20, max 50)"},"cursor":{"type":"string","description":"Opaque pagination cursor from a previous response"},"search":{"type":"string","description":"Free-text search over trip name, description, and destinations — matches any supported language, accent-insensitive"},"featured":{"type":"boolean"},"maxPrice":{"type":"number","description":"Maximum price per person"},"destination":{"type":"string","description":"Destination slug — use list_destinations to get valid slugs"},"maxDuration":{"type":"number","description":"Maximum duration in days"},"minDuration":{"type":"number","description":"Minimum duration in days"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":295,"tokensAfter":295},{"name":"start_checkout","fixed":{"name":"start_checkout","description":"Create a booking and get a secure payment link the customer opens to pay — card details never pass through you. Provide departureId for a group departure, or tripSlug + startDate for a private trip, plus the lead traveller name, email and traveller counts. Returns a bookingReference and paymentUrl; hand the paymentUrl to the customer to complete payment. Quote prices beforehand via get_trip_details or list_upcoming_departures — the payment page shows the authoritative total. Packages that includ","inputSchema":{"type":"object","required":["name","email","adults"],"properties":{"name":{"type":"string","description":"Lead traveller full name"},"email":{"type":"string","description":"Customer email — the payment link is tied to it"},"phone":{"type":"string","description":"Customer phone (optional)"},"adults":{"type":"number","description":"Number of adult travellers (1 or more)"},"locale":{"enum":["en","es","ca"],"type":"string","description":"Preferred language for the payment page and confirmation"},"infants":{"type":"number","description":"Number of infants (default 0)"},"children":{"type":"number","description":"Number of children (default 0)"},"tripSlug":{"type":"string","description":"Trip slug for a private booking (from search_trips). Provide this OR departureId; requires startDate."},"startDate":{"type":"string","description":"Private-trip start date (YYYY-MM-DD). Required when tripSlug is used, and must then be at least 14 days out and no more than 18 months ahead. Ignored for departureId bookings — the departure row owns the date."},"departureId":{"type":"string","description":"Group-departure id (from list_upcoming_departures). Provide this OR tripSlug."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":490,"tokensAfter":490}],"toolsChanged":6,"tokensSaved":0,"todo":[{"tool":"search_trips","params":["featured"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}