MBTA · Capability

MBTA V3 API

The MBTA V3 API provides fast, easy access to Massachusetts Bay Transportation Authority schedules, alerts, and real-time information. Returns JSON:API formatted responses (application/vnd.api+json) for routes, stops, trips, schedules, predictions, vehicles, alerts, lines, facilities, services, shapes, and route patterns. Free API keys are available via the developer portal for higher rate limits.

Run with Naftiko MbtaAPI

What You Can Do

GET
Listalerts — List alerts
/alerts
GET
Getalert — Get alert
/alerts/{id}
GET
Listfacilities — List facilities
/facilities
GET
Getfacility — Get facility
/facilities/{id}
GET
Listlines — List lines
/lines
GET
Getline — Get line
/lines/{id}
GET
Listpredictions — List predictions
/predictions
GET
Listroutes — List routes
/routes
GET
Getroute — Get route
/routes/{id}
GET
Listroutepatterns — List route patterns
/route_patterns
GET
Getroutepattern — Get route pattern
/route_patterns/{id}
GET
Listschedules — List schedules
/schedules
GET
Listservices — List services
/services
GET
Getservice — Get service
/services/{id}
GET
Listshapes — List shapes
/shapes
GET
Getshape — Get shape
/shapes/{id}
GET
Liststops — List stops
/stops
GET
Getstop — Get stop
/stops/{id}
GET
Listtrips — List trips
/trips
GET
Gettrip — Get trip
/trips/{id}
GET
Listvehicles — List vehicles
/vehicles
GET
Getvehicle — Get vehicle
/vehicles/{id}

MCP Tools

listalerts

List alerts

read-only idempotent
getalert

Get alert

read-only idempotent
listfacilities

List facilities

read-only idempotent
getfacility

Get facility

read-only idempotent
listlines

List lines

read-only idempotent
getline

Get line

read-only idempotent
listpredictions

List predictions

read-only idempotent
listroutes

List routes

read-only idempotent
getroute

Get route

read-only idempotent
listroutepatterns

List route patterns

read-only idempotent
getroutepattern

Get route pattern

read-only idempotent
listschedules

List schedules

read-only idempotent
listservices

List services

read-only idempotent
getservice

Get service

read-only idempotent
listshapes

List shapes

read-only idempotent
getshape

Get shape

read-only idempotent
liststops

List stops

read-only idempotent
getstop

Get stop

read-only idempotent
listtrips

List trips

read-only idempotent
gettrip

Get trip

read-only idempotent
listvehicles

List vehicles

read-only idempotent
getvehicle

Get vehicle

read-only idempotent

Capability Spec

