Skip to main content
Glama

MBTA Real-Time Predictions

mbta.transit.predictions
Read-onlyIdempotent

Get real-time arrival and departure predictions for Boston MBTA stops — live vehicle tracking data for subway, bus, commuter rail, and ferry. Returns predicted arrival_time, departure_time (ISO 8601), direction, status (e.g. "Boarding"), schedule relationship (SCHEDULED/SKIPPED/NO_DATA), and associated route, stop, trip, and vehicle IDs. Requires at least one filter: stop ID (e.g. "place-sstat" for South Station, "place-pktrm" for Park Street) or route ID. Use direction_id to filter inbound (1) vs outbound (0). MassDOT Open Data License, real-time live data, no upstream cost.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stopNoStop or station ID for arrival/departure predictions (e.g. "place-sstat" for South Station, "place-pktrm" for Park Street). Use mbta-transit.stops to find stop IDs.
limitNoMaximum number of predictions to return (default 10, max 50). Each prediction is one scheduled stop for one vehicle.
routeNoRoute ID to get predictions for (e.g. "Red", "Green-B", "1"). At least one of stop or route is required.
direction_idNoFilter by direction: 0=outbound (away from downtown/terminus), 1=inbound (toward downtown/terminus). See mbta-transit.routes for direction names.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent only when the call failed. Includes error code, message, request_id, and any provider-specific extras.
resultNoTool response payload. Shape varies per tool — consult the tool description and inputSchema. May be an object, array, string, or number depending on the upstream provider response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: this is 'real-time live data', carries MassDOT Open Data License terms, has 'no upstream cost', and requires at least one filter to constrain the live feed. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it leads with the core purpose, then output fields, then required filters, then direction semantics, then licensing/cost notes. Every clause adds useful information; only the license/cost details are slightly tangential to invocation, but they are concise and not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a real-time data tool with four optional-but-conditionally-required parameters, the description covers the essential call pattern: at least one of stop or route, direction filtering, and supported transit modes. Since an output schema exists, the description need not restate return structures in detail, and the schema supplies parameter-level examples and limits. Minor gaps like pagination or rate limits are not critical given the rich annotations and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters with examples, defaults, and constraints. The description reinforces the stop/route requirement and direction semantics, but adds little beyond what the schema provides, so the high-coverage baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get real-time arrival and departure predictions for Boston MBTA stops' with live vehicle tracking across subway, bus, commuter rail, and ferry. It names the returned fields (predicted arrival_time, departure_time, direction, status, schedule relationship, associated IDs), which clearly distinguishes it from sibling tools like mbta.transit.alerts, mbta.transit.routes, and mbta.transit.stops.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit call guidance: 'Requires at least one filter: stop ID ... or route ID' and explains direction filtering with `direction_id` (inbound vs outbound). It does not explicitly name alternatives or state when not to use this tool versus sibling MBTA tools, but the clear scope and filter requirement provide strong practical usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.