# Sparkling Tracks Tours (remote · mcp.sparklingtracks.com)

Read-only MCP for Sparkling Tracks European tours: packages, itineraries, pricing, contacts.

- Trust score: 66/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.sparklingtracks.com`: 66/100 (this document), [markdown](https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp.md), [page](https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.sparklingtracks.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 58/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2662 tokens (~295/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-sparklingtracks-mcp https://mcp.sparklingtracks.com/mcp
```

### Codex

```toml
[mcp_servers.com-sparklingtracks-mcp]
url = "https://mcp.sparklingtracks.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-sparklingtracks-mcp": {
      "type": "remote",
      "url": "https://mcp.sparklingtracks.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-sparklingtracks-mcp --url https://mcp.sparklingtracks.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-sparklingtracks-mcp:
    url: "https://mcp.sparklingtracks.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-sparklingtracks-mcp": {
      "type": "http",
      "url": "https://mcp.sparklingtracks.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, −1)

- [security] Tool “search_destinations” rewrote its description, which is the text the model reads
- [security] Tool “list_packages” rewrote its description, which is the text the model reads
- [security] Tool “get_package_details” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 179 → 295
- [functional] Schema quality: excellent → good
- [functional] New tool “search_all_tours”
- [cosmetic] “search_destinations” added an optional parameter “date_to”
- [cosmetic] “search_destinations” added an optional parameter “date_from”
- [cosmetic] “list_packages” added an optional parameter “date_to”
- [cosmetic] “list_packages” added an optional parameter “date_from”

### 2026-08-01 (score 67, +42)

- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 8 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 25, +9)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 16, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 16, −47)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.03 → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 63)

First indexed and scored.

## MCP tools (9)

### `list_packages` (~719 tokens)

List Sparkling Tracks tour packages with optional filters. Returns a compact summary (id, title, route, starting per-person price in EUR for the land-only option, the with-flights total when available (price_eur_with_flights), whether flights are optional (flights_optional), an approximate price in the requested currency, duration, badges, URL). The default starting price is land-only (without flights); customers can add round-trip flights. Optional date_from/date_to (ISO YYYY-MM-DD) filter by the real departure calendar: combined with a destination city they keep only packages whose stay in that city overlaps the range (annotated with city_date_windows); dates alone keep only packages that fit entirely inside the range. Accepts optional language and currency params; city names, country names, and trip titles are translated when a supported locale is requested. Tour packages are quote-based: prices are starting per-person prices, final pricing depends on party size, dates, and customisations. Every response carries price_basis, which states the exactness of every price field it returns (these are "from" prices, never per-date quotes) and the booking path. A package on a coach route that is also sold in other editions carries an editions count; get_package_details returns those editions in its family block. Use get_package_details for the full itinerary.

Input parameters:

- `badge` (string): Filter to packages carrying a marketing badge. Accepted values include: bestseller, new, most_romantic, young_travelers, couples_choice, selling_fast. Partial substring match.
- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `date_from` (string): Start of the travel date range (ISO YYYY-MM-DD). When the destination/query names a city on a package route, only packages whose stay in that city overlaps [date_from, date_to] are returned, each ann…
- `date_to` (string): End of the travel date range (ISO YYYY-MM-DD, inclusive). Must be on or after date_from. When omitted: with a city query and date_from it defaults to date_from (a single day); without a city the rang…
- `destination` (string): Case-insensitive substring match against city or country names in the itinerary (e.g. "italy", "amsterdam", "switzerland"). Match is run against the English source names regardless of language param.
- `duration_days` (integer): Filter to packages with exactly this many days (parsed from the duration string, e.g. "12D/11N" is 12 days).
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.
- `max_price_eur` (number): Filter to packages with starting price at or below this EUR amount. Custom-quote packages (price not yet set) are always included.
- `traveler_count` (integer): Number of travellers in the party. Does not affect filtering; included in the response note so the AI can mention quote variability.

### `get_package_details` (~350 tokens)

Fetch the full itinerary, descriptions, included attractions, optional add-ons, pricing notes, and booking pathway for one Sparkling Tracks tour package by id. The response includes city_date_windows: for each city on the route, the next upcoming departures with the real calendar dates the traveller is in that city (departure, arrive, leave, season) and the 1-based tour day the stay starts on; self-paced packages are flagged date_flexible instead. Guided group coach tours also return a family block: the edition descriptor for this package (days, whether departures are guaranteed, the city it ends in, and whether it loops back to its start city) plus the sibling editions of the same physical coach route, each with a one-line difference and its own page. Every response carries price_basis, which states the exactness of every price field it returns (these are "from" prices, never per-date quotes) and the booking path. Accepts language and currency params; city names, country names, and trip titles are translated where available, English fallback otherwise. Booking always goes through WhatsApp, email, or the contact form; this MCP does not expose a booking endpoint.

Input parameters:

- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `id` (integer, required): Numeric package id (e.g. from list_packages or from /trips/:id).
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.

### `search_destinations` (~432 tokens)

Find Sparkling Tracks packages that visit a given city or country. Substring, case-insensitive, matched against the English source names. Optional date_from/date_to (ISO YYYY-MM-DD) filter by the real departure calendar: with a city query, only packages whose stay in that city overlaps the range are returned, each annotated with city_date_windows giving the departure, arrive and leave dates and the tour day; with a country query, only packages that fit entirely inside the range. Returned package summaries are translated to the requested language; currency follows the currency param. Every response carries price_basis, which states the exactness of every price field it returns (these are "from" prices, never per-date quotes) and the booking path.

Input parameters:

- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `date_from` (string): Start of the travel date range (ISO YYYY-MM-DD). When the destination/query names a city on a package route, only packages whose stay in that city overlaps [date_from, date_to] are returned, each ann…
- `date_to` (string): End of the travel date range (ISO YYYY-MM-DD, inclusive). Must be on or after date_from. When omitted: with a city query and date_from it defaults to date_from (a single day); without a city the rang…
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.
- `query` (string, required): City or country name in English (e.g. "Lisbon", "Switzerland", "Czech").

### `search_all_tours` (~516 tokens)

Search the FULL Sparkling Tracks coach-tour catalogue, not just the packages that have a dedicated page. list_packages and search_destinations cover the curated packages; this tool covers every tour on sale, including the hundreds that are sold on enquiry only, so "do you have anything in Portugal" gets a real answer instead of the curated slice. Each result gives the tour name, duration in days, the countries it visits, the Sparkling Tracks starting price in EUR (a "from" price for the cheapest departure of the year, land-only, lowest hotel tier), the next departure date or a dates-on-request flag, a one-click WhatsApp enquiry link with the tour name filled in, and the trip page URL when the tour has one (site_trip). Results are capped; when total_matches exceeds the cap, narrow the filters rather than asking for more. Every tour here is quote-based: a human confirms the final price after an enquiry, and no booking happens through this MCP.

Input parameters:

- `country` (string): Case-insensitive substring matched against the countries visited only (e.g. "portugal"). Use this instead of query when the user named a country rather than a theme.
- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `days_max` (integer): Only tours lasting at most this many days.
- `days_min` (integer): Only tours lasting at least this many days.
- `has_departures` (boolean): true keeps only tours with a fixed departure still ahead on the published calendar; false keeps only the dates-on-request tours. Omit for both.
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.
- `limit` (integer): Maximum results to return. Clamped to the server cap of 25; values above it are ignored rather than honoured.
- `max_price_eur` (number): Only tours whose starting price is at or below this EUR amount.
- `min_price_eur` (number): Only tours whose starting price is at or above this EUR amount.
- `query` (string): Case-insensitive substring matched against the tour name, the countries it visits, and the cities on its route (e.g. "portugal", "fatima", "scandinavia").

### `list_destinations` (~241 tokens)

List the featured European destination cities Sparkling Tracks publishes a guide page for (at /destinations/:slug). Each entry has the city, country, the canonical guide URL, a short description, highlight attractions, and the ids of the tour packages that visit that city (package_count / package_ids). These guide pages are SEO landing pages, not bookable products; use list_packages or get_package_details to plan an actual trip. Optional query filters by city or country substring. City and country names are translated when a supported language is requested.

Input parameters:

- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.
- `query` (string): Optional case-insensitive substring to filter destinations by city or country name in English (e.g. "spain", "lisbon"). If omitted, all featured destinations are returned.

### `get_affiliate_services` (~188 tokens)

List the affiliate booking services available on sparklingtracks.com (flights, hotels, cars, activities, eSIMs). Each entry is a whitelabel widget hosted on a site page; direct API booking is not supported through this MCP. The AI should route the user to the returned URL to complete the search and booking. Service titles and descriptions are currently English-only regardless of language param.

Input parameters:

- `category` (string): Optional category filter. If omitted, all categories are returned.
- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.

### `get_contact_info` (~129 tokens)

Get Sparkling Tracks contact paths for tour-package quotes: WhatsApp number, email, contact form URL, business hours, languages spoken. Tour packages always require a human-in-the-loop quote.

Input parameters:

- `currency` (string): Currency for the price_localized fields. Conversion is approximate, EUR-based; the binding price at booking is always EUR. Unsupported values fall back to EUR. Default: EUR.
- `language` (string): Output language for translatable fields (city names, country names, trip titles, descriptions). Unsupported values fall back to English. Default: en. zh is Simplified Chinese.

### `get_careers` (~55 tokens)

List open jobs at Sparkling Tracks (roles, locations, responsibilities, requirements, compensation notes) and how to apply. Read-only: applying is always by email with the subject "Job: <ROLE_ID>". English only.

### `get_reviews` (~32 tokens)

Get Sparkling Tracks customer reviews and the aggregate rating (out of 5), for citing social proof. English only.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 67
- 2026-08-01: 67
- 2026-07-31: 25
- 2026-07-30: 16
- 2026-07-29: 16
- 2026-07-28: 16
- 2026-07-27: 63
- 2026-07-26: 63

## Links

- Remote endpoint: https://mcp.sparklingtracks.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-sparklingtracks-mcp/mcp