mbta-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: MBTA V3 API
  description: The MBTA V3 API provides fast, easy access to Massachusetts Bay Transportation Authority schedules, alerts,
    and real-time information. Returns JSON:API formatted responses (application/vnd.api+json) for routes, stops, trips, schedules,
    predictions, vehicles, alerts, lines, facilities, services, shapes, and route patterns. Free API keys are available via
    the developer portal for higher rate limits.
  tags:
  - Mbta
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: mbta
    baseUri: https://api-v3.mbta.com
    description: MBTA V3 API HTTP API.
    authentication:
      type: apikey
      in: header
      name: x-api-key
      value: '{{MBTA_TOKEN}}'
    resources:
    - name: alerts
      path: /alerts
      operations:
      - name: listalerts
        method: GET
        description: List alerts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: alerts-id
      path: /alerts/{id}
      operations:
      - name: getalert
        method: GET
        description: Get alert
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: facilities
      path: /facilities
      operations:
      - name: listfacilities
        method: GET
        description: List facilities
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: facilities-id
      path: /facilities/{id}
      operations:
      - name: getfacility
        method: GET
        description: Get facility
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: lines
      path: /lines
      operations:
      - name: listlines
        method: GET
        description: List lines
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: lines-id
      path: /lines/{id}
      operations:
      - name: getline
        method: GET
        description: Get line
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: predictions
      path: /predictions
      operations:
      - name: listpredictions
        method: GET
        description: List predictions
        inputParameters:
        - name: filter[stop]
          in: query
          type: string
        - name: filter[route]
          in: query
          type: string
        - name: filter[trip]
          in: query
          type: string
        - name: filter[direction_id]
          in: query
          type: integer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: routes
      path: /routes
      operations:
      - name: listroutes
        method: GET
        description: List routes
        inputParameters:
        - name: filter[stop]
          in: query
          type: string
        - name: filter[type]
          in: query
          type: string
        - name: filter[direction_id]
          in: query
          type: integer
        - name: filter[date]
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: routes-id
      path: /routes/{id}
      operations:
      - name: getroute
        method: GET
        description: Get route
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: route-patterns
      path: /route_patterns
      operations:
      - name: listroutepatterns
        method: GET
        description: List route patterns
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: route-patterns-id
      path: /route_patterns/{id}
      operations:
      - name: getroutepattern
        method: GET
        description: Get route pattern
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: schedules
      path: /schedules
      operations:
      - name: listschedules
        method: GET
        description: List schedules
        inputParameters:
        - name: filter[date]
          in: query
          type: string
        - name: filter[direction_id]
          in: query
          type: integer
        - name: filter[route]
          in: query
          type: string
        - name: filter[stop]
          in: query
          type: string
        - name: filter[trip]
          in: query
          type: string
        - name: filter[min_time]
          in: query
          type: string
        - name: filter[max_time]
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: services
      path: /services
      operations:
      - name: listservices
        method: GET
        description: List services
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: services-id
      path: /services/{id}
      operations:
      - name: getservice
        method: GET
        description: Get service
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: shapes
      path: /shapes
      operations:
      - name: listshapes
        method: GET
        description: List shapes
        inputParameters:
        - name: filter[route]
          in: query
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: shapes-id
      path: /shapes/{id}
      operations:
      - name: getshape
        method: GET
        description: Get shape
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: stops
      path: /stops
      operations:
      - name: liststops
        method: GET
        description: List stops
        inputParameters:
        - name: filter[latitude]
          in: query
          type: number
        - name: filter[longitude]
          in: query
          type: number
        - name: filter[radius]
          in: query
          type: number
        - name: filter[route]
          in: query
          type: string
        - name: filter[route_type]
          in: query
          type: string
        - name: filter[location_type]
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: stops-id
      path: /stops/{id}
      operations:
      - name: getstop
        method: GET
        description: Get stop
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: trips
      path: /trips
      operations:
      - name: listtrips
        method: GET
        description: List trips
        inputParameters:
        - name: filter[date]
          in: query
          type: string
        - name: filter[direction_id]
          in: query
          type: integer
        - name: filter[route]
          in: query
          type: string
        - name: filter[route_pattern]
          in: query
          type: string
        - name: filter[name]
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: trips-id
      path: /trips/{id}
      operations:
      - name: gettrip
        method: GET
        description: Get trip
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: vehicles
      path: /vehicles
      operations:
      - name: listvehicles
        method: GET
        description: List vehicles
        inputParameters:
        - name: filter[trip]
          in: query
          type: string
        - name: filter[label]
          in: query
          type: string
        - name: filter[route]
          in: query
          type: string
        - name: filter[direction_id]
          in: query
          type: integer
        - name: filter[route_type]
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: vehicles-id
      path: /vehicles/{id}
      operations:
      - name: getvehicle
        method: GET
        description: Get vehicle
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: mbta-rest
    description: REST adapter for MBTA V3 API.
    resources:
    - path: /alerts
      name: listalerts
      operations:
      - method: GET
        name: listalerts
        description: List alerts
        call: mbta.listalerts
        outputParameters:
        - type: object
          mapping: $.
    - path: /alerts/{id}
      name: getalert
      operations:
      - method: GET
        name: getalert
        description: Get alert
        call: mbta.getalert
        outputParameters:
        - type: object
          mapping: $.
    - path: /facilities
      name: listfacilities
      operations:
      - method: GET
        name: listfacilities
        description: List facilities
        call: mbta.listfacilities
        outputParameters:
        - type: object
          mapping: $.
    - path: /facilities/{id}
      name: getfacility
      operations:
      - method: GET
        name: getfacility
        description: Get facility
        call: mbta.getfacility
        outputParameters:
        - type: object
          mapping: $.
    - path: /lines
      name: listlines
      operations:
      - method: GET
        name: listlines
        description: List lines
        call: mbta.listlines
        outputParameters:
        - type: object
          mapping: $.
    - path: /lines/{id}
      name: getline
      operations:
      - method: GET
        name: getline
        description: Get line
        call: mbta.getline
        outputParameters:
        - type: object
          mapping: $.
    - path: /predictions
      name: listpredictions
      operations:
      - method: GET
        name: listpredictions
        description: List predictions
        call: mbta.listpredictions
        outputParameters:
        - type: object
          mapping: $.
    - path: /routes
      name: listroutes
      operations:
      - method: GET
        name: listroutes
        description: List routes
        call: mbta.listroutes
        outputParameters:
        - type: object
          mapping: $.
    - path: /routes/{id}
      name: getroute
      operations:
      - method: GET
        name: getroute
        description: Get route
        call: mbta.getroute
        outputParameters:
        - type: object
          mapping: $.
    - path: /route_patterns
      name: listroutepatterns
      operations:
      - method: GET
        name: listroutepatterns
        description: List route patterns
        call: mbta.listroutepatterns
        outputParameters:
        - type: object
          mapping: $.
    - path: /route_patterns/{id}
      name: getroutepattern
      operations:
      - method: GET
        name: getroutepattern
        description: Get route pattern
        call: mbta.getroutepattern
        outputParameters:
        - type: object
          mapping: $.
    - path: /schedules
      name: listschedules
      operations:
      - method: GET
        name: listschedules
        description: List schedules
        call: mbta.listschedules
        outputParameters:
        - type: object
          mapping: $.
    - path: /services
      name: listservices
      operations:
      - method: GET
        name: listservices
        description: List services
        call: mbta.listservices
        outputParameters:
        - type: object
          mapping: $.
    - path: /services/{id}
      name: getservice
      operations:
      - method: GET
        name: getservice
        description: Get service
        call: mbta.getservice
        outputParameters:
        - type: object
          mapping: $.
    - path: /shapes
      name: listshapes
      operations:
      - method: GET
        name: listshapes
        description: List shapes
        call: mbta.listshapes
        outputParameters:
        - type: object
          mapping: $.
    - path: /shapes/{id}
      name: getshape
      operations:
      - method: GET
        name: getshape
        description: Get shape
        call: mbta.getshape
        outputParameters:
        - type: object
          mapping: $.
    - path: /stops
      name: liststops
      operations:
      - method: GET
        name: liststops
        description: List stops
        call: mbta.liststops
        outputParameters:
        - type: object
          mapping: $.
    - path: /stops/{id}
      name: getstop
      operations:
      - method: GET
        name: getstop
        description: Get stop
        call: mbta.getstop
        outputParameters:
        - type: object
          mapping: $.
    - path: /trips
      name: listtrips
      operations:
      - method: GET
        name: listtrips
        description: List trips
        call: mbta.listtrips
        outputParameters:
        - type: object
          mapping: $.
    - path: /trips/{id}
      name: gettrip
      operations:
      - method: GET
        name: gettrip
        description: Get trip
        call: mbta.gettrip
        outputParameters:
        - type: object
          mapping: $.
    - path: /vehicles
      name: listvehicles
      operations:
      - method: GET
        name: listvehicles
        description: List vehicles
        call: mbta.listvehicles
        outputParameters:
        - type: object
          mapping: $.
    - path: /vehicles/{id}
      name: getvehicle
      operations:
      - method: GET
        name: getvehicle
        description: Get vehicle
        call: mbta.getvehicle
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: mbta-mcp
    transport: http
    description: MCP adapter for MBTA V3 API for AI agent use.
    tools:
    - name: listalerts
      description: List alerts
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listalerts
      outputParameters:
      - type: object
        mapping: $.
    - name: getalert
      description: Get alert
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getalert
      outputParameters:
      - type: object
        mapping: $.
    - name: listfacilities
      description: List facilities
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listfacilities
      outputParameters:
      - type: object
        mapping: $.
    - name: getfacility
      description: Get facility
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getfacility
      outputParameters:
      - type: object
        mapping: $.
    - name: listlines
      description: List lines
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listlines
      outputParameters:
      - type: object
        mapping: $.
    - name: getline
      description: Get line
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getline
      outputParameters:
      - type: object
        mapping: $.
    - name: listpredictions
      description: List predictions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listpredictions
      with:
        filter[stop]: tools.filter[stop]
        filter[route]: tools.filter[route]
        filter[trip]: tools.filter[trip]
        filter[direction_id]: tools.filter[direction_id]
      inputParameters:
      - name: filter[stop]
        type: string
        description: filter[stop]
      - name: filter[route]
        type: string
        description: filter[route]
      - name: filter[trip]
        type: string
        description: filter[trip]
      - name: filter[direction_id]
        type: integer
        description: filter[direction_id]
      outputParameters:
      - type: object
        mapping: $.
    - name: listroutes
      description: List routes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listroutes
      with:
        filter[stop]: tools.filter[stop]
        filter[type]: tools.filter[type]
        filter[direction_id]: tools.filter[direction_id]
        filter[date]: tools.filter[date]
      inputParameters:
      - name: filter[stop]
        type: string
        description: filter[stop]
      - name: filter[type]
        type: string
        description: filter[type]
      - name: filter[direction_id]
        type: integer
        description: filter[direction_id]
      - name: filter[date]
        type: string
        description: filter[date]
      outputParameters:
      - type: object
        mapping: $.
    - name: getroute
      description: Get route
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getroute
      outputParameters:
      - type: object
        mapping: $.
    - name: listroutepatterns
      description: List route patterns
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listroutepatterns
      outputParameters:
      - type: object
        mapping: $.
    - name: getroutepattern
      description: Get route pattern
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getroutepattern
      outputParameters:
      - type: object
        mapping: $.
    - name: listschedules
      description: List schedules
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listschedules
      with:
        filter[date]: tools.filter[date]
        filter[direction_id]: tools.filter[direction_id]
        filter[route]: tools.filter[route]
        filter[stop]: tools.filter[stop]
        filter[trip]: tools.filter[trip]
        filter[min_time]: tools.filter[min_time]
        filter[max_time]: tools.filter[max_time]
      inputParameters:
      - name: filter[date]
        type: string
        description: filter[date]
      - name: filter[direction_id]
        type: integer
        description: filter[direction_id]
      - name: filter[route]
        type: string
        description: filter[route]
      - name: filter[stop]
        type: string
        description: filter[stop]
      - name: filter[trip]
        type: string
        description: filter[trip]
      - name: filter[min_time]
        type: string
        description: filter[min_time]
      - name: filter[max_time]
        type: string
        description: filter[max_time]
      outputParameters:
      - type: object
        mapping: $.
    - name: listservices
      description: List services
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listservices
      outputParameters:
      - type: object
        mapping: $.
    - name: getservice
      description: Get service
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getservice
      outputParameters:
      - type: object
        mapping: $.
    - name: listshapes
      description: List shapes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listshapes
      with:
        filter[route]: tools.filter[route]
      inputParameters:
      - name: filter[route]
        type: string
        description: filter[route]
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getshape
      description: Get shape
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getshape
      outputParameters:
      - type: object
        mapping: $.
    - name: liststops
      description: List stops
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.liststops
      with:
        filter[latitude]: tools.filter[latitude]
        filter[longitude]: tools.filter[longitude]
        filter[radius]: tools.filter[radius]
        filter[route]: tools.filter[route]
        filter[route_type]: tools.filter[route_type]
        filter[location_type]: tools.filter[location_type]
      inputParameters:
      - name: filter[latitude]
        type: number
        description: filter[latitude]
      - name: filter[longitude]
        type: number
        description: filter[longitude]
      - name: filter[radius]
        type: number
        description: filter[radius]
      - name: filter[route]
        type: string
        description: filter[route]
      - name: filter[route_type]
        type: string
        description: filter[route_type]
      - name: filter[location_type]
        type: string
        description: filter[location_type]
      outputParameters:
      - type: object
        mapping: $.
    - name: getstop
      description: Get stop
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getstop
      outputParameters:
      - type: object
        mapping: $.
    - name: listtrips
      description: List trips
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listtrips
      with:
        filter[date]: tools.filter[date]
        filter[direction_id]: tools.filter[direction_id]
        filter[route]: tools.filter[route]
        filter[route_pattern]: tools.filter[route_pattern]
        filter[name]: tools.filter[name]
      inputParameters:
      - name: filter[date]
        type: string
        description: filter[date]
      - name: filter[direction_id]
        type: integer
        description: filter[direction_id]
      - name: filter[route]
        type: string
        description: filter[route]
      - name: filter[route_pattern]
        type: string
        description: filter[route_pattern]
      - name: filter[name]
        type: string
        description: filter[name]
      outputParameters:
      - type: object
        mapping: $.
    - name: gettrip
      description: Get trip
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.gettrip
      outputParameters:
      - type: object
        mapping: $.
    - name: listvehicles
      description: List vehicles
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.listvehicles
      with:
        filter[trip]: tools.filter[trip]
        filter[label]: tools.filter[label]
        filter[route]: tools.filter[route]
        filter[direction_id]: tools.filter[direction_id]
        filter[route_type]: tools.filter[route_type]
      inputParameters:
      - name: filter[trip]
        type: string
        description: filter[trip]
      - name: filter[label]
        type: string
        description: filter[label]
      - name: filter[route]
        type: string
        description: filter[route]
      - name: filter[direction_id]
        type: integer
        description: filter[direction_id]
      - name: filter[route_type]
        type: string
        description: filter[route_type]
      outputParameters:
      - type: object
        mapping: $.
    - name: getvehicle
      description: Get vehicle
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: mbta.getvehicle
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    MBTA_TOKEN: MBTA_TOKEN