Koskamo

onebusaway-mcp-server

An MCP server that provides 16 tools and 2 resources to query OneBusAway transit APIs. It allows agents to list agencies, find stops and routes by location or name, search for specific stops or routes, retrieve real-time arrivals and vehicle positions, and access full schedules and service alerts for transit systems like King County Metro.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

onebusaway-mcp-server logo, by cyanheadsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by cyanheads
MCP endpoint (Streamable HTTP)
https://onebusaway.caseyjhand.com/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 15 of 15 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find bus stops near a specific latitude and longitude
  • Retrieve real-time arrivals and departures for a stop
  • Search for transit routes by name or number
  • Get real-time vehicle positions for an agency

Source and maintenance

Community listingRegistry 0.3.0
Maintenance checked

Protocol and capabilities

Server
onebusaway-mcp-server 0.3.0
MCP protocol negotiated in check
2025-11-25
Tools
16 advertised
Resources
3 advertised
Resource templates
3 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "subscribe": true,
    "listChanged": true
  },
  "extensions": {
    "io.modelcontextprotocol/skills": {
      "directoryRead": true
    }
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

OneBusAway provides stops, routes, arrivals, vehicles, alerts, and timetables for the configured instance (Puget Sound by default), without origin-to-destination trip planning. Stop and route IDs are agency-prefixed and instance-specific: resolve them through discovery before arrivals, schedule, or vehicle calls; do not construct IDs from displayed codes or route numbers. Use stop context for arrivals plus available alert detail, and follow notices for unresolved references. Carry arrival trip IDs into trip lookup and a non-null block ID into block lookup. Name search availability varies by instance; use geographic discovery or agency route listings when it fails. Requests share an upstream API-key budget; honor rate-limit retry guidance. See onebusaway-guide for selection and interpretation gates.

Tools

16 advertised

onebusaway_list_agencies — List Transit Agencies
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all transit agencies served by this OneBusAway instance. Returns agency IDs, names, contact info, timezone, and geographic coverage center. Agency IDs are needed for onebusaway_list_routes_for_agency and onebusaway_get_vehicles.

onebusaway_list_agencies input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {},
  "additionalProperties": false
}
onebusaway_list_agencies output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "agencies",
        "limitExceeded",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of transit agencies returned."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no agencies were returned."
    },
    "agencies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "url",
          "phone",
          "timezone",
          "coverageCenter",
          "coverageSpan"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency ID used in other calls (e.g. \"1\" for Metro Transit)."
          },
          "url": {
            "type": "string",
            "description": "Agency website URL."
          },
          "name": {
            "type": "string",
            "description": "Full agency name."
          },
          "phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Agency phone number, or null if not provided."
          },
          "timezone": {
            "type": "string",
            "description": "Agency timezone (e.g. \"America/Los_Angeles\")."
          },
          "coverageSpan": {
            "type": "object",
            "required": [
              "latSpan",
              "lonSpan"
            ],
            "properties": {
              "latSpan": {
                "type": "number",
                "description": "Latitude span of the coverage area in degrees."
              },
              "lonSpan": {
                "type": "number",
                "description": "Longitude span of the coverage area in degrees."
              }
            },
            "description": "Geographic extent of the agency's service area.",
            "additionalProperties": false
          },
          "coverageCenter": {
            "type": "object",
            "required": [
              "lat",
              "lon"
            ],
            "properties": {
              "lat": {
                "type": "number",
                "description": "Latitude of the coverage center."
              },
              "lon": {
                "type": "number",
                "description": "Longitude of the coverage center."
              }
            },
            "description": "Geographic center of the agency's service area.",
            "additionalProperties": false
          }
        },
        "description": "A transit agency with coverage information.",
        "additionalProperties": false
      },
      "description": "All agencies served by this OneBusAway instance."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if the upstream capped the agency list — some agencies were omitted. This endpoint has no pagination to retrieve them."
    }
  },
  "additionalProperties": false
}
onebusaway_list_agencies annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
onebusaway_find_stops — Find Stops Near Location
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find bus stops near a location. Returns stops within a radius, each with ID, name, direction, served routes, and wheelchair boarding status. Use stopId values from results to fetch real-time arrivals with onebusaway_get_arrivals. Optionally filter by stop code (the number printed on the stop sign, e.g. "75403").

onebusaway_find_stops input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude of the search center, in [-90, 90]."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude of the search center, in [-180, 180]."
    },
    "query": {
      "type": "string",
      "description": "Optional stop code filter (the number printed on the stop sign, e.g. \"75403\"). When provided, returns only stops matching this code within the radius."
    },
    "radius": {
      "type": "number",
      "default": 300,
      "maximum": 1600,
      "description": "Search radius in meters. Must be positive; capped at 1600m, beyond which results degrade. Defaults to 300m.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
onebusaway_find_stops output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "stops",
        "limitExceeded",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of stops returned."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "query": {
      "type": "string",
      "description": "Stop code filter applied to the search, if any."
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "code",
          "name",
          "lat",
          "lon",
          "direction",
          "routeIds",
          "wheelchairBoarding"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency-prefixed stop ID (e.g. \"1_75403\"). Use with onebusaway_get_arrivals."
          },
          "lat": {
            "type": "number",
            "description": "Latitude of the stop."
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the stop."
          },
          "code": {
            "type": "string",
            "description": "The stop code printed on the sign."
          },
          "name": {
            "type": "string",
            "description": "Stop name."
          },
          "routeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IDs of routes that serve this stop."
          },
          "direction": {
            "type": "string",
            "description": "Compass direction of travel at this stop (e.g. \"NW\")."
          },
          "wheelchairBoarding": {
            "enum": [
              "ACCESSIBLE",
              "NOT_ACCESSIBLE",
              "UNKNOWN"
            ],
            "type": "string",
            "description": "Wheelchair boarding status."
          }
        },
        "description": "A transit stop with location and route information.",
        "additionalProperties": false
      },
      "description": "Stops within the search radius."
    },
    "notice": {
      "type": "string",
      "description": "Guidance when results are empty or truncated — e.g. how to narrow the radius or verify the stop code."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if more stops exist beyond the returned set; narrow the radius to see all."
    }
  },
  "additionalProperties": false
}
onebusaway_find_stops annotations
{
  "readOnlyHint": true
}
onebusaway_find_routes — Find Routes Near Location
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find transit routes near a location, optionally filtered by name or number. Returns routes with IDs, short names, and descriptions. Use routeId values to fetch schedules, vehicles, or stop sequences.

