@pipeworx/la-metro
Connect: https://gateway.pipeworx.io/la-metro/mcp · Install: one-click buttons
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 4
Routes, stops and live service cancellations for Los Angeles County Metro
(LACMTA) bus and rail, from Metro’s own open API at https://api.metro.net.
Keyless. No registration, no key, no quota published.
Tools
| Tool | What it answers |
|---|---|
lametro_routes | The bus or rail route roster, with route codes |
lametro_route_stops | Every stop on a route, in running order |
lametro_stop | One stop’s location and attributes |
lametro_service_cancellations | Trips canceled today, per route (live) |
LA Metro has no public GTFS-Realtime feed — read this before adding a tool
The commonly cited api.metro.net/LACMTA/vehicle_positions, /trip_updates
and /alerts paths are gone; all three return HTTP 404 (verified
2026-09-17). The Mobility Database lists LACMTA with static GTFS only and no
realtime row at all.
The v2 API still advertises a “Real-Time data” tag over
/{agency}/trip_detail/..., and that is the trap worth knowing about: those
endpoints answer HTTP 200 with [] for every route, on both agencies, in
the middle of a weekday afternoon. Fourteen bus and rail routes were swept at
15:00 PDT and every one came back empty. A tool built on them would pass every
CI gate and quietly tell callers that LA Metro is not running any buses — the
silent-zero failure class in docs/silent-zero-policy.md.
canceled_service_summary is live operational data and is wired up. It is
the one real-time signal LACMTA publishes publicly, and it answers a question
no schedule or GTFS feed can: is my line dropping trips today?
Agencies
LACMTA is the bus agency (~124 routes); LACMTA_Rail is rail and busway
(A/B/C/D/E/K lines). The API returns HTTP 422 on any other value.
Tools
- lametro_routes — Every LA Metro bus or rail route, with its route code, short and long name, direction description and map colour. AUTHORITATIVE for “what routes does LA Metro run” — sourced from LACMTA’s own API, not
- lametro_route_stops — Every stop served by one LA Metro route, in running order, with stop id, name, direction and service day type. AUTHORITATIVE for “which stops does route N serve” and for turning a route into stop ids
- lametro_stop — One LA Metro stop by stop id — coordinates, name, and the accessibility and zone attributes LACMTA publishes for it. Returns GeoJSON properties flattened for reading.
- lametro_service_cancellations — Trips LA Metro has canceled on the current service day, counted per route. This is LIVE operational data and the one real-time signal LACMTA publishes publicly — AUTHORITATIVE for “is LA Metro droppin
Tools
lametro_route_stops— Every stop served by one LA Metro route, in running order, with stop id, name, direction and service day type. AUTHORITATIVE for which stops does route N serve and for turning a route into stop ids yolametro_routes— Every LA Metro bus or rail route, with its route code, short and long name, direction description and map colour. AUTHORITATIVE for what routes does LA Metro run — sourced from LACMTA's own API, not alametro_service_cancellations— Trips LA Metro has canceled on the current service day, counted per route. This is LIVE operational data and the one real-time signal LACMTA publishes publicly — AUTHORITATIVE for is LA Metro droppinglametro_stop— One LA Metro stop by stop id — coordinates, name, and the accessibility and zone attributes LACMTA publishes for it. Returns GeoJSON properties flattened for reading.