{
  "$schema": "https://modelcontextprotocol.io/schemas/2026-07-28/server-manifest.json",
  "name": "alltimetables",
  "title": "alltimetables — European public transport",
  "description": "Journey planning, departure boards and station search across the whole of Europe by train, bus, tram, metro, coach and ferry. 42 served countries, 1,053 official GTFS feeds, 3.07 million stops and 21.2 million trips in a single cross-border routing graph, including thousands of regional operators absent from Google Maps. Works with no credential at all; an optional free key (email only, no card, no OAuth) raises the allowance.",
  "version": "0.2.0",
  "websiteUrl": "https://alltimetables.com",
  "documentationUrl": "https://alltimetables.com/docs",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://alltimetables.com/mcp",
      "protocolVersion": "2026-07-28",
      "authentication": {
        "type": "none",
        "optionalCredential": {
          "type": "static_header",
          "header": "X-API-Key",
          "signupUrl": "https://alltimetables.com/mcp/signup",
          "cost": "free, instant, email only, no card and no OAuth",
          "benefit": "a private allowance of 500 journeys/hour instead of the shared anonymous pool"
        },
        "note": "Anonymous access is the product. A key is an optional upgrade, never a requirement."
      }
    }
  ],
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "listChanged": false,
      "subscribe": false
    }
  },
  "tools": [
    {
      "name": "resolve_place",
      "title": "Find a station or stop in Europe",
      "description": "Find the exact station, stop, address or landmark behind a place name anywhere in Europe and return a stable place_id. Disambiguates names that repeat across the continent, such as 'Hlavní nádraží' — the main station of dozens of Czech towns.",
      "costUnits": 1
    },
    {
      "name": "plan_journey",
      "title": "Plan a European journey",
      "description": "Plans door-to-door journeys by train, bus, tram, metro, coach and ferry across all of Europe, including cross-border trips and operators absent from Google Maps. Returns at most three itineraries with local times and explicit UTC offsets.",
      "costUnits": 100
    },
    {
      "name": "next_departures",
      "title": "Next departures from a station",
      "description": "Departure or arrival board for a whole European station, across every operator serving it, with line, destination, operator and platform.",
      "costUnits": 1
    },
    {
      "name": "list_regions",
      "title": "Countries and regions covered",
      "description": "Every covered country with feed, stop and trip counts and when each was last refreshed. Free and cached.",
      "costUnits": 0
    },
    {
      "name": "describe_region",
      "title": "What is covered inside one region",
      "description": "The operators, feeds and licences loaded for one country or region — answers questions such as 'do you have the Gozo Channel ferry?'. Free and cached.",
      "costUnits": 0
    }
  ],
  "rateLimit": {
    "model": "token-bucket, measured from real cost (a journey is ~15 CPU-seconds, a place lookup ~0.12)",
    "unit": "cost units; one journey = 100",
    "refill": "continuous",
    "tiers": {
      "anonymous": {
        "journeysPerHour": 300,
        "burstJourneys": 40,
        "lookupsPerHour": 20000,
        "scope": "shared by all anonymous callers"
      },
      "free_key": {
        "journeysPerHour": 500,
        "burstJourneys": 60,
        "lookupsPerHour": 60000,
        "scope": "private to one key",
        "signupUrl": "https://alltimetables.com/mcp/signup"
      }
    },
    "separatePools": "station search and coverage tools are metered separately from journey searches and are never starved by them",
    "exhaustedBehaviour": "a cached or approximate result with retry_after_seconds and a link to the free key; never HTTP 401, never a hard failure"
  },
  "coverage": {
    "servedCountries": 42,
    "feeds": 1053,
    "stops": 3073661,
    "trips": 21236535,
    "countryCodes": [
      "AL",
      "AD",
      "AT",
      "BE",
      "BA",
      "BG",
      "HR",
      "CY",
      "CZ",
      "DK",
      "EE",
      "FI",
      "DE",
      "FR",
      "GR",
      "HU",
      "IS",
      "IE",
      "IT",
      "XK",
      "LV",
      "LI",
      "LT",
      "LU",
      "MK",
      "MT",
      "MD",
      "ME",
      "NL",
      "NO",
      "PL",
      "PT",
      "RO",
      "SM",
      "RS",
      "SK",
      "SI",
      "ES",
      "SE",
      "CH",
      "GB",
      "UA"
    ]
  },
  "attributionUrl": "https://alltimetables.com/v1/attributions",
  "llmsTxtUrl": "https://alltimetables.com/llms.txt",
  "signupUrl": "https://alltimetables.com/mcp/signup"
}