onebusaway_find_routes input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude of the search center, in [-90, 90]."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude of the search center, in [-180, 180]."
    },
    "query": {
      "type": "string",
      "description": "Filter by route name or number (e.g. \"44\" or \"Link Light Rail\")."
    },
    "radius": {
      "type": "number",
      "default": 500,
      "maximum": 1600,
      "description": "Search radius in meters. Must be positive; capped at 1600m. Defaults to 500m. Ignored when latSpan and lonSpan are both set.",
      "exclusiveMinimum": 0
    },
    "latSpan": {
      "type": "number",
      "description": "Optional bounding-box height in degrees, as an alternative to radius. Takes effect only when lonSpan is also set, in which case radius is ignored.",
      "exclusiveMinimum": 0
    },
    "lonSpan": {
      "type": "number",
      "description": "Optional bounding-box width in degrees, as an alternative to radius. Takes effect only when latSpan is also set, in which case radius is ignored.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
onebusaway_find_routes output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "routes",
        "limitExceeded",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of routes returned."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "query": {
      "type": "string",
      "description": "Route name/number filter applied to the search, if any."
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no routes matched — e.g. try a larger radius or different query."
    },
    "routes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "shortName",
          "longName",
          "description",
          "agencyId",
          "agencyName",
          "type",
          "color",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency-prefixed route ID (e.g. \"1_100259\"). Use with onebusaway_get_schedule_for_route or onebusaway_get_vehicles."
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Agency schedule page URL, or null."
          },
          "type": {
            "type": "number",
            "description": "GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car."
          },
          "color": {
            "type": [
              "string",
              "null"
            ],
            "description": "Route brand color hex (without #), or null."
          },
          "agencyId": {
            "type": "string",
            "description": "Agency ID that operates this route."
          },
          "longName": {
            "type": "string",
            "description": "Full route name."
          },
          "shortName": {
            "type": "string",
            "description": "The number or short name displayed on vehicles (e.g. \"44\")."
          },
          "agencyName": {
            "type": "string",
            "description": "Agency name that operates this route."
          },
          "description": {
            "type": "string",
            "description": "Route description."
          }
        },
        "description": "A transit route with agency and type information.",
        "additionalProperties": false
      },
      "description": "Routes found near the specified location."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if more routes exist beyond the returned set; narrow the radius or set latSpan/lonSpan to see all."
    }
  },
  "additionalProperties": false
}
onebusaway_find_routes annotations
{
  "readOnlyHint": true
}
onebusaway_search_stops — Search Stops by Name or Code
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search for stops by name or code. Returns matching stops with IDs and coordinates. Use to resolve a human-readable stop name or number to a stop ID for arrivals lookups with onebusaway_get_arrivals.

onebusaway_search_stops input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Stop name fragment or stop code (e.g. \"University Way\" or \"75403\")."
    },
    "maxCount": {
      "type": "integer",
      "default": 10,
      "maximum": 100,
      "description": "Maximum number of results to return. A positive integer, at most 100. Defaults to 10.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
onebusaway_search_stops output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "stops",
        "limitExceeded",
        "query",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "cap": {
      "type": "number",
      "description": "The maxCount limit applied to truncated results."
    },
    "count": {
      "type": "number",
      "description": "Number of stops returned."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "query": {
      "type": "string",
      "description": "Search query sent to the API."
    },
    "shown": {
      "type": "number",
      "description": "Number of stops returned when results were truncated."
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "code",
          "name",
          "lat",
          "lon",
          "direction",
          "routeIds",
          "wheelchairBoarding"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency-prefixed stop ID (e.g. \"1_75403\"). Use with onebusaway_get_arrivals."
          },
          "lat": {
            "type": "number",
            "description": "Latitude of the stop."
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the stop."
          },
          "code": {
            "type": "string",
            "description": "The stop code printed on the sign."
          },
          "name": {
            "type": "string",
            "description": "Stop name."
          },
          "routeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IDs of routes that serve this stop."
          },
          "direction": {
            "type": "string",
            "description": "Compass direction of travel at this stop."
          },
          "wheelchairBoarding": {
            "enum": [
              "ACCESSIBLE",
              "NOT_ACCESSIBLE",
              "UNKNOWN"
            ],
            "type": "string",
            "description": "Wheelchair boarding status."
          }
        },
        "description": "A transit stop with location and route information.",
        "additionalProperties": false
      },
      "description": "Stops matching the search query."
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no stops matched — e.g. try a different name fragment or use onebusaway_find_stops with coordinates."
    },
    "truncated": {
      "type": "boolean",
      "description": "True when matching stops exceeded maxCount."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if more stops match than were returned; raise maxCount or refine the query to see all."
    }
  },
  "additionalProperties": false
}
onebusaway_search_stops annotations
{
  "readOnlyHint": true
}
onebusaway_search_routes — Search Routes by Name or Number
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search for routes by name or number. Returns matching routes with IDs. Use to resolve a route short name (e.g. "44") to a route ID for schedule or vehicle lookups with onebusaway_get_vehicles or onebusaway_get_schedule_for_route.

