Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/onebusaway-mcp-server

REMOTE · ONEBUSAWAY.CASEYJHAND.COM · 2 COMPONENTS

Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.

0 this week 90 Trust /100

Last scanned (17 hours ago)

Scores higher than 98% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Maps and Location

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability81
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2903 tokens (~152/item across 19 items; 16 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 26 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “onebusaway_get_vehicles” rewrote its description, which is the text the model reads security
    • Tool “onebusaway_get_schedule_for_route” rewrote its description, which is the text the model reads security
    • Tool “onebusaway_get_block” rewrote its description, which is the text the model reads security
    • Tool “onebusaway_get_schedule_for_stop” rewrote its description, which is the text the model reads security
    • New resource “onebusaway-guide” functional
    • Server version: 0.2.1 → 0.3.0 functional
    • “onebusaway_get_schedule_for_stop” added an optional parameter “departureBeforeMs” cosmetic
    • “onebusaway_get_schedule_for_stop” added an optional parameter “departureFromMs” cosmetic
    • “onebusaway_get_schedule_for_stop” added an optional parameter “routeId” cosmetic
    • “onebusaway_get_schedule_for_route” added an optional parameter “departureFromSec” cosmetic
    • “onebusaway_get_schedule_for_route” added an optional parameter “departureBeforeSec” cosmetic
    • “onebusaway_get_block” added an optional parameter “tripId” cosmetic
    • “onebusaway_get_block” added an optional parameter “departureBeforeSec” cosmetic
    • “onebusaway_get_block” added an optional parameter “departureFromSec” cosmetic
    • “onebusaway_get_schedule_for_route” added an optional parameter “tripId” cosmetic
  • 25 Oct 26 +1
    • Stability: fail → pass ▲ security
  • 10 Oct 26 0
    • Server version: 0.2.0 → 0.2.1 functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 19 Sept 26 0
    • Server version: 0.1.14 → 0.1.15 functional
  • 9 Sept 26 0
    • Stability: 0.97 → pass security
  • 7 Sept 26 0
    • Stability: pass → 0.93 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://onebusaway.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 2 Nov 2026 31 Jan 2027 ECDSA 256 ECDSA-SHA256 995a30681ab772540e934241ca1d576c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of onebusaway.caseyjhand.com. — Secure

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
caseyjhand.com. DS published 2371 13 Verified
onebusaway.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://onebusaway.caseyjhand.com/mcp Verified 200
http (plaintext) http://onebusaway.caseyjhand.com/mcp HTTPS enforced 301 https://onebusaway.caseyjhand.com/mcp
MCP tools · 16 exposed · ~2,639 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
onebusaway_find_routes ~227

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.

NameTypeReqDescription
latnumberyesLatitude of the search center, in [-90, 90].
latSpannumber–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.
lonnumberyesLongitude of the search center, in [-180, 180].
lonSpannumber–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.
querystring–Filter by route name or number (e.g. "44" or "Link Light Rail").
radiusnumber–Search radius in meters. Must be positive; capped at 1600m. Defaults to 500m. Ignored when latSpan and lonSpan are both set.
NameTypeReqDescription
countnumber–Number of routes returned.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if more routes exist beyond the returned set; narrow the radius or set latSpan/lonSpan to see all.
noticestring–Guidance when no routes matched — e.g. try a larger radius or different query.
querystring–Route name/number filter applied to the search, if any.
routesarray–Routes found near the specified location.

No examples provided.

onebusaway_find_stops ~192

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").

NameTypeReqDescription
latnumberyesLatitude of the search center, in [-90, 90].
lonnumberyesLongitude of the search center, in [-180, 180].
querystring–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.
radiusnumber–Search radius in meters. Must be positive; capped at 1600m, beyond which results degrade. Defaults to 300m.
NameTypeReqDescription
countnumber–Number of stops returned.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if more stops exist beyond the returned set; narrow the radius to see all.
noticestring–Guidance when results are empty or truncated — e.g. how to narrow the radius or verify the stop code.
querystring–Stop code filter applied to the search, if any.
stopsarray–Stops within the search radius.

No examples provided.

onebusaway_get_alert ~104

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.

NameTypeReqDescription
situationIdstringyesSituation/alert ID from onebusaway_get_arrivals (situations[].id or arrivals[].situationIds[]).
NameTypeReqDescription
activeWindowsarray–Time windows when this alert is active.
affectsarray–Stops, routes, trips, or agencies affected by this alert.
consequenceMessagestring|null–Human-readable consequence description (e.g. "Detour in effect"), or null.
consequencesarray–Operational consequences of this alert.
descriptionstring|null–Longer description of the alert, or null.
errorobject–Present when the call failed. Absent on success.
idstring–Situation ID.
reasonstring|null–Reason code from TPEG: equipmentReason, environmentReason, personnelReason, miscellaneousReason, securityAlert. Null when not provided.
severitystring|null–Severity level as reported by the agency, or null.
summarystring–Short summary of the service alert.
timezonestring–Validated IANA timezone shared by every affected scope, or UTC when unresolved, invalid, absent, or conflicting.
urlstring|null–URL for more information about this alert, or null.

No examples provided.

onebusaway_get_arrivals ~229

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").

NameTypeReqDescription
minutesAfterinteger–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.
minutesBeforeinteger–Include arrivals that departed up to this many minutes ago — an integer from 0 to 60. Defaults to 5.
stopIdstringyesAgency-prefixed stop ID (e.g. "1_75403" for Metro Transit stop 75403). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs.
NameTypeReqDescription
arrivalsarray–Arrivals and departures at this stop within the requested time window.
countnumber–Number of arrivals in the time window.
currentTimenumber–Server time as Unix milliseconds, for computing countdown timers.
errorobject–Present when the call failed. Absent on success.
noticestring–Guidance when no arrivals were found — widen minutesAfter, or check onebusaway_get_schedule_for_stop for scheduled service.
queriedStopstring–Stop ID queried.
situationsarray–Active service alerts at this stop — those attached to the stop itself and those referenced by its arrivals, each listed once.
stopIdstring–The queried stop ID.
stopNamestring–Stop name.
timezonestring–Validated timezone of the queried stop agency, or UTC when unavailable or invalid.
windowMinutesobject–Time window used for the arrivals query.

No examples provided.

onebusaway_get_block ~241

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.

NameTypeReqDescription
blockIdstringyesBlock ID from a trip record. Obtain a tripId from onebusaway_get_arrivals, then call onebusaway_get_trip to get the blockId.
departureBeforeSecinteger–Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied.
departureFromSecinteger–Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid.
tripIdstring–Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds.
NameTypeReqDescription
activeServiceIdsarray–Service IDs required active for the first returned configuration.
alternateConfigurationsarray–Remaining configurations in upstream order; empty when none exist.
blockIdstring–Block ID.
errorobject–Present when the call failed. Absent on success.
inactiveServiceIdsarray–Service IDs required inactive for the first returned configuration.
noticestring–Alternative-configuration guidance or an aggregate empty-selection notice.
selectionobject–Applied selectors and aggregate trip occurrence counts across every configuration; absent without selectors.
tripsarray–All trips in the first returned configuration, in order.

No examples provided.

onebusaway_get_route ~98

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").

NameTypeReqDescription
routeIdstringyesAgency-prefixed route ID (e.g. "1_100259"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs.
NameTypeReqDescription
agencyIdstring–Agency ID that operates this route.
agencyNamestring–Agency name that operates this route.
colorstring|null–Route brand color hex (without #), or null.
descriptionstring–Route description.
errorobject–Present when the call failed. Absent on success.
idstring–Agency-prefixed route ID.
longNamestring–Full route name.
shortNamestring–The number or short name displayed on vehicles (e.g. "44").
typenumber–GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car.
urlstring|null–Agency schedule page URL, or null.

No examples provided.

onebusaway_get_schedule_for_route ~255

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.

NameTypeReqDescription
date––Service date as YYYY-MM-DD (e.g. "2026-05-23"). Must be a real calendar date. Omit or leave blank for today.
departureBeforeSecinteger–Exclusive departure upper bound in GTFS seconds from midnight; must exceed departureFromSec when both are supplied.
departureFromSecinteger–Inclusive departure lower bound in GTFS seconds from midnight; values beyond 86400 are valid.
routeIdstringyesAgency-prefixed route ID (e.g. "1_100259"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs.
tripIdstring–Exact trip ID; omit or leave blank for no trip selector. Mutually exclusive with departure bounds.
NameTypeReqDescription
datestring–Date parameter used for the schedule request, if specified.
errorobject–Present when the call failed. Absent on success.
noticestring–Guidance when no trips were found — e.g. no service on weekends or holiday schedule in effect.
queriedRoutestring–Route ID queried.
routeIdstring–The queried route ID.
routeShortNamestring–Route short name.
selectionobject–Applied selectors and trip counts before and after local selection; absent without selectors.
serviceDateMsnumber–Unchanged upstream service-date marker (scheduleDate) as Unix milliseconds, identifying the route schedule service day.
timezonestring–Validated timezone of the referenced route agency, or UTC when unavailable or invalid.
tripCountnumber–Number of trips for this route on this date.
tripsarray–All trips for this route on this date, with their stop sequences.

No examples provided.

onebusaway_get_schedule_for_stop ~236

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.

NameTypeReqDescription
date––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.
departureBeforeMsinteger–Exclusive departure upper bound in Unix milliseconds; must exceed departureFromMs when both are supplied.
departureFromMsinteger–Inclusive departure lower bound in Unix milliseconds.
routeIdstring–Exact route ID, combined with departure bounds; omit or leave blank for all routes.
stopIdstringyesAgency-prefixed stop ID (e.g. "1_75403"). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs.
NameTypeReqDescription
datestring–Date parameter used for the schedule request, if specified.
errorobject–Present when the call failed. Absent on success.
noticestring–Guidance when no routes were found — e.g. no service on weekends or holiday schedule in effect.
queriedStopstring–Stop ID queried.
routeCountnumber–Number of routes with departures from this stop on this date.
routesarray–All routes with departures from this stop on this date.
selectionobject–Applied selectors and departure counts before and after local selection; absent without selectors.
serviceDateMsnumber–Unchanged upstream schedule-date marker in Unix milliseconds: query time when date is omitted or blank, instance-local midnight for an explicit date.
stopIdstring–The queried stop ID.
stopNamestring–Stop name.
timezonestring–Validated timezone of the queried stop agency, or UTC when unavailable or invalid.

No examples provided.

onebusaway_get_stop ~128

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).

NameTypeReqDescription
stopIdstringyesAgency-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.
NameTypeReqDescription
codestring–The stop code printed on the sign.
directionstring–Compass direction of travel at this stop (e.g. "NW").
errorobject–Present when the call failed. Absent on success.
idstring–Agency-prefixed stop ID.
latnumber–Latitude of the stop.
lonnumber–Longitude of the stop.
namestring–Stop name.
routeIdsarray–IDs of routes that serve this stop. Use with onebusaway_get_arrivals or onebusaway_get_schedule_for_stop.
wheelchairBoardingstring–Wheelchair boarding status.

No examples provided.

onebusaway_get_stop_context ~271

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").

NameTypeReqDescription
minutesAfterinteger–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.
minutesBeforeinteger–Include arrivals that departed up to this many minutes ago — an integer from 0 to 60. Defaults to 5.
stopIdstringyesAgency-prefixed stop ID (e.g. "1_75403" for Metro Transit stop 75403). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs.
NameTypeReqDescription
alertsarray–Service alerts on this stop or on any arrival in the window, each listed once — including alerts whose affected arrivals fall outside the window.
arrivalsarray–Arrivals and departures at this stop within the requested time window.
currentTimenumber–Server time as Unix milliseconds, for computing countdown timers.
errorobject–Present when the call failed. Absent on success.
noticestring–What the response is missing and where to get it — no arrivals in the window, stop details absent, or referenced alerts absent.
queriedStopstring–Stop ID queried.
stop––The queried stop, without its served-route list (use onebusaway_get_stop for routeIds). Null when the upstream response omitted the stop.
timezonestring–Validated timezone of the queried stop agency, or UTC when unavailable or invalid.
windowMinutesobject–Time window used for the arrivals query.

No examples provided.

onebusaway_get_trip ~133

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.

NameTypeReqDescription
includeScheduleboolean–Whether to include the full stop sequence with times. Defaults to true.
serviceDateMsinteger–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.
tripIdstringyesTrip ID from an arrivals response or schedule lookup.
NameTypeReqDescription
blockIdstring|null–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.
errorobject–Present when the call failed. Absent on success.
routeShortNamestring–Route short name (e.g. "44").
schedule––Full stop sequence with times, or null if includeSchedule=false.
situationsarray–Active situation IDs affecting this trip.
statusobject–Real-time status of the trip.
timezonestring–Validated timezone of the trip route agency, or UTC when unavailable or invalid.
tripHeadsignstring–Destination sign text.
tripIdstring–The queried trip ID.

No examples provided.

onebusaway_get_vehicles ~142

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.

NameTypeReqDescription
agencyIdstringyesAgency ID (e.g. "1" for Metro Transit, "40" for Sound Transit). Use onebusaway_list_agencies to discover IDs.
routeIdstring–Optional agency-prefixed route ID to filter results to one route. Filtering is client-side — all agency vehicles are fetched first.
NameTypeReqDescription
agencyIdstring–Agency ID queried.
countnumber–Number of vehicles returned after any route filter.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if the upstream capped the vehicle list — some vehicles were omitted. This endpoint has no pagination to retrieve them.
noticestring–Independent notices for records omitted without position, upstream truncation, and an empty returned list.
omittedWithoutPositionnumber–Agency-wide records omitted because latitude or longitude is missing, counted before route filtering.
omittedWithoutPositionOnRoutenumber–Omitted records whose canonical current trip resolves to the requested route; present only with a route filter.
routeIdstring–Route ID filter applied client-side, if any.
timezonestring–Validated timezone of the requested agency, or UTC when unavailable or invalid.
vehiclesarray–Active vehicles for the agency, optionally filtered by route.

No examples provided.

onebusaway_list_agencies ~61

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.

Input schema present but exposes no named parameters.

NameTypeReqDescription
agenciesarray–All agencies served by this OneBusAway instance.
countnumber–Number of transit agencies returned.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if the upstream capped the agency list — some agencies were omitted. This endpoint has no pagination to retrieve them.
noticestring–Guidance when no agencies were returned.

No examples provided.

onebusaway_list_routes_for_agency ~97

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.

NameTypeReqDescription
agencyIdstringyesAgency ID (e.g. "1" for Metro Transit, "40" for Sound Transit). Use onebusaway_list_agencies to discover IDs.
NameTypeReqDescription
agencyIdstring–Agency ID queried.
countnumber–Number of routes returned for this agency.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if the upstream capped the route list — some routes were omitted. This endpoint has no pagination to retrieve them.
noticestring–Guidance when no routes were found — verify the agency ID with onebusaway_list_agencies.
routesarray–All routes operated by this agency.

No examples provided.

onebusaway_search_routes ~118

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.

NameTypeReqDescription
maxCountinteger–Maximum number of results to return. A positive integer, at most 100. Defaults to 10.
querystringyesRoute name or number (e.g. "44", "Link", or "RapidRide").
NameTypeReqDescription
capnumber–The maxCount limit applied to truncated results.
countnumber–Number of routes returned.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if more routes match than were returned; raise maxCount or refine the query to see all.
noticestring–Guidance when no routes matched — e.g. try onebusaway_find_routes with coordinates, or onebusaway_list_routes_for_agency.
querystring–Route name/number query sent to the API.
routesarray–Routes matching the search query.
shownnumber–Number of routes returned when results were truncated.
truncatedboolean–True when matching routes exceeded maxCount.

No examples provided.

onebusaway_search_stops ~107

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.

NameTypeReqDescription
maxCountinteger–Maximum number of results to return. A positive integer, at most 100. Defaults to 10.
querystringyesStop name fragment or stop code (e.g. "University Way" or "75403").
NameTypeReqDescription
capnumber–The maxCount limit applied to truncated results.
countnumber–Number of stops returned.
errorobject–Present when the call failed. Absent on success.
limitExceededboolean–True if more stops match than were returned; raise maxCount or refine the query to see all.
noticestring–Guidance when no stops matched — e.g. try a different name fragment or use onebusaway_find_stops with coordinates.
querystring–Search query sent to the API.
shownnumber–Number of stops returned when results were truncated.
stopsarray–Stops matching the search query.
truncatedboolean–True when matching stops exceeded maxCount.

No examples provided.

Install

How do I install the io.github.cyanheads/onebusaway-mcp-server server?

io.github.cyanheads/onebusaway-mcp-server is a hosted endpoint at https://onebusaway.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · onebusaway.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-onebusaway-mcp-server 'https://onebusaway.caseyjhand.com/mcp'
Common questions

What is the io.github.cyanheads/onebusaway-mcp-server server?

io.github.cyanheads/onebusaway-mcp-server is listed in the public MCP registry as io.github.cyanheads/onebusaway-mcp-server. Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs. This page covers its hosted endpoint (https://onebusaway.caseyjhand.com/mcp).

Is the io.github.cyanheads/onebusaway-mcp-server server safe to use?

io.github.cyanheads/onebusaway-mcp-server scores 90 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/onebusaway-mcp-server server expose?

io.github.cyanheads/onebusaway-mcp-server exposes 16 tools: onebusaway_list_agencies, onebusaway_find_stops, onebusaway_find_routes, onebusaway_search_stops, onebusaway_search_routes, and 11 more. Their descriptions and schemas cost roughly 2,639 tokens of context every time the server is loaded.

Does the io.github.cyanheads/onebusaway-mcp-server server require authentication?

No. We connected to io.github.cyanheads/onebusaway-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/onebusaway-mcp-server server still maintained?

io.github.cyanheads/onebusaway-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the io.github.cyanheads/onebusaway-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/onebusaway-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.