BART Real-Time Transit
Server Details
Real-time BART departures, trip planning, fares, stations, and advisories.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- srivastsh/bay-area-transit-mcp
- GitHub Stars
- 0
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4/5 across 7 of 7 tools scored. Lowest: 3.3/5.
Each tool addresses a distinct transit function: advisories, departures, fares, station lookup, station listing, status summary, and trip planning. No overlap in purpose.
All tools follow the 'bart_' prefix with a noun or compound noun using underscores, e.g., bart_departures, bart_station_lookup. Fully consistent.
Seven tools cover the essential BART operations without redundancy. The scope is appropriate for a real-time transit MCP server.
The tool set covers advisories, departures, fares, stations, trip planning, and a status summary. All major real-time transit needs are addressed.
Available Tools
7 toolsbart_advisoriesBART AdvisoriesARead-onlyInspect
Get current BART service advisories, delays, and elevator/escalator status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by specifying the types of information returned (advisories, delays, status). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with action and key data: 'Get current BART service advisories...'. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and complete annotations for safety, the description is adequate for a simple advisory tool. It covers the key information an agent needs to understand the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params, schema coverage 100%), so baseline is 4. Description does not need to add parameter details, though it could note that no input is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and clearly lists resource types: 'advisories, delays, and elevator/escalator status'. It distinguishes from sibling tools like bart_departures and bart_status_summary by focusing on service issues rather than schedules or summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The implied context is for real-time service issues, but there are no exclusions or comparisons to siblings like bart_status_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_departuresBART Real-Time DeparturesARead-onlyInspect
Get real-time departures from a BART station.
Args:
station: 4-letter abbreviation (e.g. EMBR, 24TH)
direction: Optional 'n' or 's'
| Name | Required | Description | Default |
|---|---|---|---|
| station | Yes | Station code (e.g. EMBR, 24TH) | |
| direction | No | Direction filter |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read-only behavior. The description adds minimal extra behavioral context beyond listing parameters; it does not disclose rate limits or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (3 lines) and front-loaded with the main purpose. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, annotations present), the description is adequate. It covers the essential purpose and parameters, though it could mention that departures are station-specific only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters. The description mirrors the schema without adding new meaning or format details beyond what is already provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get real-time departures from a BART station,' with a specific verb and resource. It distinguishes from sibling tools like bart_advisories (advisories) and bart_stations (station info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists parameters and implies usage for real-time departures, but it does not mention when not to use this tool or alternative tools (e.g., for trip planning, use bart_trip). No exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_fareBART FareARead-onlyIdempotentInspect
Get fare between two BART stations.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Origin station code | |
| destination | Yes | Destination station code |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and behavior. The description adds no additional behavioral context (e.g., rate limits, data freshness, or error handling), but it doesn't contradict annotations, so it meets the lower bar with minimal value added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste, efficiently conveying the core purpose without unnecessary details, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, rich annotations covering safety and behavior, and no output schema, the description is mostly complete. However, it lacks details on return values (e.g., fare format or units), which would be helpful since there's no output schema, slightly reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for origin and destination parameters. The description adds no extra meaning beyond the schema, such as station code formats or examples, so it meets the baseline of 3 without compensating for gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get fare') and the resource ('between two BART stations'), distinguishing it from sibling tools like bart_advisories, bart_departures, bart_map, bart_stations, and bart_trip, which focus on different aspects of BART information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fare calculation between stations but does not explicitly state when to use this tool versus alternatives like bart_trip (which might provide broader trip details) or bart_stations (which lists stations). No exclusions or prerequisites are mentioned, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_station_lookupFind BART StationsBRead-onlyIdempotentInspect
Search BART stations by name, city, address, or 4-letter station code.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city filter | |
| limit | No | Maximum matches to return | |
| query | Yes | Station name, city, address fragment, or code, e.g. Embarcadero, Oakland, EMBR |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is already understood as safe and non-destructive. The description adds that it searches by name, city, address, or code, which is consistent but doesn't reveal additional behavioral traits like rate limits or response format. With annotations covering the safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose. Every word contributes value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters and no output schema. The description is brief and covers the basic search functionality, but it does not explain the return format, pagination behavior, or what station information is returned (e.g., station codes, full details). For a simple search tool, this is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents each parameter. The description's mention of search criteria (name, city, address, or code) reiterates the query parameter description but adds no new semantic context beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search BART stations by name, city, address, or 4-letter station code' clearly states the tool's function: searching for stations using various criteria. It distinguishes from sibling tools like bart_advisories (advisories) and bart_departures (departures), but the sibling bart_stations might be for listing all stations, so differentiation could be stronger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or references to sibling tools. For example, it could state 'Use this to find specific stations by name/code; use bart_stations to list all.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_stationsList BART StationsARead-onlyIdempotentInspect
List all BART stations with abbreviation codes and locations. Use this to look up station codes needed by other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and behavior. The description adds value by explaining the tool's role in providing reference data for other tools, which is useful context beyond what annotations provide. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste: the first states the purpose, and the second provides usage guidance. It's front-loaded with essential information and appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with 0 parameters, rich annotations, and no output schema, the description is complete. It explains what the tool does, when to use it, and its role in the broader context, covering all necessary aspects without redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose and usage. Baseline is 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all BART stations with abbreviation codes and locations.' It specifies the verb ('List'), resource ('BART stations'), and scope ('all'), and distinguishes from siblings by focusing on station metadata rather than advisories, departures, fares, maps, or trips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this to look up station codes needed by other tools.' This provides clear guidance that this tool is for obtaining reference data (station codes) that are prerequisites for other operations, distinguishing it from siblings that perform different functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_status_summaryBART Status SummaryARead-onlyInspect
Summarize current BART service status from advisories and real-time alert data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds minimal behavioral context beyond the data sources. It discloses that the summary synthesizes advisories and alerts, which is useful but not extensive. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. It contains no filler or redundant information, earning its place fully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with annotations covering safety, the description is mostly complete: it names the action, resource, and data sources. However, without an output schema, the description could hint at the format or content of the summary for optimal agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema description coverage is 100%, so the description does not need to explain parameters. Baseline is 4, and the description meets it without adding extraneous info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Summarize'), the resource ('current BART service status'), and the data sources ('advisories and real-time alert data'). This distinguishes it from siblings like bart_advisories (raw advisories) and bart_departures (departure times), providing a specific verb+resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for obtaining a condensed overview, but does not explicitly state when to use this tool versus alternatives like bart_advisories or bart_departures. No when-not-to-use guidance or exclusions are provided, leaving usage partially inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bart_tripPlan BART TripARead-onlyInspect
Plan a trip between two BART stations. Returns schedule, fares, and transfer info.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date MM/DD/YYYY | |
| time | No | Departure time e.g. '5:30pm' | |
| origin | Yes | Origin station code | |
| destination | Yes | Destination station code |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and openWorldHint=true. The description adds that the tool returns schedule, fares, and transfer info, which goes beyond annotations. It does not mention potential side effects or rate limits, but given the annotations, the description provides adequate behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the core purpose in the first sentence and output details in the second. No unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description mentions the return contents (schedule, fares, transfer info) which is helpful. Parameter count and annotations are adequately covered. The description is mostly complete but could detail the output format more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters have descriptions. The tool description itself adds no extra parameter information beyond what the schema provides, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it plans a trip between BART stations and returns schedule, fares, and transfer info. This is a specific verb+resource that differentiates from siblings like bart_advisories or bart_departures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. While the purpose is clear, no guidance is provided on when not to use it or which sibling might be better suited for related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!