Exceptional transit domain server with 23 curated tools organized by subsystem (subway, bus, ferry, rail, bike). Tools demonstrate consistent interface patterns with strongly-typed parameters, clear descriptions explaining WHEN/WHY to use each tool, and proper enum constraints. Schema design allows flexible input (station ID or name) while maintaining type safety. Natural language fallback (transit_ask) provides AI agent safety valve. Tool count (23) is optimal - focused without being exhaustive. Minor issues: truncated descriptions in raw JSON, some tools lack explicit required field declarations, and a few parameter descriptions could be more specific about return value implications.
Get an overview of Citibike availability by borough. Shows total bikes, docks, and station availability.
Get bike and dock availability at a Citibike station. Accepts station ID or name (e.g., "Broadway & W 48 St", "E 40 St & Park Ave").
Search for Citibike stations by name, borough, or availability. Returns station availability and capacity.
Get upcoming bus arrivals at a stop. Accepts stop ID or name (e.g., "402940", "5 Av/W 42 St").
Get detailed information about a bus route including type, boroughs served, and description.
Get active bus service alerts. Optionally filter by route or severity.
Search bus stops by name, route, or borough. Use this to find stop IDs for bus_get_arrivals.
Truncated parameter descriptions in raw JSON output (e.g., 'Max arrivals to return (defau...' on bus_get_arrivals, 'Max results to return (default: 20)' incomplete on ferry_search_landings). These appear to be display artifacts but indicate potential serialization issues.
Some tools lack explicit 'required' field declarations in schemas. While most critical parameters appear required (station_id, line), schemas like mta_list_alerts and bus_list_alerts could be more explicit.
Short descriptions on alert-listing tools (bus_list_alerts: 'Get active bus service alerts...', ferry_list_alerts: 'Get active ferry service alerts...'). These lack context about alert scope or freshness guarantees.
No explicit error handling guidance in any tool description. Should document what happens if station/stop doesn't exist, or if real-time data is unavailable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-03-24 | B | 70 | 2025-11-25 | v1 |
Get upcoming ferry arrivals at a landing. Accepts landing ID or name (e.g., "PIER11", "Wall Street", "DUMBO").
List all NYC Ferry routes with their landings. Optionally get details for a specific route.
Get active ferry service alerts. Optionally filter by route.
Search ferry landings by name, route, or borough. Use this to find landing IDs for ferry_get_arrivals.
Get upcoming train arrivals at a station. Accepts station ID or name (e.g., "127", "Times Square", "14th Street").
Get current service status for a subway line
Get planned service changes, weekend schedules, and construction work. Shows what service changes are active now, coming later today, this weekend, and in the next week.
Get detailed information about a specific station. Accepts station ID or name.
List active service alerts across the subway system. By default only shows currently active alerts.
Get route suggestions between two stations. Accepts station IDs or names.
Search for stations by name or line
Get upcoming LIRR or Metro-North departures at a station. Accepts station ID or name (e.g., "PENN", "Grand Central").
Get detailed information about a LIRR or Metro-North station including accessibility, platforms, parking, and zone.
Get active LIRR and Metro-North service alerts. Optionally filter by system, branch, or severity.
Search LIRR and Metro-North stations by name, system, or branch. Use this to find station IDs for rail_get_departures.
Ask natural language questions about NYC transit (subway, bus, ferry, rail, bike). Examples: "When is the next 1 train at Times Square?", "How do I get to JFK?", "Are there any Citibikes near Grand Central?"