onebusaway_search_routes input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Route name or number (e.g. \"44\", \"Link\", or \"RapidRide\")."
    },
    "maxCount": {
      "type": "integer",
      "default": 10,
      "maximum": 100,
      "description": "Maximum number of results to return. A positive integer, at most 100. Defaults to 10.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
onebusaway_search_routes output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "routes",
        "limitExceeded",
        "query",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "cap": {
      "type": "number",
      "description": "The maxCount limit applied to truncated results."
    },
    "count": {
      "type": "number",
      "description": "Number of routes returned."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "endpoint_unavailable",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `endpoint_unavailable`: The search/route endpoint returns 404 on this OBA instance (e.g. Puget Sound). `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "query": {
      "type": "string",
      "description": "Route name/number query sent to the API."
    },
    "shown": {
      "type": "number",
      "description": "Number of routes returned when results were truncated."
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no routes matched — e.g. try onebusaway_find_routes with coordinates, or onebusaway_list_routes_for_agency."
    },
    "routes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "shortName",
          "longName",
          "description",
          "agencyId",
          "agencyName",
          "type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency-prefixed route ID (e.g. \"1_100259\"). Use with onebusaway_get_vehicles or onebusaway_get_schedule_for_route."
          },
          "type": {
            "type": "number",
            "description": "GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car."
          },
          "agencyId": {
            "type": "string",
            "description": "Agency ID that operates this route."
          },
          "longName": {
            "type": "string",
            "description": "Full route name."
          },
          "shortName": {
            "type": "string",
            "description": "The number or short name displayed on vehicles (e.g. \"44\")."
          },
          "agencyName": {
            "type": "string",
            "description": "Agency name that operates this route."
          },
          "description": {
            "type": "string",
            "description": "Route description."
          }
        },
        "description": "A transit route with agency and type information.",
        "additionalProperties": false
      },
      "description": "Routes matching the search query."
    },
    "truncated": {
      "type": "boolean",
      "description": "True when matching routes exceeded maxCount."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if more routes match than were returned; raise maxCount or refine the query to see all."
    }
  },
  "additionalProperties": false
}
onebusaway_search_routes annotations
{
  "readOnlyHint": true
}
onebusaway_get_stop — Get Stop Details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch details for a specific stop by ID. Returns the stop's name, coordinates, direction, served routes, and wheelchair accessibility. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403" for Metro Transit stop 75403).

onebusaway_get_stop input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "stopId"
  ],
  "properties": {
    "stopId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed stop ID (e.g. \"1_75403\" for Metro Transit stop 75403, \"40_100239\" for Sound Transit). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs."
    }
  },
  "additionalProperties": false
}
onebusaway_get_stop output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "id",
        "code",
        "name",
        "lat",
        "lon",
        "direction",
        "routeIds",
        "wheelchairBoarding"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "description": "Agency-prefixed stop ID."
    },
    "lat": {
      "type": "number",
      "description": "Latitude of the stop."
    },
    "lon": {
      "type": "number",
      "description": "Longitude of the stop."
    },
    "code": {
      "type": "string",
      "description": "The stop code printed on the sign."
    },
    "name": {
      "type": "string",
      "description": "Stop name."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "stop_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `stop_not_found`: Stop ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "routeIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "IDs of routes that serve this stop. Use with onebusaway_get_arrivals or onebusaway_get_schedule_for_stop."
    },
    "direction": {
      "type": "string",
      "description": "Compass direction of travel at this stop (e.g. \"NW\")."
    },
    "wheelchairBoarding": {
      "enum": [
        "ACCESSIBLE",
        "NOT_ACCESSIBLE",
        "UNKNOWN"
      ],
      "type": "string",
      "description": "Wheelchair boarding status."
    }
  },
  "additionalProperties": false
}
onebusaway_get_stop annotations
{
  "readOnlyHint": true
}
onebusaway_get_route — Get Route Details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch details for a specific route by ID. Returns short name, description, agency, route type, and schedule URL. Route IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_100259").

onebusaway_get_route input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "routeId"
  ],
  "properties": {
    "routeId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed route ID (e.g. \"1_100259\"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs."
    }
  },
  "additionalProperties": false
}
onebusaway_get_route output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "id",
        "shortName",
        "longName",
        "description",
        "agencyId",
        "agencyName",
        "type",
        "color",
        "url"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "description": "Agency-prefixed route ID."
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Agency schedule page URL, or null."
    },
    "type": {
      "type": "number",
      "description": "GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car."
    },
    "color": {
      "type": [
        "string",
        "null"
      ],
      "description": "Route brand color hex (without #), or null."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "route_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `route_not_found`: Route ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "agencyId": {
      "type": "string",
      "description": "Agency ID that operates this route."
    },
    "longName": {
      "type": "string",
      "description": "Full route name."
    },
    "shortName": {
      "type": "string",
      "description": "The number or short name displayed on vehicles (e.g. \"44\")."
    },
    "agencyName": {
      "type": "string",
      "description": "Agency name that operates this route."
    },
    "description": {
      "type": "string",
      "description": "Route description."
    }
  },
  "additionalProperties": false
}
onebusaway_get_route annotations
{
  "readOnlyHint": true
}
onebusaway_list_routes_for_agency — List Routes for Agency
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all routes operated by an agency. Returns route IDs, short names, and descriptions. Use to enumerate an agency's full service before searching for a specific route. Get agencyId values from onebusaway_list_agencies.

onebusaway_list_routes_for_agency input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "agencyId"
  ],
  "properties": {
    "agencyId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency ID (e.g. \"1\" for Metro Transit, \"40\" for Sound Transit). Use onebusaway_list_agencies to discover IDs."
    }
  },
  "additionalProperties": false
}
onebusaway_list_routes_for_agency output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "routes",
        "limitExceeded",
        "agencyId",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of routes returned for this agency."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "agency_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `agency_not_found`: Agency ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no routes were found — verify the agency ID with onebusaway_list_agencies."
    },
    "routes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "shortName",
          "longName",
          "description",
          "type",
          "color",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Agency-prefixed route ID. Use with onebusaway_get_schedule_for_route or onebusaway_get_vehicles."
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Agency schedule page URL, or null."
          },
          "type": {
            "type": "number",
            "description": "GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car."
          },
          "color": {
            "type": [
              "string",
              "null"
            ],
            "description": "Route brand color hex (without #), or null."
          },
          "longName": {
            "type": "string",
            "description": "Full route name."
          },
          "shortName": {
            "type": "string",
            "description": "The number or short name displayed on vehicles."
          },
          "description": {
            "type": "string",
            "description": "Route description."
          }
        },
        "description": "A transit route operated by this agency.",
        "additionalProperties": false
      },
      "description": "All routes operated by this agency."
    },
    "agencyId": {
      "type": "string",
      "description": "Agency ID queried."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if the upstream capped the route list — some routes were omitted. This endpoint has no pagination to retrieve them."
    }
  },
  "additionalProperties": false
}
onebusaway_list_routes_for_agency annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
onebusaway_get_arrivals — Get Real-Time Arrivals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Real-time arrivals and departures at a stop. Returns predicted arrival times, schedule deviation (how many seconds late/early), vehicle positions, and any active service alerts. The predicted boolean on each arrival indicates whether GPS tracking backs the estimate — predicted=false means schedule-only. Use tripId from results for follow-up onebusaway_get_trip calls. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403").

onebusaway_get_arrivals input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "stopId"
  ],
  "properties": {
    "stopId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed stop ID (e.g. \"1_75403\" for Metro Transit stop 75403). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs."
    },
    "minutesAfter": {
      "type": "integer",
      "default": 35,
      "maximum": 240,
      "minimum": 0,
      "description": "Include arrivals expected within the next N minutes — an integer from 0 to 240. Defaults to 35. For a longer horizon, use onebusaway_get_schedule_for_stop."
    },
    "minutesBefore": {
      "type": "integer",
      "default": 5,
      "maximum": 60,
      "minimum": 0,
      "description": "Include arrivals that departed up to this many minutes ago — an integer from 0 to 60. Defaults to 5."
    }
  },
  "additionalProperties": false
}
onebusaway_get_arrivals output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "stopId",
        "stopName",
        "currentTime",
        "arrivals",
        "situations",
        "queriedStop",
        "count",
        "windowMinutes"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of arrivals in the time window."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "stop_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `stop_not_found`: Stop ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no arrivals were found — widen minutesAfter, or check onebusaway_get_schedule_for_stop for scheduled service."
    },
    "stopId": {
      "type": "string",
      "description": "The queried stop ID."
    },
    "arrivals": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "routeShortName",
          "tripHeadsign",
          "predicted",
          "predictedArrivalTime",
          "scheduledArrivalTime",
          "scheduleDeviation",
          "vehicleId",
          "vehiclePosition",
          "stopsAway",
          "tripId",
          "routeId",
          "situationIds"
        ],
        "properties": {
          "tripId": {
            "type": "string",
            "description": "Trip ID for follow-up onebusaway_get_trip calls."
          },
          "routeId": {
            "type": "string",
            "description": "Route ID for follow-up route calls."
          },
          "predicted": {
            "type": "boolean",
            "description": "True if GPS-tracked real-time data is available; false if schedule-only."
          },
          "stopsAway": {
            "type": [
              "number",
              "null"
            ],
            "description": "Number of stops until this stop, or null if unknown."
          },
          "vehicleId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Vehicle ID if known, or null."
          },
          "situationIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IDs of active service alerts affecting this arrival."
          },
          "tripHeadsign": {
            "type": "string",
            "description": "Destination sign text (e.g. \"Downtown Seattle\")."
          },
          "routeShortName": {
            "type": "string",
            "description": "Route short name (e.g. \"44\")."
          },
          "vehiclePosition": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "lat",
                  "lon"
                ],
                "properties": {
                  "lat": {
                    "type": "number",
                    "description": "Vehicle latitude."
                  },
                  "lon": {
                    "type": "number",
                    "description": "Vehicle longitude."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Current vehicle position if available, or null."
          },
          "scheduleDeviation": {
            "type": "number",
            "description": "Seconds late (positive) or early (negative). Only meaningful when predicted=true."
          },
          "predictedArrivalTime": {
            "type": [
              "number",
              "null"
            ],
            "description": "Predicted arrival time as Unix milliseconds. Null when predicted=false."
          },
          "scheduledArrivalTime": {
            "type": "number",
            "description": "Scheduled arrival time as Unix milliseconds."
          }
        },
        "description": "A single arrival or departure at this stop.",
        "additionalProperties": false
      },
      "description": "Arrivals and departures at this stop within the requested time window."
    },
    "stopName": {
      "type": "string",
      "description": "Stop name."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the queried stop agency, or UTC when unavailable or invalid."
    },
    "situations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "timezone",
          "summary",
          "description"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Situation ID."
          },
          "summary": {
            "type": "string",
            "description": "Short summary of the service alert."
          },
          "timezone": {
            "type": "string",
            "description": "Validated timezone shared by all affected scopes, otherwise UTC."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Longer description of the service alert, or null."
          }
        },
        "description": "A single active service alert.",
        "additionalProperties": false
      },
      "description": "Active service alerts at this stop — those attached to the stop itself and those referenced by its arrivals, each listed once."
    },
    "currentTime": {
      "type": "number",
      "description": "Server time as Unix milliseconds, for computing countdown timers."
    },
    "queriedStop": {
      "type": "string",
      "description": "Stop ID queried."
    },
    "windowMinutes": {
      "type": "object",
      "required": [
        "before",
        "after"
      ],
      "properties": {
        "after": {
          "type": "number",
          "description": "Minutes after current time included."
        },
        "before": {
          "type": "number",
          "description": "Minutes before current time included."
        }
      },
      "description": "Time window used for the arrivals query.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
onebusaway_get_arrivals annotations
{
  "readOnlyHint": true
}
onebusaway_get_stop_context — Get Stop Context
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything happening at a stop in one call: the stop's details, its real-time arrivals, and full detail for every service alert on the stop or on any arrival in the window. Returns what onebusaway_get_stop, onebusaway_get_arrivals, and one onebusaway_get_alert call per alert would, from a single upstream request — arrivals in the onebusaway_get_arrivals shape, alerts in the onebusaway_get_alert shape. The stop omits its served-route list; use onebusaway_get_stop for routeIds. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403").

onebusaway_get_stop_context input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "stopId"
  ],
  "properties": {
    "stopId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed stop ID (e.g. \"1_75403\" for Metro Transit stop 75403). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs."
    },
    "minutesAfter": {
      "type": "integer",
      "default": 35,
      "maximum": 240,
      "minimum": 0,
      "description": "Include arrivals expected within the next N minutes — an integer from 0 to 240. Defaults to 35. For a longer horizon, use onebusaway_get_schedule_for_stop."
    },
    "minutesBefore": {
      "type": "integer",
      "default": 5,
      "maximum": 60,
      "minimum": 0,
      "description": "Include arrivals that departed up to this many minutes ago — an integer from 0 to 60. Defaults to 5."
    }
  },
  "additionalProperties": false
}
onebusaway_get_stop_context output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "stop",
        "currentTime",
        "arrivals",
        "alerts",
        "queriedStop",
        "windowMinutes"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "stop": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "id",
            "code",
            "name",
            "lat",
            "lon",
            "direction",
            "wheelchairBoarding"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Agency-prefixed stop ID."
            },
            "lat": {
              "type": "number",
              "description": "Latitude of the stop."
            },
            "lon": {
              "type": "number",
              "description": "Longitude of the stop."
            },
            "code": {
              "type": "string",
              "description": "The stop code printed on the sign."
            },
            "name": {
              "type": "string",
              "description": "Stop name."
            },
            "direction": {
              "type": "string",
              "description": "Compass direction of travel at this stop (e.g. \"NW\")."
            },
            "wheelchairBoarding": {
              "enum": [
                "ACCESSIBLE",
                "NOT_ACCESSIBLE",
                "UNKNOWN"
              ],
              "type": "string",
              "description": "Wheelchair boarding status."
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The queried stop, without its served-route list (use onebusaway_get_stop for routeIds). Null when the upstream response omitted the stop."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "stop_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `stop_not_found`: Stop ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "alerts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "timezone",
          "id",
          "summary",
          "description",
          "reason",
          "severity",
          "consequenceMessage",
          "affects",
          "consequences",
          "activeWindows",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Situation ID."
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for more information about this alert, or null."
          },
          "reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reason code from TPEG: equipmentReason, environmentReason, personnelReason, miscellaneousReason, securityAlert. Null when not provided."
          },
          "affects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stopId": {
                  "type": "string",
                  "description": "Affected stop ID, if scoped to a stop."
                },
                "tripId": {
                  "type": "string",
                  "description": "Affected trip ID, if scoped to a trip."
                },
                "routeId": {
                  "type": "string",
                  "description": "Affected route ID, if scoped to a route."
                },
                "agencyId": {
                  "type": "string",
                  "description": "Affected agency ID, if scoped to an agency."
                }
              },
              "description": "An entity affected by this alert.",
              "additionalProperties": false
            },
            "description": "Stops, routes, trips, or agencies affected by this alert."
          },
          "summary": {
            "type": "string",
            "description": "Short summary of the service alert."
          },
          "severity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Severity level as reported by the agency, or null."
          },
          "timezone": {
            "type": "string",
            "description": "Validated IANA timezone shared by every affected scope, or UTC when unresolved, invalid, absent, or conflicting."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Longer description of the alert, or null."
          },
          "consequences": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "condition": {
                  "type": "string",
                  "description": "Consequence condition (e.g. \"detour\", \"reducedService\")."
                },
                "diversionStopIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Stop IDs on the diversion path, when condition is \"detour\"."
                }
              },
              "description": "A consequence of this alert.",
              "additionalProperties": false
            },
            "description": "Operational consequences of this alert."
          },
          "activeWindows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "to": {
                  "type": "number",
                  "description": "End of active window as Unix milliseconds, if known."
                },
                "from": {
                  "type": "number",
                  "description": "Start of active window as Unix milliseconds, if known."
                }
              },
              "description": "A time window during which this alert is active.",
              "additionalProperties": false
            },
            "description": "Time windows when this alert is active."
          },
          "consequenceMessage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable consequence description (e.g. \"Detour in effect\"), or null."
          }
        },
        "description": "One service alert, in full detail.",
        "additionalProperties": false
      },
      "description": "Service alerts on this stop or on any arrival in the window, each listed once — including alerts whose affected arrivals fall outside the window."
    },
    "notice": {
      "type": "string",
      "description": "What the response is missing and where to get it — no arrivals in the window, stop details absent, or referenced alerts absent."
    },
    "arrivals": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "routeShortName",
          "tripHeadsign",
          "predicted",
          "predictedArrivalTime",
          "scheduledArrivalTime",
          "scheduleDeviation",
          "vehicleId",
          "vehiclePosition",
          "stopsAway",
          "tripId",
          "routeId",
          "situationIds"
        ],
        "properties": {
          "tripId": {
            "type": "string",
            "description": "Trip ID for follow-up onebusaway_get_trip calls."
          },
          "routeId": {
            "type": "string",
            "description": "Route ID for follow-up route calls."
          },
          "predicted": {
            "type": "boolean",
            "description": "True if GPS-tracked real-time data is available; false if schedule-only."
          },
          "stopsAway": {
            "type": [
              "number",
              "null"
            ],
            "description": "Number of stops until this stop, or null if unknown."
          },
          "vehicleId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Vehicle ID if known, or null."
          },
          "situationIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IDs of active service alerts affecting this arrival."
          },
          "tripHeadsign": {
            "type": "string",
            "description": "Destination sign text (e.g. \"Downtown Seattle\")."
          },
          "routeShortName": {
            "type": "string",
            "description": "Route short name (e.g. \"44\")."
          },
          "vehiclePosition": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "lat",
                  "lon"
                ],
                "properties": {
                  "lat": {
                    "type": "number",
                    "description": "Vehicle latitude."
                  },
                  "lon": {
                    "type": "number",
                    "description": "Vehicle longitude."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Current vehicle position if available, or null."
          },
          "scheduleDeviation": {
            "type": "number",
            "description": "Seconds late (positive) or early (negative). Only meaningful when predicted=true."
          },
          "predictedArrivalTime": {
            "type": [
              "number",
              "null"
            ],
            "description": "Predicted arrival time as Unix milliseconds. Null when predicted=false."
          },
          "scheduledArrivalTime": {
            "type": "number",
            "description": "Scheduled arrival time as Unix milliseconds."
          }
        },
        "description": "A single arrival or departure at this stop.",
        "additionalProperties": false
      },
      "description": "Arrivals and departures at this stop within the requested time window."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the queried stop agency, or UTC when unavailable or invalid."
    },
    "currentTime": {
      "type": "number",
      "description": "Server time as Unix milliseconds, for computing countdown timers."
    },
    "queriedStop": {
      "type": "string",
      "description": "Stop ID queried."
    },
    "windowMinutes": {
      "type": "object",
      "required": [
        "before",
        "after"
      ],
      "properties": {
        "after": {
          "type": "number",
          "description": "Minutes after current time included."
        },
        "before": {
          "type": "number",
          "description": "Minutes before current time included."
        }
      },
      "description": "Time window used for the arrivals query.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
onebusaway_get_stop_context annotations
{
  "readOnlyHint": true
}
onebusaway_get_alert — Get Service Alert Detail
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch full detail for a service alert (situation) by ID. Returns the summary, description, reason (e.g. detour, construction), affected stops and routes, consequence description, and active time windows. Situation IDs appear in onebusaway_get_arrivals responses under situationIds and situations[].id.

onebusaway_get_alert input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "situationId"
  ],
  "properties": {
    "situationId": {
      "type": "string",
      "minLength": 1,
      "description": "Situation/alert ID from onebusaway_get_arrivals (situations[].id or arrivals[].situationIds[])."
    }
  },
  "additionalProperties": false
}
onebusaway_get_alert output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "id",
        "summary",
        "description",
        "reason",
        "severity",
        "consequenceMessage",
        "affects",
        "consequences",
        "activeWindows",
        "url"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "description": "Situation ID."
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL for more information about this alert, or null."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "situation_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `situation_not_found`: Situation ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "reason": {
      "type": [
        "string",
        "null"
      ],
      "description": "Reason code from TPEG: equipmentReason, environmentReason, personnelReason, miscellaneousReason, securityAlert. Null when not provided."
    },
    "affects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stopId": {
            "type": "string",
            "description": "Affected stop ID, if scoped to a stop."
          },
          "tripId": {
            "type": "string",
            "description": "Affected trip ID, if scoped to a trip."
          },
          "routeId": {
            "type": "string",
            "description": "Affected route ID, if scoped to a route."
          },
          "agencyId": {
            "type": "string",
            "description": "Affected agency ID, if scoped to an agency."
          }
        },
        "description": "An entity affected by this alert.",
        "additionalProperties": false
      },
      "description": "Stops, routes, trips, or agencies affected by this alert."
    },
    "summary": {
      "type": "string",
      "description": "Short summary of the service alert."
    },
    "severity": {
      "type": [
        "string",
        "null"
      ],
      "description": "Severity level as reported by the agency, or null."
    },
    "timezone": {
      "type": "string",
      "description": "Validated IANA timezone shared by every affected scope, or UTC when unresolved, invalid, absent, or conflicting."
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Longer description of the alert, or null."
    },
    "consequences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "description": "Consequence condition (e.g. \"detour\", \"reducedService\")."
          },
          "diversionStopIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Stop IDs on the diversion path, when condition is \"detour\"."
          }
        },
        "description": "A consequence of this alert.",
        "additionalProperties": false
      },
      "description": "Operational consequences of this alert."
    },
    "activeWindows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "to": {
            "type": "number",
            "description": "End of active window as Unix milliseconds, if known."
          },
          "from": {
            "type": "number",
            "description": "Start of active window as Unix milliseconds, if known."
          }
        },
        "description": "A time window during which this alert is active.",
        "additionalProperties": false
      },
      "description": "Time windows when this alert is active."
    },
    "consequenceMessage": {
      "type": [
        "string",
        "null"
      ],
      "description": "Human-readable consequence description (e.g. \"Detour in effect\"), or null."
    }
  },
  "additionalProperties": false
}
onebusaway_get_alert annotations
{
  "readOnlyHint": true
}
onebusaway_get_trip — Get Trip Status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Real-time status and stop sequence for a trip. Returns vehicle position, schedule deviation, current phase, and remaining stops. Use tripId from onebusaway_get_arrivals to look up a specific vehicle's progress.

onebusaway_get_trip input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "tripId"
  ],
  "properties": {
    "tripId": {
      "type": "string",
      "minLength": 1,
      "description": "Trip ID from an arrivals response or schedule lookup."
    },
    "serviceDateMs": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Service date as Unix milliseconds (midnight local time) — a non-negative integer. Only needed for trips from a previous service day. Omit to use today."
    },
    "includeSchedule": {
      "type": "boolean",
      "default": true,
      "description": "Whether to include the full stop sequence with times. Defaults to true."
    }
  },
  "additionalProperties": false
}
onebusaway_get_trip output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "tripId",
        "routeShortName",
        "tripHeadsign",
        "blockId",
        "status",
        "schedule",
        "situations"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "trip_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `trip_not_found`: Trip ID not found or not active for the service date. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "status": {
      "type": "object",
      "required": [
        "phase",
        "predicted",
        "position",
        "scheduleDeviation",
        "nextStop",
        "closestStop",
        "vehicleId",
        "lastUpdateTime"
      ],
      "properties": {
        "phase": {
          "type": "string",
          "description": "Current journey phase (e.g. \"in_progress\", \"layover_before\", \"layover_during\")."
        },
        "nextStop": {
          "type": [
            "string",
            "null"
          ],
          "description": "Stop ID of the next stop, or null."
        },
        "position": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "lat",
                "lon"
              ],
              "properties": {
                "lat": {
                  "type": "number",
                  "description": "Vehicle latitude."
                },
                "lon": {
                  "type": "number",
                  "description": "Vehicle longitude."
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Current vehicle position if available, or null."
        },
        "predicted": {
          "type": "boolean",
          "description": "True if GPS-tracked real-time data is available."
        },
        "vehicleId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Vehicle ID if known, or null."
        },
        "closestStop": {
          "type": [
            "string",
            "null"
          ],
          "description": "Stop ID of the closest stop, or null."
        },
        "lastUpdateTime": {
          "type": "number",
          "description": "Timestamp of the last real-time update as Unix milliseconds."
        },
        "scheduleDeviation": {
          "type": "number",
          "description": "Seconds late (positive) or early (negative)."
        }
      },
      "description": "Real-time status of the trip.",
      "additionalProperties": false
    },
    "tripId": {
      "type": "string",
      "description": "The queried trip ID."
    },
    "blockId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Block ID grouping this trip with the others the same vehicle runs back-to-back. Pass to onebusaway_get_block for the full block schedule. Null when the trip has no block."
    },
    "schedule": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "stopId",
              "stopName",
              "arrivalTime",
              "departureTime",
              "distanceAlongTripMeters"
            ],
            "properties": {
              "stopId": {
                "type": "string",
                "description": "Stop ID."
              },
              "stopName": {
                "type": "string",
                "description": "Stop name."
              },
              "arrivalTime": {
                "type": "number",
                "description": "Scheduled arrival time as seconds from midnight (GTFS format)."
              },
              "departureTime": {
                "type": "number",
                "description": "Scheduled departure time as seconds from midnight (GTFS format)."
              },
              "distanceAlongTripMeters": {
                "type": "number",
                "description": "Distance along the trip to this stop, in meters."
              }
            },
            "description": "A scheduled stop time along this trip.",
            "additionalProperties": false
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Full stop sequence with times, or null if includeSchedule=false."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the trip route agency, or UTC when unavailable or invalid."
    },
    "situations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Active situation IDs affecting this trip."
    },
    "tripHeadsign": {
      "type": "string",
      "description": "Destination sign text."
    },
    "routeShortName": {
      "type": "string",
      "description": "Route short name (e.g. \"44\")."
    }
  },
  "additionalProperties": false
}
onebusaway_get_trip annotations
{
  "readOnlyHint": true
}
onebusaway_get_block — Get Block Schedule
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch block trip sequences with their stop times and service-calendar conditions. Top-level fields describe the first returned configuration; every remaining alternative is included without choosing a calendar date. Optionally select an exact tripId or complete trips having any departure in a half-open GTFS-seconds interval, independently in every configuration; selection counts trip occurrences before and after filtering. Without selectors, returns all trips with no default cap. Block IDs appear as blockId in onebusaway_get_trip responses; obtain a tripId from onebusaway_get_arrivals first.

onebusaway_get_block input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "blockId"
  ],
  "properties": {
    "tripId": {
      "type": "string",
      "description": "Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds."
    },
    "blockId": {
      "type": "string",
      "minLength": 1,
      "description": "Block ID from a trip record. Obtain a tripId from onebusaway_get_arrivals, then call onebusaway_get_trip to get the blockId."
    },
    "departureFromSec": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid."
    },
    "departureBeforeSec": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied."
    }
  },
  "additionalProperties": false
}
onebusaway_get_block output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "blockId",
        "activeServiceIds",
        "inactiveServiceIds",
        "trips",
        "alternateConfigurations"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "block_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `block_not_found`: Block ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "trips": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "tripId",
          "distanceAlongBlock",
          "accumulatedSlackTime",
          "blockStopTimes"
        ],
        "properties": {
          "tripId": {
            "type": "string",
            "description": "Trip ID for follow-up onebusaway_get_trip calls."
          },
          "blockStopTimes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "stopId",
                "arrivalTime",
                "departureTime"
              ],
              "properties": {
                "stopId": {
                  "type": "string",
                  "description": "Stop ID."
                },
                "pickupType": {
                  "type": "number",
                  "description": "GTFS pickup type (0=regular, 1=no pickup, 2=phone agency, 3=coordinate with driver)."
                },
                "arrivalTime": {
                  "type": "number",
                  "description": "Arrival in GTFS seconds from midnight."
                },
                "dropOffType": {
                  "type": "number",
                  "description": "GTFS drop-off type (0=regular, 1=no dropoff, 2=phone agency, 3=coordinate with driver)."
                },
                "departureTime": {
                  "type": "number",
                  "description": "Departure in GTFS seconds from midnight."
                }
              },
              "description": "A stop time.",
              "additionalProperties": false
            },
            "description": "Ordered stop times."
          },
          "distanceAlongBlock": {
            "type": "number",
            "description": "Cumulative distance (meters) from block start to the first stop of this trip."
          },
          "accumulatedSlackTime": {
            "type": "number",
            "description": "Accumulated layover/slack time (seconds) before this trip starts."
          }
        },
        "description": "A block trip.",
        "additionalProperties": false
      },
      "description": "All trips in the first returned configuration, in order."
    },
    "notice": {
      "type": "string",
      "description": "Alternative-configuration guidance or an aggregate empty-selection notice."
    },
    "blockId": {
      "type": "string",
      "description": "Block ID."
    },
    "selection": {
      "type": "object",
      "required": [
        "total",
        "returned",
        "configurationCounts"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count before local selection."
        },
        "tripId": {
          "type": "string",
          "description": "Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds."
        },
        "returned": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count after local selection."
        },
        "departureFromSec": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid."
        },
        "departureBeforeSec": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied."
        },
        "configurationCounts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "total",
              "returned"
            ],
            "properties": {
              "total": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": 0,
                "description": "Count before local selection."
              },
              "returned": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": 0,
                "description": "Count after local selection."
              }
            },
            "description": "Trip occurrence counts for one configuration.",
            "additionalProperties": false
          },
          "description": "Preserved slot order: index 0 is the top-level first configuration; index 1 is alternateConfigurations[0], and so on, including empty slots."
        }
      },
      "description": "Applied selectors and aggregate trip occurrence counts across every configuration; absent without selectors.",
      "additionalProperties": false
    },
    "activeServiceIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Service IDs required active for the first returned configuration."
    },
    "inactiveServiceIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Service IDs required inactive for the first returned configuration."
    },
    "alternateConfigurations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "activeServiceIds",
          "inactiveServiceIds",
          "trips"
        ],
        "properties": {
          "trips": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "tripId",
                "distanceAlongBlock",
                "accumulatedSlackTime",
                "blockStopTimes"
              ],
              "properties": {
                "tripId": {
                  "type": "string",
                  "description": "Trip ID for follow-up onebusaway_get_trip calls."
                },
                "blockStopTimes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "stopId",
                      "arrivalTime",
                      "departureTime"
                    ],
                    "properties": {
                      "stopId": {
                        "type": "string",
                        "description": "Stop ID."
                      },
                      "pickupType": {
                        "type": "number",
                        "description": "GTFS pickup type (0=regular, 1=no pickup, 2=phone agency, 3=coordinate with driver)."
                      },
                      "arrivalTime": {
                        "type": "number",
                        "description": "Arrival in GTFS seconds from midnight."
                      },
                      "dropOffType": {
                        "type": "number",
                        "description": "GTFS drop-off type (0=regular, 1=no dropoff, 2=phone agency, 3=coordinate with driver)."
                      },
                      "departureTime": {
                        "type": "number",
                        "description": "Departure in GTFS seconds from midnight."
                      }
                    },
                    "description": "A stop time.",
                    "additionalProperties": false
                  },
                  "description": "Ordered stop times."
                },
                "distanceAlongBlock": {
                  "type": "number",
                  "description": "Cumulative distance (meters) from block start to the first stop of this trip."
                },
                "accumulatedSlackTime": {
                  "type": "number",
                  "description": "Accumulated layover/slack time (seconds) before this trip starts."
                }
              },
              "description": "A block trip.",
              "additionalProperties": false
            },
            "description": "Ordered trips in this configuration."
          },
          "activeServiceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Service IDs required active for this configuration."
          },
          "inactiveServiceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Service IDs required inactive for this configuration."
          }
        },
        "description": "An alternative block configuration.",
        "additionalProperties": false
      },
      "description": "Remaining configurations in upstream order; empty when none exist."
    }
  },
  "additionalProperties": false
}
onebusaway_get_block annotations
{
  "readOnlyHint": true
}
onebusaway_get_vehicles — Get Real-Time Vehicle Positions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Real-time positions of active vehicles for an agency. Optionally filter to a single route (client-side). Returns GPS coordinates, counter-clockwise orientation from east, schedule deviation, and current trip. Reports agency records omitted for missing position coordinates. Use agencyId values from onebusaway_list_agencies.

onebusaway_get_vehicles input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "agencyId"
  ],
  "properties": {
    "routeId": {
      "type": "string",
      "description": "Optional agency-prefixed route ID to filter results to one route. Filtering is client-side — all agency vehicles are fetched first."
    },
    "agencyId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency ID (e.g. \"1\" for Metro Transit, \"40\" for Sound Transit). Use onebusaway_list_agencies to discover IDs."
    }
  },
  "additionalProperties": false
}
onebusaway_get_vehicles output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "omittedWithoutPosition",
        "vehicles",
        "limitExceeded",
        "agencyId",
        "count"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of vehicles returned after any route filter."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "agency_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `agency_not_found`: Agency ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "notice": {
      "type": "string",
      "description": "Independent notices for records omitted without position, upstream truncation, and an empty returned list."
    },
    "routeId": {
      "type": "string",
      "description": "Route ID filter applied client-side, if any."
    },
    "agencyId": {
      "type": "string",
      "description": "Agency ID queried."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the requested agency, or UTC when unavailable or invalid."
    },
    "vehicles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "vehicleId",
          "tripId",
          "routeId",
          "routeShortName",
          "tripHeadsign",
          "position",
          "lastUpdateTime",
          "phase",
          "scheduleDeviation",
          "orientation",
          "nextStop",
          "predicted"
        ],
        "properties": {
          "phase": {
            "type": "string",
            "description": "Current journey phase (e.g. \"in_progress\", \"layover_before\")."
          },
          "tripId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Active trip ID, falling back to the vehicle trip ID when absent; null if neither is available. All trip metadata resolves only from this ID."
          },
          "routeId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Current route ID, or null."
          },
          "nextStop": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stop ID of the next stop, or null."
          },
          "position": {
            "type": "object",
            "required": [
              "lat",
              "lon"
            ],
            "properties": {
              "lat": {
                "type": "number",
                "description": "Vehicle latitude."
              },
              "lon": {
                "type": "number",
                "description": "Vehicle longitude."
              }
            },
            "description": "Current GPS position.",
            "additionalProperties": false
          },
          "predicted": {
            "type": "boolean",
            "description": "True if this vehicle is reporting real-time GPS data."
          },
          "vehicleId": {
            "type": "string",
            "description": "Vehicle ID."
          },
          "orientation": {
            "type": [
              "number",
              "null"
            ],
            "description": "Counter-clockwise degrees from east (0=east, 90=north, 180=west, 270=south), not a compass bearing; null if unavailable."
          },
          "tripHeadsign": {
            "type": [
              "string",
              "null"
            ],
            "description": "Destination sign text, or null."
          },
          "lastUpdateTime": {
            "type": "number",
            "description": "Timestamp of the last position update as Unix milliseconds."
          },
          "routeShortName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Route short name, or null."
          },
          "scheduleDeviation": {
            "type": [
              "number",
              "null"
            ],
            "description": "Seconds late (positive) or early (negative), or null."
          }
        },
        "description": "A real-time vehicle position entry.",
        "additionalProperties": false
      },
      "description": "Active vehicles for the agency, optionally filtered by route."
    },
    "limitExceeded": {
      "type": "boolean",
      "description": "True if the upstream capped the vehicle list — some vehicles were omitted. This endpoint has no pagination to retrieve them."
    },
    "omittedWithoutPosition": {
      "type": "number",
      "description": "Agency-wide records omitted because latitude or longitude is missing, counted before route filtering."
    },
    "omittedWithoutPositionOnRoute": {
      "type": "number",
      "description": "Omitted records whose canonical current trip resolves to the requested route; present only with a route filter."
    }
  },
  "additionalProperties": false
}
onebusaway_get_vehicles annotations
{
  "readOnlyHint": true
}
onebusaway_get_schedule_for_stop — Get Stop Schedule
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full-day departure schedule for a stop. Lists every departure by route and direction for the specified date (defaults to today). Optionally filter departure rows by routeId and a half-open Unix-millisecond interval; selection includes counts before and after filtering. Without selectors, returns the complete mapped schedule with no default cap. For live predictions, use onebusaway_get_arrivals instead.

onebusaway_get_schedule_for_stop input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "stopId"
  ],
  "properties": {
    "date": {
      "anyOf": [
        {
          "type": "string",
          "const": ""
        },
        {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "description": "A real calendar date in YYYY-MM-DD form (e.g. \"2026-05-23\")."
        }
      ],
      "description": "Service date as YYYY-MM-DD (e.g. \"2026-05-23\"). Must be a real calendar date. Omit or leave blank for today in the agency's timezone."
    },
    "stopId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed stop ID (e.g. \"1_75403\"). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs."
    },
    "routeId": {
      "type": "string",
      "description": "Exact route ID, combined with departure bounds; omit or leave blank for all routes."
    },
    "departureFromMs": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Inclusive departure lower bound in Unix milliseconds."
    },
    "departureBeforeMs": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Exclusive departure upper bound in Unix milliseconds; must exceed departureFromMs when both are supplied."
    }
  },
  "additionalProperties": false
}
onebusaway_get_schedule_for_stop output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "stopId",
        "stopName",
        "serviceDateMs",
        "routes",
        "queriedStop",
        "routeCount"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "date": {
      "type": "string",
      "description": "Date parameter used for the schedule request, if specified."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "stop_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `stop_not_found`: Stop ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no routes were found — e.g. no service on weekends or holiday schedule in effect."
    },
    "routes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "routeId",
          "routeShortName",
          "directions"
        ],
        "properties": {
          "routeId": {
            "type": "string",
            "description": "Route ID for follow-up onebusaway_get_route or onebusaway_get_schedule_for_route calls."
          },
          "directions": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "tripHeadsign",
                "departures"
              ],
              "properties": {
                "departures": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "scheduledDepartureTime",
                      "tripId"
                    ],
                    "properties": {
                      "tripId": {
                        "type": "string",
                        "description": "Trip ID for follow-up onebusaway_get_trip calls."
                      },
                      "scheduledDepartureTime": {
                        "type": "number",
                        "description": "Scheduled departure time as Unix milliseconds."
                      }
                    },
                    "description": "A single scheduled departure.",
                    "additionalProperties": false
                  },
                  "description": "All departures for this direction."
                },
                "tripHeadsign": {
                  "type": "string",
                  "description": "Destination sign text."
                }
              },
              "description": "A service direction at this stop.",
              "additionalProperties": false
            },
            "description": "Service directions for this route at this stop."
          },
          "routeShortName": {
            "type": "string",
            "description": "Route short name."
          }
        },
        "description": "A route with its scheduled departures from this stop.",
        "additionalProperties": false
      },
      "description": "All routes with departures from this stop on this date."
    },
    "stopId": {
      "type": "string",
      "description": "The queried stop ID."
    },
    "stopName": {
      "type": "string",
      "description": "Stop name."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the queried stop agency, or UTC when unavailable or invalid."
    },
    "selection": {
      "type": "object",
      "required": [
        "total",
        "returned"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count before local selection."
        },
        "routeId": {
          "type": "string",
          "description": "Exact route ID, combined with departure bounds; omit or leave blank for all routes."
        },
        "returned": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count after local selection."
        },
        "departureFromMs": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Inclusive departure lower bound in Unix milliseconds."
        },
        "departureBeforeMs": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Exclusive departure upper bound in Unix milliseconds; must exceed departureFromMs when both are supplied."
        }
      },
      "description": "Applied selectors and departure counts before and after local selection; absent without selectors.",
      "additionalProperties": false
    },
    "routeCount": {
      "type": "number",
      "description": "Number of routes with departures from this stop on this date."
    },
    "queriedStop": {
      "type": "string",
      "description": "Stop ID queried."
    },
    "serviceDateMs": {
      "type": "number",
      "description": "Unchanged upstream schedule-date marker in Unix milliseconds: query time when date is omitted or blank, instance-local midnight for an explicit date."
    }
  },
  "additionalProperties": false
}
onebusaway_get_schedule_for_stop annotations
{
  "readOnlyHint": true
}
onebusaway_get_schedule_for_route — Get Route Schedule
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full-day schedule for a route — all trips, stop sequences, and departure times for the specified date (defaults to today). Optionally select an exact tripId or complete trips having any departure in a half-open GTFS-seconds interval; selection includes counts before and after filtering. Without selectors, returns all mapped trips with no default cap. For live predictions, use onebusaway_get_arrivals at specific stops instead.

onebusaway_get_schedule_for_route input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "routeId"
  ],
  "properties": {
    "date": {
      "anyOf": [
        {
          "type": "string",
          "const": ""
        },
        {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "description": "A real calendar date in YYYY-MM-DD form (e.g. \"2026-05-23\")."
        }
      ],
      "description": "Service date as YYYY-MM-DD (e.g. \"2026-05-23\"). Must be a real calendar date. Omit or leave blank for today."
    },
    "tripId": {
      "type": "string",
      "description": "Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds."
    },
    "routeId": {
      "type": "string",
      "minLength": 1,
      "description": "Agency-prefixed route ID (e.g. \"1_100259\"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs."
    },
    "departureFromSec": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid."
    },
    "departureBeforeSec": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied."
    }
  },
  "additionalProperties": false
}
onebusaway_get_schedule_for_route output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "timezone",
        "routeId",
        "routeShortName",
        "serviceDateMs",
        "trips",
        "queriedRoute",
        "tripCount"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "date": {
      "type": "string",
      "description": "Date parameter used for the schedule request, if specified."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "route_not_found",
                "rate_limited"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `route_not_found`: Route ID does not exist on this instance. `rate_limited`: No upstream request slot opened within the queue wait cap, or OneBusAway returned a rate limit response. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "trips": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "tripId",
          "tripHeadsign",
          "serviceId",
          "stops"
        ],
        "properties": {
          "stops": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "stopId",
                "stopName",
                "arrivalTime",
                "departureTime"
              ],
              "properties": {
                "stopId": {
                  "type": "string",
                  "description": "Stop ID."
                },
                "stopName": {
                  "type": "string",
                  "description": "Stop name."
                },
                "arrivalTime": {
                  "type": "number",
                  "description": "Scheduled arrival time as seconds from midnight (GTFS format)."
                },
                "departureTime": {
                  "type": "number",
                  "description": "Scheduled departure time as seconds from midnight (GTFS format)."
                }
              },
              "description": "A stop time along this trip.",
              "additionalProperties": false
            },
            "description": "Stop sequence for this trip."
          },
          "tripId": {
            "type": "string",
            "description": "Trip ID for follow-up onebusaway_get_trip calls."
          },
          "serviceId": {
            "type": "string",
            "description": "Service calendar ID."
          },
          "tripHeadsign": {
            "type": "string",
            "description": "Destination sign text."
          }
        },
        "description": "A single trip with its scheduled stop sequence.",
        "additionalProperties": false
      },
      "description": "All trips for this route on this date, with their stop sequences."
    },
    "notice": {
      "type": "string",
      "description": "Guidance when no trips were found — e.g. no service on weekends or holiday schedule in effect."
    },
    "routeId": {
      "type": "string",
      "description": "The queried route ID."
    },
    "timezone": {
      "type": "string",
      "description": "Validated timezone of the referenced route agency, or UTC when unavailable or invalid."
    },
    "selection": {
      "type": "object",
      "required": [
        "total",
        "returned"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count before local selection."
        },
        "tripId": {
          "type": "string",
          "description": "Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds."
        },
        "returned": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Count after local selection."
        },
        "departureFromSec": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid."
        },
        "departureBeforeSec": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied."
        }
      },
      "description": "Applied selectors and trip counts before and after local selection; absent without selectors.",
      "additionalProperties": false
    },
    "tripCount": {
      "type": "number",
      "description": "Number of trips for this route on this date."
    },
    "queriedRoute": {
      "type": "string",
      "description": "Route ID queried."
    },
    "serviceDateMs": {
      "type": "number",
      "description": "Unchanged upstream service-date marker (scheduleDate) as Unix milliseconds, identifying the route schedule service day."
    },
    "routeShortName": {
      "type": "string",
      "description": "Route short name."
    }
  },
  "additionalProperties": false
}
onebusaway_get_schedule_for_route annotations
{
  "readOnlyHint": true
}

Prompts

0 advertised

No prompt definitions available.

Resources

3 advertised

Example: Metro Transit Stop 75403 — OneBusAway Stop

Advertised by the server during the last successful anonymous check.

Stop metadata for Metro Transit stop 75403 (Puget Sound instance).

Example: Metro Transit Stop 75403 URI
onebusaway://stop/1_75403

MIME type: application/json

Example: Metro Transit Route 100259 — OneBusAway Route

Advertised by the server during the last successful anonymous check.

Route metadata for Metro Transit route 100259 (Puget Sound instance).

Example: Metro Transit Route 100259 URI
onebusaway://route/1_100259

MIME type: application/json

onebusaway-guide

Advertised by the server during the last successful anonymous check.

Resolve and interpret onebusaway_* transit results when choosing a boarding stop, tracking a route or trip, checking disruptions, or reading service-day schedules. Use for multi-step questions where direction, agency, missing telemetry, or scheduled versus predicted times change the answer.

onebusaway-guide URI
skill://onebusaway-guide/SKILL.md

MIME type: text/markdown

onebusaway-stop — OneBusAway Stop

Advertised by the server during the last successful anonymous check.

Stop metadata — name, coordinates, served routes, and wheelchair accessibility. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403").

onebusaway-stop URI template
onebusaway://stop/{stopId}

MIME type: application/json

onebusaway-route — OneBusAway Route

Advertised by the server during the last successful anonymous check.

Route metadata — short name, description, agency, schedule URL. Route IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_100259").

onebusaway-route URI template
onebusaway://route/{routeId}

MIME type: application/json

io.modelcontextprotocol/skills

Advertised by the server during the last successful anonymous check.

io.modelcontextprotocol/skills URI template
skill://{+path}

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
714 ms
95th percentile latency
714 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 714 ms · metadata changed · 16 tool(s), 3 resource(s), 3 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http onebusaway-mcp-server https://onebusaway.caseyjhand.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add onebusaway-mcp-server --url https://onebusaway.caseyjhand.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable onebusaway-mcp-server in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "url": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "type": "streamableHttp",
      "url": "https://onebusaway.caseyjhand.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start onebusaway-mcp-server and inspect its tools.
VS Code configuration
{
  "servers": {
    "onebusaway-mcp-server": {
      "type": "http",
      "url": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http onebusaway-mcp-server https://onebusaway.caseyjhand.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://onebusaway.caseyjhand.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "serverUrl": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like onebusaway-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.