Sound Transit · Capability

Sound Transit OneBusAway API — Stops

Sound Transit OneBusAway API — Stops. 4 operations. Lead operation: Get Schedule For Stop. Self-contained Naftiko capability covering one Sound Transit business surface.

Run with Naftiko Sound TransitStops

What You Can Do

GET
Getscheduleforstop — Get Schedule For Stop
/v1/schedule-for-stop/id-json
GET
Getstop — Get Stop
/v1/stop/id-json
GET
Liststopsforlocation — List Stops For Location
/v1/stops-for-location-json
GET
Liststopsforroute — List Stops For Route
/v1/stops-for-route/id-json

MCP Tools

get-schedule-stop

Get Schedule For Stop

read-only idempotent
get-stop

Get Stop

read-only idempotent
list-stops-location

List Stops For Location

read-only idempotent
list-stops-route

List Stops For Route

read-only idempotent

Capability Spec

onebusaway-stops.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Sound Transit OneBusAway API — Stops
  description: 'Sound Transit OneBusAway API — Stops. 4 operations. Lead operation: Get Schedule For Stop. Self-contained
    Naftiko capability covering one Sound Transit business surface.'
  tags:
  - Sound Transit
  - Stops
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SOUND_TRANSIT_API_KEY: SOUND_TRANSIT_API_KEY
capability:
  consumes:
  - type: http
    namespace: onebusaway-stops
    baseUri: https://api.pugetsound.onebusaway.org/api/where
    description: Sound Transit OneBusAway API — Stops business capability. Self-contained, no shared references.
    resources:
    - name: schedule-for-stop-id}.json
      path: /schedule-for-stop/{id}.json
      operations:
      - name: getscheduleforstop
        method: GET
        description: Get Schedule For Stop
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Stop identifier
          required: true
        - name: date
          in: query
          type: string
          description: Service date in YYYY-MM-DD format (default today)
    - name: stop-id}.json
      path: /stop/{id}.json
      operations:
      - name: getstop
        method: GET
        description: Get Stop
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Unique stop identifier
          required: true
    - name: stops-for-location.json
      path: /stops-for-location.json
      operations:
      - name: liststopsforlocation
        method: GET
        description: List Stops For Location
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: lat
          in: query
          type: number
          description: Latitude of the search location
          required: true
        - name: lon
          in: query
          type: number
          description: Longitude of the search location
          required: true
        - name: radius
          in: query
          type: integer
          description: Search radius in meters (default 500)
        - name: query
          in: query
          type: string
          description: Stop code or name search query
    - name: stops-for-route-id}.json
      path: /stops-for-route/{id}.json
      operations:
      - name: liststopsforroute
        method: GET
        description: List Stops For Route
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Route identifier
          required: true
  exposes:
  - type: rest
    namespace: onebusaway-stops-rest
    port: 8080
    description: REST adapter for Sound Transit OneBusAway API — Stops. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/schedule-for-stop/id-json
      name: schedule-for-stop-id-json
      description: REST surface for schedule-for-stop-id}.json.
      operations:
      - method: GET
        name: getscheduleforstop
        description: Get Schedule For Stop
        call: onebusaway-stops.getscheduleforstop
        with:
          id: rest.id
          date: rest.date
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/stop/id-json
      name: stop-id-json
      description: REST surface for stop-id}.json.
      operations:
      - method: GET
        name: getstop
        description: Get Stop
        call: onebusaway-stops.getstop
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/stops-for-location-json
      name: stops-for-location-json
      description: REST surface for stops-for-location.json.
      operations:
      - method: GET
        name: liststopsforlocation
        description: List Stops For Location
        call: onebusaway-stops.liststopsforlocation
        with:
          lat: rest.lat
          lon: rest.lon
          radius: rest.radius
          query: rest.query
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/stops-for-route/id-json
      name: stops-for-route-id-json
      description: REST surface for stops-for-route-id}.json.
      operations:
      - method: GET
        name: liststopsforroute
        description: List Stops For Route
        call: onebusaway-stops.liststopsforroute
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: onebusaway-stops-mcp
    port: 9090
    transport: http
    description: MCP adapter for Sound Transit OneBusAway API — Stops. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: get-schedule-stop
      description: Get Schedule For Stop
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: onebusaway-stops.getscheduleforstop
      with:
        id: tools.id
        date: tools.date
      outputParameters:
      - type: object
        mapping: $.
    - name: get-stop
      description: Get Stop
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: onebusaway-stops.getstop
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-stops-location
      description: List Stops For Location
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: onebusaway-stops.liststopsforlocation
      with:
        lat: tools.lat
        lon: tools.lon
        radius: tools.radius
        query: tools.query
      outputParameters:
      - type: object
        mapping: $.
    - name: list-stops-route
      description: List Stops For Route
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: onebusaway-stops.liststopsforroute
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.