{"apiVersion":"v1","directorySlug":"traini-mcp-e97c8b6ebe","title":"Traini","description":null,"pageUrl":"https://www.mcpbundles.com/skills/traini-mcp-e97c8b6ebe","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.traini.ac/mcp","hostedMcpUrl":null,"toolCount":8,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"ac.traini/traini-mcp-e97c8b6ebe","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"live_summary","description":"Today's UK rail headline numbers, all for the same UK service day: how many trains the timetable has (scheduled), how many have been activated so far (started), how many are moving right now (running_now: started, not yet at their last call, and heard from within running_window_min), how many are cancelled and how many of those the timetable itself withdrew, the on-time percentage, and the average lateness of the calls that ran late (early running is not counted as lateness). scheduled is known","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"live_summary","displayName":"live_summary","title":"live_summary"},{"name":"find_station","description":"Look up stations/locations by name fragment or CRS code. Name words can be in any order ('London Paddington' finds 'PADDINGTON LONDON'). Returns stanox/tiploc/crs identifiers and the full location name; group names like 'London' also report the member stations of the group.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_station","displayName":"find_station","title":"find_station"},{"name":"station_activity","description":"Recent actual train movements at a station (last 3 hours): arrivals/departures with planned vs actual time, lateness and platform.","inputSchema":{"type":"object","required":["station"],"properties":{"limit":{"type":"integer"},"station":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"station_activity","displayName":"station_activity","title":"station_activity"},{"name":"departures","description":"Live departure board for a station: departs (scheduled), expected_departs (null unless a Darwin forecast or live report exists), a ready-made status string (On time / Expected HH:MM / Delayed (no estimate yet) / Cancelled / Scheduled), live_delay_min, is_activated, data_source, platform, operator, headcode, destination, calling_points (an array of {station, crs, scheduled} for every public stop after this station), and the train_id/train_uid to pass to the train tool. Optional from_time/to_time","inputSchema":{"type":"object","required":["station"],"properties":{"limit":{"type":"integer"},"station":{"type":"string"},"to_time":{"type":"string"},"from_time":{"type":"string"},"calling_at":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"departures","displayName":"departures","title":"departures"},{"name":"journey","description":"The next trains from one station to another. Use this for any A-to-B question. Both stations are resolved first and echoed back; an unresolvable or ambiguous station is an explicit error with candidates, so an empty service list really means no trains. Returns direct services (changes: 0, with expected departure and arrival times from Darwin/live data) and, when max_changes is 1 (the default), one-change itineraries (changes: 1) with the interchange station, arrival and onward departure platform","inputSchema":{"type":"object","required":["from","to"],"properties":{"to":{"type":"string"},"from":{"type":"string"},"limit":{"type":"integer"},"to_time":{"type":"string"},"from_time":{"type":"string"},"max_changes":{"type":"integer"},"min_interchange_min":{"type":"integer"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"journey","displayName":"journey","title":"journey"},{"name":"train","description":"Where is a train right now? Give a train_id (from departures or journey - exact, never ambiguous) or a headcode (e.g. 1A23). Returns the latest position, variation_status and signed lateness_minutes for matching trains. reported_platform is where a TRUST report was logged - often the arrival or through face, not where the train boards. advertised_platform is what the station boards show; when platform_conflict is true the advertised platform wins for anything you tell a passenger. Positions cove","inputSchema":{"type":"object","properties":{"date":{"type":"string"},"origin":{"type":"string"},"headcode":{"type":"string"},"operator":{"type":"string"},"train_id":{"type":"string"},"destination":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"train","displayName":"train","title":"train"},{"name":"delays","description":"Currently-running trains with the worst delays: signed lateness, latest reported location, origin, destination and operator. lateness_minutes is signed, so min_minutes selects trains running at least that late and early running never counts as a delay. service_class is passenger / bus / freight / empty stock / ship / unknown, and passenger_only (the default) keeps the board to trains a passenger can actually board - the network moves a lot of freight and empty stock, and it dominates any list of","inputSchema":{"type":"object","properties":{"limit":{"type":"integer"},"min_minutes":{"type":"integer"},"passenger_only":{"type":"boolean"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"delays","displayName":"delays","title":"delays"},{"name":"cancellations","description":"Today's train cancellations, most recently reported first, with the reason spelled out, its cause group, location and type. `reported_at` is when the consumer received the message and is what the list is ordered by; `input_at` is when the cancellation was keyed into TRUST, which for a service cancelled in advance can be another day. `planned` marks cancellations that were planned or contractually excluded rather than a service failure; `canx_type` ON CALL means the cancellation was planned, not","inputSchema":{"type":"object","properties":{"limit":{"type":"integer"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"cancellations","displayName":"cancellations","title":"cancellations"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Traini&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkudHJhaW5pLmFjL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Traini%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.traini.ac%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Traini%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.traini.ac%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Traini&connectorUrl=https%3A%2F%2Fapi.traini.ac%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Traini\" --url \"https://api.traini.ac/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/traini-mcp-e97c8b6ebe","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/traini-mcp-e97c8b6ebe/tools/{tool}","mcpServerUrl":"https://api.traini.ac/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/traini-mcp-e97c8b6ebe?live=1"}