# io.github.Fabsbags/swisstrip-mcp (remote · mcp.swisstrip.app)

Canonical SwissTrip MCP — independent SBB/CFF/FFS schedules, prices, and ticket links by SwissTrip.

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

## Components

- remote · `mcp.swisstrip.app`: 77/100 (this document), [markdown](https://verifymcp.io/servers/fabsbags-swisstrip-mcp/mcp.md), [page](https://verifymcp.io/servers/fabsbags-swisstrip-mcp/mcp)
- npm · `swisstrip-mcp`: 32/100, [markdown](https://verifymcp.io/servers/fabsbags-swisstrip-mcp/swisstrip-mcp.md), [page](https://verifymcp.io/servers/fabsbags-swisstrip-mcp/swisstrip-mcp)

## Channel facts

- Endpoint: `https://mcp.swisstrip.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.6.3`

## 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-04.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - 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**: 88/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 952 tokens (~86/item across 11 items; 6 tools + 5 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 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.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http fabsbags-swisstrip-mcp https://mcp.swisstrip.app/mcp
```

### Codex

```toml
[mcp_servers.fabsbags-swisstrip-mcp]
url = "https://mcp.swisstrip.app/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add fabsbags-swisstrip-mcp --url https://mcp.swisstrip.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  fabsbags-swisstrip-mcp:
    url: "https://mcp.swisstrip.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "fabsbags-swisstrip-mcp": {
      "type": "http",
      "url": "https://mcp.swisstrip.app/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-04 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 75, +2)

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

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

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

### 2026-07-29 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 71, 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 71)

First indexed and scored.

## MCP tools (6)

### `search_stations` (~120 tokens)

Search Stations

Search for Swiss train stations, addresses, or points of interest by name. Returns UIC station IDs (e.g. "8503000" for Zürich HB) used by the other tools. Note: search_connections accepts station names directly, so this tool is only needed when the user explicitly asks for station info or when you need disambiguation between multiple matches.

Input parameters:

- `limit` (number): Maximum number of results
- `query` (string, required): Station name to search for (e.g. "Zurich", "Bern", "Interlaken")

### `search_connections` (~277 tokens)

Search Connections

Find train connections between two Swiss stations. Accepts station names directly (e.g. "Zürich HB", "Bern") or UIC IDs — name resolution happens internally. Returns live schedules with departure/arrival times, duration, transfers, and trip IDs for downstream pricing/details/ticket calls. Live data: includes delays and cancellations for trains departing within 30 min.

Input parameters:

- `arrival_time` (boolean): Defaults to false (treat `time` as departure). Only set true when the user EXPLICITLY says they want to ARRIVE by a specific time ("I need to be in Bern by 9am", "arriving at 14:00"). For loose phras…
- `date` (string): Travel date in YYYY-MM-DD format (default: today)
- `from` (string, required): Origin station name or ID (e.g. "Zurich HB" or "8503000")
- `time` (string): Time in HH:MM (Europe/Zurich local time, 24h). By default treated as DEPARTURE time. Default: now.
- `to` (string, required): Destination station name or ID (e.g. "Bern" or "8507000")

### `get_trip_details` (~50 tokens)

Get Trip Details

Get detailed information about a specific train connection including all intermediate stops, platforms, and occupancy. Use a trip ID from search_connections results.

Input parameters:

- `trip_id` (string, required): Trip ID from search_connections results

### `get_more_connections` (~63 tokens)

Get More Connections

Load earlier or later train connections for a previous search. Use the collection ID from search_connections results.

Input parameters:

- `collection_id` (string, required): Collection ID from search_connections results
- `direction` (string, required): "next" for later trains, "previous" for earlier trains

### `get_prices` (~125 tokens)

Get Prices

Get ticket prices in CHF for one or more train connections. Supports Half-Fare card (Halbtax) and GA travelcard discounts. Up to 10 trip_ids per call — batch them in a single request rather than calling once per connection. Use trip_ids from a recent search_connections result; do not invent IDs.

Input parameters:

- `reduction_card` (string): Swiss reduction card: HALF_FARE (Halbtax), GA (General Abonnement), or NONE
- `traveler_type` (string): Traveler type
- `trip_ids` (array, required): Trip IDs from search_connections results

### `get_ticket_link` (~208 tokens)

Get Ticket Link

Get a direct purchase link to buy a train ticket on SBB.ch. Only call this when the user wants to buy a specific ticket. On mobile with SBB app installed, opens directly in the app with Halbtax/GA applied automatically.

Input parameters:

- `date` (string, required): Travel date YYYY-MM-DD
- `from_id` (string, required): Origin station ID (e.g. "8503000")
- `from_name` (string, required): Origin station name (e.g. "Zürich HB")
- `reduction_card` (string): Swiss reduction card: HALF_FARE (Halbtax), GA (General Abonnement), or NONE
- `time` (string, required): Departure time HH:MM
- `to_id` (string, required): Destination station ID (e.g. "8507000")
- `to_name` (string, required): Destination station name (e.g. "Bern")
- `traveler_type` (string): Traveler type
- `trip_id` (string, required): Trip ID to purchase

## Diagnostics

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

## Score history

- 2026-08-04: 77
- 2026-08-03: 76
- 2026-08-02: 76
- 2026-08-01: 75
- 2026-07-31: 75
- 2026-07-30: 73
- 2026-07-29: 73
- 2026-07-28: 72
- 2026-07-27: 71
- 2026-07-26: 71

## Links

- Remote endpoint: https://mcp.swisstrip.app/mcp
- Repository: https://github.com/Fabsbags/swisstrip-mcp
- Changelog RSS feed: https://verifymcp.io/servers/fabsbags-swisstrip-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/fabsbags-swisstrip-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/fabsbags-swisstrip-mcp/mcp
