Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "get_city"; changed the definition of "check_availability", "check_departure_live", "find_trips" and 12 more (18 tools before, 19 now)
⟨3 unchanged words⟩ destination":{"description":"Country or city, in English or in any of our languages, matched loosely against countries, cities and trip titles. A name we know is read as its English name, which is repeated under asked. Omit to search everywhere.","type":"string"},"from":{"description":"Earliest departure date, ISO YYYY-MM-DD. A date before today is read as today.","type":"string"},"include_unsellable":{ ⟨25 unchanged words⟩ trips to return, 1 to 50. Default 20. A number outside 1 to 50 is brought inside it, and the limit used is repeated under asked.","type":"number"},"max_days":{ ⟨37 unchanged words⟩
⟨32 unchanged words⟩ and the candidates are returned with their ids. One of trip_id and title must be given.","type":"string"},"trip_id":{ ⟨19 unchanged words⟩ on the same date at very different prices. The trip number (1024). The same digits as text, the start of its page address (1024-from-london-to-budapest) and a link to its page are read as well.","type":"number"}},"required": ⟨3 unchanged words⟩
⟨14 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨102 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨10 unchanged words⟩ trips to return, 1 to 8. Default 8. A number outside 1 to 8 is brought inside it, and the limit used is repeated under asked.","type":"number"},"max_price_eur":{ ⟨79 unchanged words⟩
⟨33 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨15 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨8 unchanged words⟩
⟨14 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨15 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨8 unchanged words⟩
⟨14 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨5 unchanged words⟩ :"string"},"id":{"description":"Numeric packageTheidtrip,(e.g.asfromfind_trips,
⟨133 unchanged words⟩ en, de, nl, fr and es.AEnglishrequestisintheanothersourcelanguageofistruth,answeredandinaEnglish,languagewhichoutsideisthatthelistsourceis
⟨14 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨49 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨57 unchanged words⟩ for the party is returned as well.","maximum":40,"minimum":1,"type":"number
⟨14 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨15 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨5 unchanged words⟩ string"},"query":{"description":"Optionalcase-insensitive substring tofilterdestinations
⟨17 unchanged words⟩ most_romantic, young_travelers, couples_choice, selling_fast. Partial substring match. No package carries a badge at present, so this filter returns an empty list and nothing_found says so.","type":"string"},"currency":{ ⟨10 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨10 unchanged words⟩ the travel date range (ISO YYYY-MM-DD). A date before today is read as today. When the destination/query names a city on a ⟨124 unchanged words⟩ :"string"},"destination":{"description":"
⟨88 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨15 unchanged words⟩ , country names, trip titles, descriptions).Unsupported values fall back to English.Default: en. zh is Simplified Chinese. A value outside the list is refused.","enum":["en","de"," ⟨25 unchanged words⟩ Omit when the traveller has not chosen one. A month that has gone is refused.","pattern":"^\\d{4}-\\d{2}$ ⟨26 unchanged words⟩
⟨25 unchanged words⟩ ,"month":{"description":"ISO month YYYY-MM. A month that has gone is refused.","type":"string"},"name":{ ⟨7 unchanged words⟩ description":"Total nights for the journey.","minimum":1,"type":"integer"},"notes":{"description" ⟨10 unchanged words⟩ },"party_size":{"description":"Number oftravellers.travellers, 1 or more.","minimum":1,"type":"integer"},"phone":{"description" ⟨15 unchanged words⟩ the first, 1 for the second, etc.","minimum":0,"type":"integer"}},"required":[ ⟨5 unchanged words⟩
⟨163 unchanged words⟩ Trip title, only when no tripId is available. One of trip_id and title must be given.","type":"string"},"travellers":{"description":"Party size, 1 to 40.","maximum":40,"minimum":1,"type":"numberinteger"},"trip_id":{"description":"The tripId ⟨16 unchanged words⟩ the request is refused rather than guessing which. The trip number (1024). The same digits as text, the start of its page address (1024-from-london-to-budapest) and a link to its page are read as well.","type":"number"}},"required":["title","departure_date","travellers","name","email"] ⟨2 unchanged words⟩
{"additionalProperties":false,"properties":{"country":{"description":"Case-insensitive substring matchedMatched against the countries visited only (e.g. \"portugal\")., in English or in any of our languages. Use this instead of query when the user ⟨20 unchanged words⟩ the binding price at booking is always EUR.UnsupportedDefault:valuesEUR.fallAbackvaluetooutsideEUR.theDefault:listEUR.is refused.","enum":["EUR","USD"," ⟨66 unchanged words⟩ , country names, trip titles, descriptions).
⟨26 unchanged words⟩ Tracks packages that visit a given city orcountry. Substringcountry,case-insensitive,namedmatchedinagainstEnglishtheorEnglishinsourceanynames.of our languages. Optional date_from/date_to (ISO YYYY-MM-DD) filter by the ⟨85 unchanged words⟩
⟨14 unchanged words⟩ the binding price at booking is always EUR.Unsupported
What we hold about ONE city: the text of its guide with its highlights, its history and a few facts, the weather month by month, its photo and its position. Give the city by name. Only the parts we hold are in the reply, and not_held names the parts we hold nothing for (out of guide, history, climate, photo, position): do not fill a part that is not held from anywhere else. Every text is returned exactly as we publish it, so quote it and do not restate it. climate.months has twelve entries, January first, each with the average daily high and low in degrees Celsius, the rain in millimetres and…
Added "find_trips", "get_terms" and "get_trip_price"; changed the definition of "check_availability", "check_departure_live", "get_affiliate_services" and 12 more (15 tools before, 18 now)
Searchrealdeparture dates, per-person prices in EUR andremainingtheavailabilitystatus of each departure across the whole group-trip catalogue. Unlike list_packages and get_package_details, which return "from" prices, this returns dated departures with the price of each. It is STORED data, read from the operators at the time given in asOf, andnonot a livestockcheck: a departure listed as available was available at that time. Departures that have already left are never returned,this
Certificate changed, valid to 2027-01-01
Certificate recorded, valid to 2026-10-31
Authorization not required
First tool surface recorded: 15 tools (server version 1.0.0)
Showing the latest 6 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}Confirm ONE departure date with the operator right now. check_availability answers froma snapshot refreshedstoredperiodically;data; this asks the operator live and is what ⟨12 unchanged words⟩ status (available, on-request, closed or unknown),a remainingandseatthecounttimewhereof theoperatorcheck.publishesseatsAvailableone,isandathenumbertimeonlyofwhere thecheck.operatorseats_leftpublishes a real count ofnullplaces left. Null meansthenooperatorrealdoescountnotispublishpublishedafornumberthat departure, NOT that no seats remain: do not ⟨41 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}⟨13 unchanged words⟩ pathway for one Sparkling Tracks tour package byid.id: any trip that find_trips, list_packages or search_all_tours returns. The response includes city_date_windows: for each city on ⟨92 unchanged words⟩ with a one-line difference and its own page. departures lists the next departures that can still be requested, each with its price per person by tier and by room. When departures.source is "live" the operator was asked as this was answered (departures.checked_at) and a date it has closed is left out; when it is "snapshot" the statuses are the stored ones and departures.live_check says why, so do not promise a date. The prices are always the stored ones, read at departures.as_of. Use get_trip_price for one date and one party. whats_included says what is and is not included, once per tier (flights are never included: every price is land-only). itinerary is the day-by-day plan where the package has one, and an empty list where it is described stop by stop under highlights. Each entry of optional_addons carries included_from_tier: at that tier and every tier above it the add-on is part of the package at no charge, and null means it is a paid extra at every tier. payment.deposit is the share of the price that holds a reservation; use get_terms for the payment and cancellation terms. price.tiers lists each tier the package is sold in (Economy, Premium, Luxury) with its starting price per person and what that tier includes; each tier includes everything in the tier before it, and a tier marked quote_only is priced individually and has no figure. price.starting_from_eur is the Economy tier. Do not describe a higher tier as better hotels unless its includes list says so: on a guided coach tour the hotels are the same at every tier. A package sold at one price per room type returns an empty tiers list and says so in price.tiers_note. Every response carries price_basis, which states the ⟨55 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}To answer a traveller, use find_trips first: it searches every trip on the site by place, name, number or link and returns dated prices. List Sparkling Tracks tour packages with optional filters. ⟨175 unchanged words⟩ get_package_details returns those editions in its family block. Where a package is sold in tiers, its summary carries tiers: the starting price of Economy and of Premium, and Luxury marked quote_only because it is priced individually. price_eur is always the Economy figure. A package sold at one price per room type has no tiers key. Use get_package_details for the fullitinerary.itinerary and for what each tier includes.
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}⟨64 unchanged words⟩ given a name and email. The request isvalidatedchecked againstlivetheavailabilitystoredanddeparturewilllistbeand is rejected if the departure has already left, is closed,or does notexist,exist.orThehasteamfewerthenremainingconfirmsseatsitthanwith theparty size.operator. Returns a reference the traveller can quote. NEVER ⟨37 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}To answer a traveller, use find_trips first: it searches every trip on the site by place, name, number or link and returns dated prices. Search the FULL Sparkling Tracks coach-tour catalogue, not ⟨149 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}To answer a traveller, use find_trips first: it searches every trip on the site by place, name, number or link and returns dated prices. Find Sparkling Tracks packages that visit a given ⟨103 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}START HERE. One search over every trip on the website: where, when, how long, how many travellers, which room, what budget. Put ONLY the place or the trip name in query: a city, a country, a trip name in any word order and any of our languages, a trip number, or a trip link pasted whole. Put the dates in date_from and date_to and never in query. Returns at most 8 trips a page, lowest price first, with a trip whose name matches the words ahead of the rest; total_matches says how many there are, and next_offset gives the next page. Each trip has its link, its length, its route, whether it has t…
Read the published Sparkling Tracks Terms and Conditions: deposit, payment, cancellation charges, changes, travel documents, liability, the Package Travel Directive rights of EU customers, and the rest. Called with no section it returns the list of sections with their numbers, the deposit share and the link to the Terms page. Called with section set to a number (for example 7 or 7.1) or a plain word (for example "cancellation", "deposit", "visa") it returns that section in full, in the words of the Terms page. Use it for any question about what a traveller pays and when, what they are charged…
The price of ONE trip for one departure date, one room type and one party. Give trip_id and, for a trip that leaves on set dates, date (YYYY-MM-DD, one of the departures listed by get_package_details). Returns the price per person for each tier the trip is sold in, and the total for the party when travellers is given, with the status of that departure. The figure is the published price for that date, tier and room when the operator was last read (as_of): it is exact for the date, it is stored and not live, and a person confirms the final price. The STATUS of the date is checked with the opera…