Skip to main content
Glama

MBTA MCP Server

PyPI - Version

An MCP (Model Context Protocol) server for the MBTA V3 API, providing access to Boston's public transit data.

Features

  • Routes: Get information about MBTA routes (subway, bus, commuter rail, ferry)

  • Stops: Find transit stops by location, route, or ID

  • Predictions: Real-time arrival predictions

  • Schedules: Scheduled service times

  • Trips: Trip information and details

  • Alerts: Service alerts and disruptions

  • Vehicles: Real-time vehicle positions

  • Trip Planning: Intelligent multi-modal journey planning with real-time data

  • Route Alternatives: Alternative routing options with transfer optimization

  • External APIs: Vehicle positions and alerts from external sources

  • Track Predictions: Machine learning-powered track assignment predictions

  • Historical Data: Access to historical track assignments and performance metrics

  • Caching: Memory-based caching with configurable TTL for improved performance

Related MCP server: mcp-mbta

Installation

Option 1: Direct run with uv (Easiest)

No installation required! Just run directly:

uv tool run mbta-mcp

Set your MBTA API key as an environment variable:

export MBTA_API_KEY=your_api_key_here
uv tool run mbta-mcp

Option 2: Install as a tool

Install directly with uv tool:

uv tool install mbta-mcp

Set your MBTA API key:

export MBTA_API_KEY=your_api_key_here

Run the server:

mbta-mcp

Option 3: Development Setup

  1. Clone and install dependencies:

    git clone https://github.com/cubismod/mbta-mcp.git
    cd mbta-mcp
    uv sync
  2. Configure your MBTA API key:

    cp .env.example .env
    # Edit .env and add your MBTA_API_KEY
  3. Get an API key from https://api-v3.mbta.com

Usage

MCP Server (for AI clients)

Run the MCP server for use with AI clients like Claude Desktop:

# Direct run (no installation needed)
uv tool run mbta-mcp

# If installed as a tool
mbta-mcp

# If using development setup
uv run mbta-mcp

CLI Interface (for direct usage)

For direct command-line access to MBTA and Amtrak data:

# Show available commands
uv run mbta-cli --help

# Get Amtrak trains
uv run mbta-cli trains --limit 5

# Get Amtrak trains in JSON format
uv run mbta-cli trains --json --limit 3

# Test MBTA routes
uv run mbta-cli routes

# Show available MCP tools
uv run mbta-cli tools

Available Tools

Core Transit Data:

  • mbta_get_routes - Get MBTA routes (subway, bus, commuter rail, ferry)

  • mbta_get_stops - Get MBTA stops by ID, route, or location

  • mbta_get_predictions - Get real-time arrival predictions

  • mbta_get_schedules - Get scheduled service times

  • mbta_get_trips - Get trip information and details

  • mbta_get_alerts - Get service alerts and disruptions

  • mbta_get_vehicles - Get real-time vehicle positions

Trip Planning:

  • mbta_plan_trip - Plan multi-modal journeys with real-time data and transfer optimization

  • mbta_get_route_alternatives - Find alternative routes with different transit modes

Extended Features:

  • mbta_get_services - Get service definitions and calendars

  • mbta_get_shapes - Get route shape/path information for mapping

  • mbta_get_facilities - Get facility information (elevators, escalators, parking)

  • mbta_get_live_facilities - Get real-time facility status and outages

  • mbta_search_stops - Search for stops by name or near a location

  • mbta_get_nearby_stops - Get stops near a specific location

  • mbta_get_predictions_for_stop - Get all predictions for a specific stop

External API Tools:

  • mbta_get_vehicle_positions - Get real-time vehicle positions from external API (GeoJSON format)

  • mbta_get_external_alerts - Get general alerts from external API (delays, disruptions, service info)

Boston Amtrak Tracker API:

  • mbta_get_amtrak_trains - Get all tracked Amtrak trains from Boston Amtrak Tracker API

  • mbta_get_amtrak_trains_geojson - Get Amtrak trains as GeoJSON for mapping applications

  • mbta_get_amtrak_health_status - Get health status of the Boston Amtrak Tracker API

IMT Track Prediction API:

  • mbta_get_track_prediction - Predict which track a train will use at a station

  • mbta_get_chained_track_predictions - Get multiple track predictions in a single request

  • mbta_get_prediction_stats - Get prediction statistics and accuracy metrics

  • mbta_get_historical_assignments - Get historical track assignments for analysis

Tool Reference

Core Transit Data Tools

mbta_get_routes

Get information about MBTA routes including subway, bus, commuter rail, and ferry services.

  • Parameters: route_id (optional), route_type (optional), page_limit (default: 10)

  • Route Types: 0=Light Rail, 1=Subway, 2=Commuter Rail, 3=Bus, 4=Ferry

mbta_get_stops

Find transit stops by location, route, or ID with optional filtering.

  • Parameters: stop_id (optional), route_id (optional), latitude/longitude (optional), radius (optional), page_limit (default: 10)

mbta_get_predictions

Get real-time arrival predictions for MBTA services.

  • Parameters: stop_id (optional), route_id (optional), trip_id (optional), page_limit (default: 10)

mbta_get_schedules

Get scheduled service times and departure information.

  • Parameters: stop_id (optional), route_id (optional), trip_id (optional), direction_id (optional), page_limit (default: 10)

mbta_get_trips

Get trip information and details for MBTA services.

  • Parameters: trip_id (optional), route_id (optional), direction_id (optional), page_limit (default: 10)

mbta_get_alerts

Get service alerts and disruptions affecting MBTA services.

  • Parameters: alert_id (optional), route_id (optional), stop_id (optional), page_limit (default: 10)

mbta_get_vehicles

Get real-time vehicle positions and status information.

  • Parameters: vehicle_id (optional), route_id (optional), trip_id (optional), page_limit (default: 10)

Extended Features Tools

mbta_get_services

Get service definitions and calendars for MBTA operations.

  • Parameters: service_id (optional), page_limit (default: 10)

mbta_get_shapes

Get route shape/path information for mapping and visualization.

  • Parameters: shape_id (optional), route_id (optional), page_limit (default: 10)

mbta_get_facilities

Get facility information including elevators, escalators, and parking areas.

  • Parameters: facility_id (optional), stop_id (optional), facility_type (optional), page_limit (default: 10)

mbta_get_live_facilities

Get real-time facility status and outage information.

  • Parameters: facility_id (optional), page_limit (default: 10)

mbta_search_stops

Search for stops by name or near a specific location.

  • Parameters: query (required), latitude/longitude (optional), radius (optional), page_limit (default: 10)

mbta_get_nearby_stops

Get stops near a specific location within a specified radius.

  • Parameters: latitude (required), longitude (required), radius (default: 1000), page_limit (default: 10)

mbta_get_predictions_for_stop

Get all predictions for a specific stop with optional filtering.

  • Parameters: stop_id (required), route_id (optional), direction_id (optional), page_limit (default: 10)

External API Tools

mbta_get_vehicle_positions

Get real-time vehicle positions from external API in GeoJSON format.

  • Parameters: None

  • Returns: GeoJSON with vehicle locations, routes, status, speed, and bearing information

mbta_get_external_alerts

Get general alerts from external API including delays, disruptions, and service information.

  • Parameters: None

  • Returns: JSON with alert details, severity levels, affected routes/stops, and active periods

Boston Amtrak Tracker API Tools

mbta_get_amtrak_trains

Get all tracked Amtrak trains from the Boston Amtrak Tracker API.

  • Parameters: None

  • Returns: JSON with real-time Amtrak train locations, routes, status, speed, and other information

mbta_get_amtrak_trains_geojson

Get Amtrak trains as GeoJSON for mapping applications.

  • Parameters: None

  • Returns: GeoJSON feature collection with train locations suitable for mapping

mbta_get_amtrak_health_status

Get health status of the Boston Amtrak Tracker API.

  • Parameters: None

  • Returns: JSON with server health status and last data update time

IMT Track Prediction API Tools

mbta_get_track_prediction

Predict which track a train will use at a specific station using machine learning.

  • Parameters: station_id (required), route_id (required), trip_id (required), headsign (required), direction_id (required), scheduled_time (required)

  • Returns: Track prediction with confidence score and prediction method

mbta_get_chained_track_predictions

Get multiple track predictions in a single request for batch processing.

  • Parameters: predictions (required) - Array of prediction request objects

  • Returns: Array of track predictions with confidence scores

mbta_get_prediction_stats

Get prediction statistics and accuracy metrics for a station and route.

  • Parameters: station_id (required), route_id (required)

  • Returns: Statistics including accuracy rate, total predictions, correct predictions, and average confidence

mbta_get_historical_assignments

Get historical track assignments for analysis and pattern recognition.

  • Parameters: station_id (required), route_id (required), days (default: 30)

  • Returns: Historical track assignment data with actual usage patterns

Trip Planning Tools

The MBTA MCP server provides intelligent trip planning capabilities that combine real-time transit data with multi-modal journey optimization. These tools help plan efficient journeys across the MBTA network with support for accessibility requirements and transfer preferences.

mbta_plan_trip

Plan multi-modal journeys with real-time data and transfer optimization. This tool finds the best transit routes between two locations, considering walking distance, transfer limits, and accessibility requirements.

Parameters:

  • origin_lat (required): Origin latitude coordinate

  • origin_lon (required): Origin longitude coordinate

  • dest_lat (required): Destination latitude coordinate

  • dest_lon (required): Destination longitude coordinate

  • departure_time (optional): ISO 8601 formatted departure time (e.g., "2025-01-01T10:00:00-05:00")

  • max_walk_distance (optional): Maximum walking distance in meters (default: 800)

  • max_transfers (optional): Maximum number of transfers allowed (default: 2)

  • prefer_fewer_transfers (optional): Prioritize routes with fewer transfers (default: true)

  • wheelchair_accessible (optional): Only include accessible routes and vehicles (default: false)

Returns: JSON with trip options including:

  • Origin and destination coordinates with nearby transit stops

  • Multiple route alternatives with detailed segments

  • Walking directions and transit connections

  • Real-time departure predictions and schedule information

  • Transfer points and walking times between stations

  • Accessibility information for each route option

Example Usage:

Plan a trip from MIT to Harvard Square:
- origin_lat: 42.3601
- origin_lon: -71.0942  
- dest_lat: 42.3736
- dest_lon: -71.1190
- max_walk_distance: 600
- prefer_fewer_transfers: true

mbta_get_route_alternatives

Find alternative routes with different transit modes. This tool excludes specified primary route types to discover backup options, useful when primary routes have service disruptions.

Parameters:

  • origin_lat (required): Origin latitude coordinate

  • origin_lon (required): Origin longitude coordinate

  • dest_lat (required): Destination latitude coordinate

  • dest_lon (required): Destination longitude coordinate

  • primary_route_modes (optional): Array of route type IDs to exclude (e.g., ["1"] to exclude subway)

  • departure_time (optional): ISO 8601 formatted departure time

  • max_walk_distance (optional): Maximum walking distance in meters (default: 800)

  • max_transfers (optional): Maximum transfers (default: 2)

  • wheelchair_accessible (optional): Require accessible routes (default: false)

Route Type IDs:

  • "0" - Light Rail (Green Line branches)

  • "1" - Subway (Red, Orange, Blue Lines)

  • "2" - Commuter Rail

  • "3" - Bus

  • "4" - Ferry

Returns: Alternative route options excluding the specified primary modes, with the same detailed structure as mbta_plan_trip.

Example Usage:

Find bus alternatives when subway is disrupted:
- origin_lat: 42.3601
- origin_lon: -71.0942
- dest_lat: 42.3736  
- dest_lon: -71.1190
- primary_route_modes: ["1", "0"]  // Exclude subway and light rail
- max_walk_distance: 1000

Trip Planning Use Cases

Morning Commute Planning: Use mbta_plan_trip with departure time to find the best route for your daily commute, considering real-time delays and service alerts.

Accessibility-First Routing: Enable wheelchair_accessible: true to ensure all suggested routes are fully accessible, including elevators and ramps at stations.

Service Disruption Backup: When alerts indicate subway delays, use mbta_get_route_alternatives to find bus routes that avoid the affected lines.

Event Planning: For large events, plan trips with longer walking distances and more transfers to distribute passenger load across the transit network.

Tourist Assistance: Combine trip planning with nearby stops and predictions to help visitors navigate Boston's transit system efficiently.

Integration with LLMs

Claude Desktop

Option 1: Using uv tool run (Easiest - No Installation Required)

Add to Claude Desktop configuration:

On macOS, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mbta": {
      "command": "uv",
      "args": ["tool", "run", "mbta-mcp"],
      "env": {
        "MBTA_API_KEY": "your_api_key_here"
      }
    }
  }
}

On Windows, edit %APPDATA%\Claude\claude_desktop_config.json with the same content.

  1. Install the MCP server:

    uv tool install mbta-mcp
  2. Add to Claude Desktop configuration:

    On macOS, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "mbta": {
          "command": "mbta-mcp",
          "env": {
            "MBTA_API_KEY": "your_api_key_here"
          }
        }
      }
    }

    On Windows, edit %APPDATA%\Claude\claude_desktop_config.json with the same content.

Option 3: Using development setup

  1. Clone and setup the MCP server:

    git clone https://github.com/cubismod/mbta-mcp.git
    cd mbta-mcp
    task install-dev
    task verify  # Ensure everything works
  2. Configure your MBTA API key:

    cp .env.example .env
    # Edit .env and add: MBTA_API_KEY=your_api_key_here
  3. Add to Claude Desktop configuration:

    On macOS, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "mbta": {
          "command": "uv",
          "args": ["run", "mbta-mcp"],
          "cwd": "/path/to/your/mbta-mcp",
          "env": {
            "MBTA_API_KEY": "your_api_key_here"
          }
        }
      }
    }

    On Windows, edit %APPDATA%\Claude\claude_desktop_config.json with the same content.

Restart Claude Desktop and you'll see "mbta" in the 🔌 icon, indicating the MCP server is connected.

Other MCP-Compatible LLMs

Continue.dev

Using uv tool run (easiest):

{
  "mcpServers": [
    {
      "name": "mbta",
      "command": "uv",
      "args": ["tool", "run", "mbta-mcp"],
      "env": {
        "MBTA_API_KEY": "your_api_key_here"
      }
    }
  ]
}

Using uv tool installation:

{
  "mcpServers": [
    {
      "name": "mbta",
      "command": "mbta-mcp",
      "env": {
        "MBTA_API_KEY": "your_api_key_here"
      }
    }
  ]
}

Or with development setup:

{
  "mcpServers": [
    {
      "name": "mbta",
      "command": "uv",
      "args": ["run", "mbta-mcp"],
      "cwd": "/path/to/your/mbta-mcp",
      "env": {
        "MBTA_API_KEY": "your_api_key_here"
      }
    }
  ]
}

Codeium

Using uv tool run (easiest):

{
  "mcp": {
    "servers": {
      "mbta": {
        "command": ["uv", "tool", "run", "mbta-mcp"],
        "env": {
          "MBTA_API_KEY": "your_api_key_here"
        }
      }
    }
  }
}

Using uv tool installation:

{
  "mcp": {
    "servers": {
      "mbta": {
        "command": ["mbta-mcp"],
        "env": {
          "MBTA_API_KEY": "your_api_key_here"
        }
      }
    }
  }
}

Or with development setup:

{
  "mcp": {
    "servers": {
      "mbta": {
        "command": ["uv", "run", "mbta-mcp"],
        "cwd": "/path/to/your/mbta-mcp",
        "env": {
          "MBTA_API_KEY": "your_api_key_here"
        }
      }
    }
  }
}

Generic MCP Client

Using uv tool run (easiest):

  • Command: uv tool run mbta-mcp

  • Environment: MBTA_API_KEY=your_api_key_here

Using uv tool install:

  • Command: mbta-mcp

  • Environment: MBTA_API_KEY=your_api_key_here

Using development setup:

  • Command: uv run mbta-mcp

  • Working Directory: /path/to/your/mbta-mcp

  • Environment: MBTA_API_KEY=your_api_key_here

Usage Examples

Once connected, you can ask your LLM questions like:

Core Transit Information:

  • "What are the next Red Line trains from Harvard?"

  • "Are there any service alerts for the Green Line?"

  • "Find the nearest T stops to 42.3601° N, 71.0589° W"

  • "What bus routes serve Kendall Square?"

  • "Show me the schedule for Route 1 bus"

  • "Get real-time vehicle positions for all MBTA vehicles"

  • "What are the current service alerts and delays?"

Trip Planning:

  • "Plan a trip from MIT (42.3601, -71.0942) to Harvard Square (42.3736, -71.1190)"

  • "How do I get from Back Bay to Logan Airport using only accessible routes?"

  • "Find alternative routes from Downtown Crossing to Fenway that avoid the Green Line"

  • "Plan a wheelchair-accessible journey from South Station to Cambridge with minimal walking"

  • "What's the best way to get from Kendall Square to Copley at 8:30 AM tomorrow?"

  • "Show me bus alternatives from Harvard to MIT when the Red Line is down"

  • "Plan a trip allowing up to 1200 meters of walking and 3 transfers maximum"

Advanced Features:

  • "Predict which track the 3:30 PM Providence train will use at South Station"

  • "Show me track prediction accuracy statistics for South Station"

  • "Get historical track assignments for the last 30 days"

  • "Get all current Amtrak trains in the Boston area"

  • "Show me Amtrak trains as GeoJSON for mapping"

  • "Check the health status of the Amtrak tracker API"

Troubleshooting

Server not connecting:

  1. Verify the path in your config is correct

  2. Ensure uv is installed and in your PATH

  3. Check that the MBTA API key is valid

  4. Run task test-server to verify the server works

API rate limiting:

  • The MBTA API has rate limits; the server includes pagination to manage this

  • Some endpoints work without an API key, but having one increases limits

Configuration issues:

  • Ensure your .env file is in the project root

  • API key should be set as MBTA_API_KEY=your_key_here

  • Check Claude Desktop logs if the server fails to start

API Key Requirements

  • Free access: Many endpoints work without an API key (with lower rate limits)

  • API key benefits: Higher rate limits and access to all features

  • Get a key: Register at https://api-v3.mbta.com

  • Usage: Set in .env file or environment variable MBTA_API_KEY

External APIs

This MCP server integrates with additional external APIs to provide enhanced functionality:

Vehicle Positions API

  • Endpoint: https://vehicles.ryanwallace.cloud/

  • Format: GeoJSON with real-time vehicle locations, routes, and status

  • No authentication required

  • Data: Vehicle coordinates, route information, speed, bearing, occupancy status

External Alerts API

  • Endpoint: https://vehicles.ryanwallace.cloud/alerts

  • Format: JSON with service alerts, delays, and disruptions

  • No authentication required

  • Data: Alert headers, effects, severity levels, affected routes/stops, active periods

IMT Track Prediction API

  • Endpoint: https://imt.ryanwallace.cloud/

  • Format: JSON with machine learning-powered track predictions

  • No authentication required

  • Data: Track predictions, confidence scores, historical assignments, accuracy metrics

Boston Amtrak Tracker API

  • Endpoint: https://bos.ryanwallace.cloud/

  • Format: JSON and GeoJSON with real-time Amtrak train tracking

  • No authentication required

  • Data: Train locations, routes, status, speed, and health information

Development

This project uses Task for build automation. Install it and run:

task --list  # Show available tasks

Common Tasks

task install-dev    # Install dependencies including dev tools
task check          # Run all checks (format, lint, typecheck)
task test-server    # Test MCP server functionality
task run            # Run the MBTA MCP server
task verify         # Full project verification

Manual Commands

Install dev dependencies:

uv sync --dev

Run formatters and linters:

task format     # or: uv run ruff format mbta_mcp/
task lint       # or: uv run ruff check mbta_mcp/
task typecheck  # or: uv run mypy mbta_mcp/

Available Tools

32 tools
mbta_get_alertsC

Get MBTA service alerts and disruptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idNoSpecific alert ID to get
route_idNoFilter alerts by route ID
stop_idNoFilter alerts by stop ID
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It merely states 'Get MBTA service alerts and disruptions' without disclosing behavior like filtering, pagination, rate limits, or whether results are sorted. This is insufficient for a tool with 4 optional parameters.

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 very concise at one sentence, with no filler. It is front-loaded with the action, but it may be too brief to be helpful. Still, it earns points for brevity.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It does not explain what a typical response looks like, how alerts are structured, or how to interpret them. The tool has multiple optional filters but their combined effect is unstated.

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?

Input schema coverage is 100%, with all four parameters having descriptions (alert_id, route_id, stop_id, page_limit). The tool description adds no extra meaning beyond the schema, meeting the baseline. It does not enhance understanding of parameter usage.

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

Purpose4/5

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

The description clearly states the tool gets MBTA service alerts and disruptions, using a specific verb and resource. However, it does not differentiate from sibling tools like mbta_list_all_alerts or mbta_get_external_alerts, which have overlapping purposes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as mbta_list_all_alerts or mbta_get_external_alerts. The description lacks context for choosing this tool over siblings.

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

mbta_get_amtrak_health_statusA

Get health status of the Boston Amtrak Tracker API. Returns server health status and last data update time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It mentions returning server health and last update time but lacks details on potential errors, rate limits, or response format. This is insufficient for a tool with no annotations.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the main action ('Get health status') and concisely lists returns.

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

Completeness3/5

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 no annotations, the description minimally covers purpose and output. However, it could mention usage context (e.g., designed for quick API health checks) to fully support agent decision-making.

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

Parameters4/5

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

The input schema has zero parameters with 100% coverage, so the baseline is 4. The description adds no param info, which is acceptable since none exist.

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 clearly states the tool gets the health status of the Boston Amtrak Tracker API, using a specific verb and resource. It distinguishes itself from siblings which focus on data retrieval like alerts, trains, and predictions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With many siblings (e.g., mbta_get_amtrak_trains), a note on using this for initial health checks before other Amtrak calls would be beneficial.

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

mbta_get_amtrak_trainsA

Get all tracked Amtrak trains from the Boston Amtrak Tracker API. Returns real-time train locations, routes, status, and other information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It mentions the tool gets real-time data but omits details like authentication, rate limits, pagination, or any side effects. The word 'all' suggests a complete list but is unqualified.

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

Conciseness5/5

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

Two clear sentences with no redundancy. Every word adds value, and the purpose is stated upfront.

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 simple, parameterless tool, the description covers the essential function and output. However, it lacks any usage context or mention of alternative data formats, which would aid completeness.

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

Parameters4/5

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

There are zero parameters, so the input schema is fully covered. The baseline for 0-parameter tools is 4, and no additional parameter info is needed.

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 explicitly states the tool retrieves all tracked Amtrak trains, naming the source API and listing returned data types. It distinguishes itself from siblings like mbta_get_amtrak_trains_geojson by not specifying a format, implying a generic list.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the GeoJSON sibling or other MBTA tools. No context about prerequisites, limitations, or typical use cases is provided.

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

mbta_get_amtrak_trains_geojsonA

Get Amtrak trains as GeoJSON for mapping applications. Returns train data formatted as GeoJSON suitable for mapping.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states it returns GeoJSON-formatted train data but does not disclose other traits like data freshness, authentication, rate limits, or any side effects. It is minimally adequate for a read-only tool.

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

Conciseness5/5

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

The description is two sentences (14 words) and front-loads the key information: action, resource, and format. Every word is purposeful with no redundancy.

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 simple tool with no parameters and no output schema, the description is largely complete. It explains the output format and use case. It could mention the relationship to 'mbta_get_amtrak_trains' for added clarity, but overall it is sufficient.

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

Parameters4/5

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

The tool has zero parameters, so the input schema already covers 100%. According to the instructions, a baseline of 4 is appropriate. The description adds no parameter info, but none is needed.

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 clearly states it retrieves Amtrak trains as GeoJSON for mapping, using a specific verb ('Get') and resource ('Amtrak trains as GeoJSON'). It distinguishes from the sibling tool 'mbta_get_amtrak_trains' by specifying the output format.

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

Usage Guidelines3/5

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

The description implies usage for mapping applications but provides no explicit guidance on when to prefer this over alternatives like 'mbta_get_amtrak_trains' (which likely returns a different format). No when-not or alternative tool references are given.

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

mbta_get_chained_track_predictionsA

Get multiple track predictions in a single request using IMT API. Useful for batch predictions of multiple trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
predictionsYesArray of prediction requests

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided. Description does not disclose any behavioral traits such as rate limits, array size constraints, or whether the operation is read-only. For a batch API, lack of limits is a significant gap.

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

Conciseness5/5

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

Two concise sentences front-load the purpose and use case. No wasted words; every sentence earns its place.

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

Completeness2/5

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

Given no output schema and no annotations, the description lacks details on output format, error handling, and constraints on the predictions array. Incomplete for safe autonomous invocation.

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 coverage is 100%, so each parameter has a description in the schema. The description adds 'batch predictions' context but no additional detail about parameter semantics beyond the schema. Adequate but not value-added.

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?

Description explicitly states 'get multiple track predictions' and 'batch predictions', clearly distinguishing from singular sibling 'mbta_get_track_prediction' and other prediction tools. Verb 'Get' and resource 'track predictions' are specific.

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?

States 'useful for batch predictions of multiple trips', implying when to use this tool over alternatives. However, doesn't explicitly state when not to use or mention alternatives like calling the singular version repeatedly.

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

mbta_get_external_alertsA

Get general alerts from external API. Returns real-time service alerts, delays, disruptions, and other service information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details such as rate limits, data freshness, or what constitutes 'external API'. It only states that it returns real-time alerts.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words, effectively conveying the tool's purpose.

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

Completeness5/5

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

Given the tool has no parameters, no output schema, and no annotations, the description is sufficiently complete for a simple fetch operation. It clearly states the tool returns real-time alerts from an external API.

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

Parameters4/5

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

The input schema has zero parameters, so schema description coverage is 100%. Per guidelines, 0 parameters earns a baseline of 4. No additional parameter info is needed.

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 uses a specific verb ('Get') and resource ('general alerts from external API'), clearly distinguishing from sibling tools like mbta_get_alerts (internal) and mbta_list_all_alerts (list all).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention context or exclusions.

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

mbta_get_facilitiesB

Get facility information (elevators, escalators, parking).

ParametersJSON Schema
NameRequiredDescriptionDefault
facility_idNoSpecific facility ID to get
stop_idNoFilter facilities by stop ID
facility_typeNoFilter by facility type (ELEVATOR, ESCALATOR, PARKING_AREA, etc.)
page_limitNoNumber of results to return (default: 10)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It merely states 'Get facility information' without disclosing any behavioral traits like read-only nature, potential side effects, or whether it returns static vs. live data. This is insufficient.

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 a single concise sentence that front-loads the action and resource. It is efficient, though slightly under-specified.

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

Completeness2/5

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

Given no output schema, no annotations, and four parameters, the description does not explain return format, pagination, or behavior when no parameters are provided. It lacks completeness for a tool of this complexity.

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?

All four parameters have descriptions in the input schema (100% coverage), so the description adds no additional meaning. 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 clearly states the verb 'Get' and the resource 'facility information' with specific examples (elevators, escalators, parking). This distinguishes it from siblings like 'mbta_list_all_facilities' which lists all facilities, and 'mbta_get_live_facilities' which implies real-time data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'mbta_list_all_facilities' or 'mbta_get_live_facilities'. There are no exclusions or context hints for selection.

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

mbta_get_historical_assignmentsC

Get historical track assignments for analysis using IMT API. Shows actual track assignments from past trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesStation ID to get historical data for
route_idYesRoute ID to get historical data for
daysNoNumber of days to look back (default: 30)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description only states the tool 'shows' data, implying a read operation. It does not disclose potential side effects, data source nuances, or limitations like rate limits or data freshness, which are crucial for a historical data endpoint.

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 a single, direct sentence without redundancy. It is appropriately concise, though adding a bit more structure (e.g., bullet points or examples) could improve clarity without sacrificing brevity.

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

Completeness2/5

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

Given the lack of output schema and only three parameters, the description is minimal. It does not specify the return format, error handling, or data range constraints (e.g., maximum 'days' allowed), leaving the agent with gaps for correct invocation.

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 baseline is 3. The description does not add extra meaning beyond the schema; for example, it does not clarify station_id format or the 'days' parameter boundaries, but the schema already provides adequate definitions.

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

Purpose4/5

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

The description clearly states the tool retrieves historical track assignments using the IMT API, which distinguishes it from real-time or predictive tools among siblings. However, it could more explicitly contrast with similar history retrieval tools if any exist.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like predictions or schedules. The description lacks any mention of preferred contexts or exclusions.

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

mbta_get_live_facilitiesC

Get real-time facility status and outages.

ParametersJSON Schema
NameRequiredDescriptionDefault
facility_idNoSpecific facility ID to get status for
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description bears full responsibility. It lacks details on return format, data freshness, or any side effects. Minimal disclosure beyond the action.

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?

Single concise sentence, front-loaded with main purpose. However, it omits important details that could be included without making it verbose.

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

Completeness3/5

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

For a simple tool with 2 optional params and no output schema, description is somewhat complete, but missing explanation of return value (e.g., list of facility statuses) and how facility IDs are obtained.

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 covers both parameters with descriptions (100% coverage), so baseline is 3. Description adds no extra parameter insight, but does not detract.

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

Purpose4/5

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

Description clearly states verb 'Get' and resource 'real-time facility status and outages', distinguishing from static facility tools like mbta_get_facilities. However, it could be more specific about what types of facilities are covered.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like mbta_get_facilities or mbta_list_all_facilities. Agent must infer use case from name alone.

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

mbta_get_nearby_stopsC

Get stops near a specific location.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYesLatitude of the location
longitudeYesLongitude of the location
radiusNoSearch radius in meters (default: 1000)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full burden of behavioral disclosure. The description only states the basic function, omitting details about sorting by distance, handling of no results, rate limits, or any side effects. This is insufficient for a tool with no annotations.

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

Conciseness3/5

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

The description is very concise (6 words) but lacks structure and additional useful details. While not verbose, it does not enrich the agent's understanding beyond the name and parameter names. It could include information about result sorting or default parameters to earn its place.

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

Completeness2/5

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

Given the tool has 4 parameters and no output schema, the description is too sparse. It does not mention that results are sorted by distance, that radius defaults to 1000m, or how to interpret the output. The agent would benefit from contextual hints about when to use this over similar tools like mbta_search_stops.

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% with clear parameter descriptions for latitude, longitude, radius, and page_limit. The tool description adds no new information beyond what is in the schema, so it meets the baseline of 3 without adding extra value.

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

Purpose4/5

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

The description 'Get stops near a specific location' clearly states the action (get) and resource (stops) with a specific criterion (near a location). It distinguishes from sibling tools like mbta_search_stops (likely name-based) and mbta_get_stops (likely ID-based). However, it could be more explicit about the geographic proximity aspect.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not mention when to use this tool versus alternatives like mbta_search_stops or mbta_get_stops. The agent receives no context on appropriate use cases or exclusions.

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

mbta_get_predictionsC

Get real-time predictions for MBTA services.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idNoFilter predictions by stop ID
route_idNoFilter predictions by route ID
trip_idNoFilter predictions by trip ID
page_limitNoNumber of results to return (default: 10)

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states 'Get real-time predictions' without mentioning pagination, rate limits, data freshness, or any other behavioral traits beyond the input schema.

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

Conciseness3/5

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

The description is very concise at one sentence, but it lacks structure and important details. It could be expanded with usage notes without losing conciseness.

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

Completeness2/5

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

Given the tool has 4 parameters, no output schema, and no annotations, the description is too minimal. It does not explain the return format, pagination behavior, or other important context, making it incomplete for an agent to use effectively.

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 coverage is 100%, so the input schema already documents all parameters. The description adds no additional meaning beyond what is in the schema, resulting in a baseline score of 3.

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

Purpose4/5

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

The description clearly states the tool retrieves real-time predictions for MBTA services, using a specific verb and resource. However, it does not differentiate from many sibling tools with similar prediction-related purposes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, there are tools like mbta_get_predictions_for_stop and mbta_get_prediction_stats, but the description offers no context for selection.

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

mbta_get_predictions_for_stopC

Get all predictions for a specific stop.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idYesStop ID to get predictions for
route_idNoFilter by specific route
direction_idNoFilter by direction (0 or 1)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It only says 'Get all predictions' without specifying time horizon (real-time vs future), data freshness, error handling for invalid stop IDs, or any rate limits. This is insufficient for a tool with no 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?

One sentence, no fluff. However, it could be slightly expanded without sacrificing conciseness. Still efficient.

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

Completeness2/5

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

No output schema exists, and the description does not explain what the predictions contain (e.g., arrival/departure times, vehicles, status). This leaves the agent guessing about the return structure.

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?

Input schema covers all 4 parameters with descriptions (100% coverage). Description adds no extra meaning beyond schema; it just reiterates 'for a specific stop' which matches stop_id. Baseline of 3 is appropriate.

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

Purpose4/5

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

Description clearly states 'Get all predictions for a specific stop,' but does not differentiate from the sibling 'mbta_get_predictions' which might also return predictions. The name itself implies the scope, but the description could explicitly mention that this tool is scoped to a single stop.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like mbta_get_predictions, mbta_get_chained_track_predictions, or mbta_get_prediction_stats. No when-not-to-use or context provided.

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

mbta_get_prediction_statsC

Get prediction statistics and accuracy metrics for a station and route.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesStation ID to get stats for
route_idYesRoute ID to get stats for

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention data freshness, pagination, rate limits, or error handling. The description only states the basic operation, leaving the agent unaware of important behavioral traits like whether the stats are real-time or historical.

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 extremely concise at one sentence, with no wasted words. It front-loads the action ('Get') and resource. However, the lack of any supporting structure (e.g., examples, context) limits its utility, though the brevity is appropriate for a simple tool.

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

Completeness3/5

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

For a tool with 2 simple parameters and no output schema, the description is minimal but covers the basic operation. However, it omits information about the output format, which may be expected when no output schema is present. Additionally, absence of behavioral details reduces completeness.

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%, with each parameter having a basic description. The description adds no additional semantic value beyond what the schema provides. Per the rule, high coverage allows a baseline of 3, but the description does not clarify formats or constraints, such as possible ID values or data sources.

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

Purpose4/5

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

The description clearly states the tool retrieves prediction statistics and accuracy metrics for a given station and route. The verb 'Get' and the resource 'prediction statistics' are specific, and the mention of 'station and route' distinguishes it from sibling tools like mbta_get_predictions, which likely return raw predictions. However, it could be more explicit about what specific stats are included.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like mbta_get_predictions or mbta_get_track_prediction. There are no statements about prerequisites, limitations, or scenarios where this tool is preferred. The agent must infer usage solely from the name and parameters.

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

mbta_get_route_alternativesB

Get alternative route options by excluding certain modes of transport. Useful for finding backup routes when primary transit modes are disrupted.

ParametersJSON Schema
NameRequiredDescriptionDefault
origin_latYesOrigin latitude
origin_lonYesOrigin longitude
dest_latYesDestination latitude
dest_lonYesDestination longitude
primary_route_modesNoRoute types to exclude from alternatives (0=Light Rail, 1=Subway, 2=Commuter Rail, 3=Bus, 4=Ferry)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states that the tool returns 'alternative route options' without detailing output format, authentication requirements, or behavior in edge cases (e.g., no alternatives found). This is insufficient for a tool with no annotations.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core functionality. Every sentence adds value, with no redundant or vague phrases. It is concise and well-structured.

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

Completeness2/5

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

Despite having 5 parameters and no output schema, the description provides minimal information. It lacks details about the output format (e.g., whether results include transit directions, timing, or stops), pagination, or error handling. A more complete description would cover these aspects, especially given the absence of an output 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?

The input schema has 100% description coverage, with all parameters documented. The description adds the context that the tool works 'by excluding certain modes,' which aligns with the primary_route_modes parameter. However, it does not provide additional semantic meaning beyond what the schema already offers, so the baseline score 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 clearly states the tool's function: 'Get alternative route options by excluding certain modes of transport.' It specifies the verb (Get), the resource (route alternatives), and the mechanism (excluding modes). This distinguishes it from sibling tools like mbta_plan_trip, which plans full trips, and mbta_get_routes, which lists all routes.

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

Usage Guidelines3/5

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

The description includes a usage context: 'useful for finding backup routes when primary transit modes are disrupted.' However, it does not explicitly state when not to use this tool or compare it to alternatives. The usage is implied but lacks exclusions or references to sibling tools.

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

mbta_get_routesC

Get MBTA routes. Optionally filter by route ID or type.

ParametersJSON Schema
NameRequiredDescriptionDefault
route_idNoSpecific route ID to get
route_typeNoFilter by route type (0=Light Rail, 1=Subway, 2=Commuter Rail, 3=Bus, 4=Ferry)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, side effects, or response details. The name implies a read operation, but this is not stated.

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 a single, front-loaded sentence with no wasted words. It is concise but could include more detail without sacrificing brevity.

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

Completeness2/5

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

Given three parameters and no output schema, the description lacks essential context about return format, pagination behavior, or filtering semantics. Minimal completeness for a tool in a large sibling set.

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 coverage is 100%, so the description adds no new meaning beyond the parameter descriptions. It restates 'optionally filter by route ID or type', which is redundant.

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

Purpose4/5

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

The description clearly states 'Get MBTA routes' with optional filtering by route ID or type. It distinguishes from sibling 'mbta_list_all_routes' which likely lists all routes without filtering, so purpose is clear but could be more specific.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'mbta_list_all_routes'. With many sibling tools, explicit usage context is missing.

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

mbta_get_schedulesC

Get scheduled MBTA service times.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idNoFilter schedules by stop ID
route_idNoFilter schedules by route ID
trip_idNoFilter schedules by trip ID
direction_idNoFilter by direction (0 or 1)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden for behavioral disclosure. It does not mention that this is a read-only operation, whether it requires authentication, or what data range it covers (e.g., current or future schedules). The description is too brief to provide transparency.

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 extremely concise at one sentence. It is front-loaded and efficient, but could benefit from a little more detail without becoming verbose.

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

Completeness2/5

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

Given the lack of output schema and the tool having 5 optional parameters, the description should specify what the response contains or typical usage. It does not explain return format, pagination, or default behavior, making it incomplete for an agent to fully understand the tool's capabilities.

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%, meaning the input schema already documents all parameters. The description adds no additional meaning beyond what the schema provides. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Get scheduled MBTA service times', specifying a verb ('Get') and a resource ('scheduled MBTA service times'). However, it does not differentiate from sibling tools like mbta_get_schedules_by_time, which may cause confusion about when to use this one.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Given the presence of multiple schedule-related siblings (e.g., mbta_get_schedules_by_time), the description should indicate typical use cases or filtering scenarios.

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

mbta_get_schedules_by_timeB

Get MBTA schedules filtered by specific times and dates. Use this to find transit schedules for particular time windows, dates, or specific trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoFilter by service date (YYYY-MM-DD format)
min_timeNoFilter schedules at or after this time (HH:MM format, use >24:00 for next day)
max_timeNoFilter schedules at or before this time (HH:MM format)
route_idNoFilter by specific route ID
stop_idNoFilter by specific stop ID
trip_idNoFilter by specific trip ID
direction_idNoFilter by direction (0 or 1)
page_limitNoMaximum number of results to return (default: 10)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description only restates filtering purpose without disclosing behavioral traits like pagination, default limits, or read-only nature. Schema includes page_limit default but description adds no transparency beyond that.

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

Conciseness5/5

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

Two efficient sentences, front-loaded with action and then usage context. No wasted words.

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

Completeness2/5

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

With 8 optional parameters and no output schema, the description lacks details on return structure, behavior with no filters, or interaction between parameters. Incomplete for a complex filter tool.

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 description adds minimal semantic value beyond reinforcing filtering by times/dates. Baseline 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?

Description clearly states 'Get MBTA schedules filtered by specific times and dates' and 'Use this to find transit schedules for particular time windows, dates, or specific trips.' It distinguishes from sibling 'mbta_get_schedules' which likely provides unfiltered schedules.

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

Usage Guidelines3/5

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

Implies usage for time and date filtering, but no explicit guidance on when not to use or alternative tools like mbta_get_schedules for broader queries.

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

mbta_get_servicesC

Get MBTA service definitions and calendars.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_idNoSpecific service ID to get
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and description only says 'Get' which implies read-only but does not explicitly state non-destructive nature or other behavioral traits like whether multiple services can be fetched.

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?

Single sentence is concise and front-loaded. Could include more detail without being verbose, but remains appropriately sized.

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

Completeness2/5

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

No output schema and description provides minimal information about return values ('service definitions and calendars' is vague). Lacks completeness for understanding what the tool returns.

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 coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema, earning the baseline score.

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

Purpose4/5

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

Description uses specific verb 'Get' and resource 'MBTA service definitions and calendars,' clearly indicating the tool's purpose. However, it does not differentiate from sibling 'mbta_list_all_services' which likely lists services.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'mbta_list_all_services' or when specific filters apply. The description lacks context for proper selection.

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

mbta_get_shapesC

Get route shape/path information for mapping.

ParametersJSON Schema
NameRequiredDescriptionDefault
shape_idNoSpecific shape ID to get
route_idNoFilter shapes by route ID
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It only says 'for mapping,' which is vague. It does not mention data freshness, rate limits, required permissions (if any), or the response structure. For a tool returning geometric data, this is insufficient.

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 a single short sentence with no wasted words. It is front-loaded and easy to parse. However, it could be slightly more informative without becoming verbose.

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

Completeness2/5

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

Given the absence of an output schema, the description should indicate what the response contains (e.g., points, polylines). It does not explain default behavior when no parameters are provided (e.g., returns all shapes or first 10). The complexity is low, but the description lacks critical details for a mapping tool.

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 baseline is 3. The description adds no extra meaning beyond the schema; it repeats the purpose but not parameter details. The schema itself is minimal (e.g., 'Specific shape ID to get'), and the description does not explain how parameters interact or typical use cases.

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

Purpose4/5

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

The description clearly states the tool retrieves route shape/path information for mapping, using a specific verb 'Get' and resource 'route shape/path.' It distinguishes from siblings like mbta_get_routes which focus on route metadata, but could be more precise about what 'shape/path information' includes (e.g., polyline coordinates).

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as mbta_get_routes or mbta_get_trips. There is no mention of prerequisites, filtering strategies, or scenarios where this tool is preferred, leaving the agent without decision context.

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

mbta_get_stopsC

Get MBTA stops. Filter by stop ID, route, or location.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idNoSpecific stop ID to get
route_idNoFilter stops by route ID
latitudeNoLatitude for location-based search
longitudeNoLongitude for location-based search
radiusNoSearch radius in meters (used with lat/lng)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states filtering capabilities but does not mention read-only nature, pagination behavior beyond 'page_limit', or any side effects. The description adds little beyond the input schema.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it restates the tool name ('Get MBTA stops') and does not structure information for quick parsing. It is adequate but not exemplary.

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

Completeness2/5

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

Given the tool has 6 parameters, no output schema, and many sibling tools, the description is too minimal. It does not explain return format, pagination limits (beyond default 10), or how to combine filters. The agent lacks context for effective use.

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?

Input schema has 100% description coverage for all 6 parameters, so the baseline is 3. The description paraphrases the filters ('stop ID, route, or location') but adds no new meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool retrieves MBTA stops and can filter by stop ID, route, or location. However, it does not explicitly distinguish itself from sibling tools like mbta_list_all_stops or mbta_search_stops, which could cause confusion.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternative sibling tools for stops. With multiple stop-related tools, this omission makes it harder for an AI agent to select the correct one.

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

mbta_get_track_predictionC

Get track prediction for a specific trip using IMT API. Predicts which track a train will use at a station.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesStation ID where prediction is needed
route_idYesRoute ID (e.g., CR-Providence)
trip_idYesTrip ID for the specific train
headsignYesDestination/headsign (e.g., South Station)
direction_idYesDirection (0 or 1)
scheduled_timeYesScheduled departure/arrival time (ISO format)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only mentions 'predicts' without disclosing if it is real-time, data freshness, or potential errors.

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?

Two sentences and 15 words is concise, but the second sentence is largely redundant with the first, reducing efficiency.

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

Completeness2/5

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

With 6 required parameters and no output schema, the description is too brief, lacking details on return values or error handling.

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 coverage is 100% with good parameter descriptions. The tool description adds no extra meaning beyond the schema, which is acceptable per baseline.

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

Purpose4/5

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

The description clearly states it gets a track prediction for a specific trip, distinguishing it from general predictions. However, it does not differentiate from the sibling 'mbta_get_chained_track_predictions'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as mbta_get_predictions or mbta_get_chained_track_predictions.

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

mbta_get_tripsC

Get MBTA trip information.

ParametersJSON Schema
NameRequiredDescriptionDefault
trip_idNoSpecific trip ID to get
route_idNoFilter trips by route ID
direction_idNoFilter by direction (0 or 1)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description is minimal. It does not disclose whether the tool returns a single trip or a list, how pagination works (though page_limit parameter implies it), or any rate limits, data freshness, or side effects. The behavioral transparency is poor given no annotations to lean on.

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

Conciseness3/5

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

The description is very concise at one sentence, but it sacrifices informativeness. It is front-loaded with the verb and resource, but lacks structural elements like usage context or parameter hints. It is appropriately sized for a trivial tool, but given the complexity of the API, more detail would be justified without being verbose.

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

Completeness2/5

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

With no output schema, the description should clarify return values, but it does not. The tool has 4 optional parameters, yet no guidance on default behavior (e.g., retrieving all trips vs. requiring at least one filter). Given the number of sibling tools, this lack of completeness hinders effective use.

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 coverage is 100%, so each parameter already has a description. The tool description adds no extra meaning beyond what the schema provides. For example, it does not explain how direction_id values map to direction names or how pagination interacts with other filters. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Get MBTA trip information.' clearly states the verb ('Get') and resource ('trip information'). However, it is generic and does not differentiate from sibling tools like mbta_get_routes or mbta_get_schedules, which also retrieve related data. The schema hints at filtering by trip_id, route_id, etc., but the description lacks specificity about scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool compared to alternatives such as mbta_get_schedules, mbta_get_predictions, or mbta_get_vehicle_positions. The description does not mention any use cases or exclusions, leaving the agent without context for tool selection.

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

mbta_get_vehicle_positionsB

Get real-time vehicle positions from external API. Returns GeoJSON data with vehicle locations, routes, status, and other real-time information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; description mentions 'from external API' hinting at a network call but omits details on rate limits, authentication, 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.

Conciseness5/5

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

Two concise sentences with no redundant information; effectively conveys purpose and output format.

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

Completeness3/5

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

Lacks differentiation from similar tools and does not clarify that no parameters implies all vehicle positions are returned; marginal completeness.

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

Parameters4/5

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

No parameters defined; baseline score of 4 applies as schema covers 100% and description adds no additional param meaning.

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

Purpose4/5

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

Clearly states it gets real-time vehicle positions and returns GeoJSON data, but does not explicitly differentiate from the similar sibling mbta_get_vehicles.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like mbta_get_vehicles or other data tools; lacks context for selection.

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

mbta_get_vehiclesB

Get real-time MBTA vehicle positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_idNoSpecific vehicle ID to get
route_idNoFilter vehicles by route ID
trip_idNoFilter vehicles by trip ID
page_limitNoNumber of results to return (default: 10)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must handle behavioral disclosure, but it only states the purpose. It omits important traits like data freshness, authentication, rate limits, or pagination behavior (despite a page_limit parameter). The user cannot infer real-time update frequency or how results are ordered.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately communicates the core function. No unnecessary words, and it is front-loaded with the key action and resource.

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

Completeness2/5

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

Given 4 optional parameters and no output schema, the description is incomplete. It fails to explain return format, field names, or how to use filters effectively. A real-time data tool requires more context for proper usage.

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?

Input schema descriptions cover 100% of parameters with basic explanations. The tool description adds no additional value beyond what the schema already provides. Baseline 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 clearly states the action ('Get'), the resource ('real-time MBTA vehicle positions'), and is specific. It distinguishes this tool from siblings like mbta_get_predictions or mbta_get_routes by focusing on vehicle position data.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, or exclusions, such as when to prefer mbta_get_predictions or mbta_get_schedules instead.

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

mbta_list_all_alertsB

List all MBTA alerts with optional fuzzy filtering. Returns all alerts without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter alerts by header or description
max_resultsNoMaximum number of results to return (default: 50)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for disclosing behavior. It only mentions 'client-side fuzzy search' and default behavior, omitting details like authentication, rate limits, data freshness, or error handling. This is insufficient for an accurate behavioral model.

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

Conciseness5/5

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

The description is two sentences long, with the most important information (verb, resource, optional filtering) in the first sentence. Every word is functional, and there is no redundancy or unnecessary detail.

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

Completeness3/5

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

For a simple list tool with no output schema and two intuitive parameters, the description captures the core functionality. However, it lacks details on output structure, default sorting, or limits, which could leave an agent uncertain about what to expect from the response.

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?

The input schema already describes both parameters (query, max_results) with 100% coverage. The description adds the phrase 'optional fuzzy filtering' and 'client-side fuzzy search,' which aligns with the query parameter but does not provide additional semantic meaning beyond the schema.

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

Purpose4/5

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

The description clearly states 'List all MBTA alerts with optional fuzzy filtering,' specifying the verb and resource. However, it does not explicitly differentiate from sibling tools like mbta_get_external_alerts, which may have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or scenarios where other tools (e.g., mbta_get_alerts) would be more appropriate.

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

mbta_list_all_facilitiesB

List all MBTA facilities with optional fuzzy filtering. Returns all facilities without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter facilities by name
max_resultsNoMaximum number of results to return (default: 50)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions 'client-side fuzzy search' and 'returns all facilities without specific filters', which are helpful. However, it does not mention pagination or limits, though max_results in schema partially covers this.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose and filtering capability. No redundant information.

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

Completeness2/5

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

The tool has no output schema, so the description should explain return structure. It only says 'returns all facilities', leaving the response format unspecified. For a list tool, this is a significant gap.

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%, and the description adds 'client-side' detail to the query parameter. This adds marginal value, but baseline is 3 due to high schema coverage.

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

Purpose4/5

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

The description clearly states the tool lists MBTA facilities with optional fuzzy filtering. It distinguishes from sibling list tools by specifying the resource type, but does not explicitly differentiate from mbta_get_facilities.

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

Usage Guidelines3/5

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

The description implies usage for listing facilities with or without a fuzzy query, but does not provide guidance on when to use this tool versus alternatives like mbta_get_facilities for specific lookups.

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

mbta_list_all_linesA

List all MBTA lines with optional fuzzy filtering. Returns all lines without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter lines by name
max_resultsNoMaximum number of results to return (default: 50)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the client-side fuzzy search behavior and implies a read-only operation, but does not detail data freshness, response size limits, or pagination behavior beyond the max_results parameter.

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

Conciseness5/5

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

Two succinct sentences that front-load the core purpose and immediately follow with the key qualifier (optional fuzzy filtering). No redundant or extraneous information.

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 simple list tool with two optional parameters and no output schema, the description covers the main functionality and behavior. It could mention the output format or any inherent limits, but is largely complete given the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds value by specifying that filtering is 'client-side' and 'fuzzy' beyond the schema's description of 'Optional fuzzy search query'. The 'max_results' default is already in the schema.

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 clearly states the action ('List'), the resource ('all MBTA lines'), and the optional feature ('fuzzy filtering'). It distinguishes from sibling tools that list routes or alerts by specifying 'lines'.

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

Usage Guidelines3/5

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

The description implies usage for retrieving lines with optional filtering, but does not explicitly state when to prefer this tool over alternatives like 'mbta_get_routes' or 'mbta_list_all_routes'. No 'when not to use' guidance is provided.

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

mbta_list_all_routesA

List all MBTA routes with optional fuzzy filtering. Returns all routes without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter routes by name
max_resultsNoMaximum number of results to return (default: 50)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations; description only mentions client-side fuzzy search, leaving out auth needs, rate limits, or response traits.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with core action.

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

Completeness3/5

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

No output schema; description doesn't specify return format or pagination. Adequate for a simple list but gaps remain.

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

Parameters4/5

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

Schema covers 100% of params; description adds context that query is fuzzy and client-side, and max_results limits output, going beyond schema.

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?

Verb 'List' + resource 'all MBTA routes' is specific and distinguishes from siblings like mbta_get_routes. Optional fuzzy filtering adds clarity.

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

Usage Guidelines3/5

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

Implies use for fetching all routes or filtered results, but no explicit when-to-use vs alternatives (e.g., mbta_get_routes) or conditions.

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

mbta_list_all_servicesB

List all MBTA services with optional fuzzy filtering. Returns all services without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter services by description
max_resultsNoMaximum number of results to return (default: 50)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'client-side fuzzy search' but lacks details on data freshness, pagination, or authentication. Behavioral context is minimal.

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

Conciseness5/5

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

The description is two sentences with no redundant information. It is tightly written and front-loads the core purpose.

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

Completeness3/5

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

Given no output schema and no annotations, the description covers the basics but lacks details on return format, result limits, or behavior when no query is provided. It is adequate but not thorough.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds value by explaining the fuzzy search is client-side, beyond the schema's parameter descriptions. This enhances understanding of the filtering behavior.

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

Purpose4/5

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

The description clearly states the verb 'list' and resource 'all MBTA services' with optional fuzzy filtering. It is specific and distinct from sibling tools like mbta_get_services, though no explicit differentiation is provided.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like mbta_get_services or other list tools. The description only states functionality without context for choosing this tool.

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

mbta_list_all_stopsC

List all MBTA stops with optional fuzzy filtering. Returns all stops without specific filters, with client-side fuzzy search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional fuzzy search query to filter stops by name
max_resultsNoMaximum number of results to return (default: 50)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility. It mentions client-side fuzzy search but lacks details on performance implications, data freshness, rate limits, or pagination (though max_results is noted). The description is thin on behavioral traits.

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

Conciseness5/5

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

The description is two concise sentences with no unnecessary wording, front-loading the main action clearly.

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

Completeness2/5

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

Despite the tool not having an output schema or annotations, the description does not cover important aspects like error handling, potential performance with large datasets, or the nature of the return values. It is minimal for a list-all tool.

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 coverage is 100%, so the schema already describes both parameters. The description adds the concept of 'client-side fuzzy search' for the query parameter, which adds some context beyond the schema, but not significantly more.

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

Purpose4/5

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

The description clearly states it lists all MBTA stops with optional fuzzy filtering, using specific verb and resource. It distinguishes itself from siblings like 'mbta_get_stops' and 'mbta_search_stops' by indicating it returns all stops without filters and handles search client-side.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'mbta_get_stops' or 'mbta_search_stops'. The description does not provide context for selection criteria.

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

mbta_plan_tripA

Plan a trip between two locations using MBTA public transit. Returns optimal route options with transfers, walking times, and real-time data.

ParametersJSON Schema
NameRequiredDescriptionDefault
origin_latYesOrigin latitude
origin_lonYesOrigin longitude
dest_latYesDestination latitude
dest_lonYesDestination longitude
departure_timeNoPreferred departure time in ISO format (defaults to now)
arrival_timeNoRequired arrival time in ISO format (overrides departure_time)
max_walk_distanceNoMaximum walking distance in meters (default: 800)
max_transfersNoMaximum number of transfers allowed (default: 3)
prefer_fewer_transfersNoPrioritize routes with fewer transfers (default: true)
wheelchair_accessibleNoOnly include wheelchair accessible routes (default: false)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It discloses return of 'optimal route options' but lacks details on data freshness, rate limits, error handling, or whether it supports real-time or historical data. Adequate but not thorough.

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

Conciseness5/5

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

Single sentence is maximally concise and front-loads the purpose. No redundant information.

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

Completeness2/5

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

With 10 parameters, no output schema, and a description that does not explain parameter interactions or return format, the tool lacks completeness. It fails to convey that the output likely includes multiple itineraries, transit modes, or how to interpret optimality.

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 coverage is 100%, so baseline is 3. Description adds no parameter-specific value beyond the schema. It mentions 'transfers, walking times, and real-time data' but does not elaborate on parameter roles like departure_time vs arrival_time.

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?

Description clearly states the verb ('Plan a trip'), resource ('MBTA public transit'), and output ('optimal route options with transfers, walking times, and real-time data'). It distinctly separates from sibling tools which are all data retrieval (alerts, schedules, etc.).

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?

Description implicitly defines usage by stating 'Plan a trip,' which sets clear context against sibling getters. However, it lacks explicit when-to-use or when-not-to-use guidance, such as scenarios better suited for other tools like schedules.

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

mbta_search_stopsC

Search for stops by name or near a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for stop names
latitudeNoLatitude for location-based search
longitudeNoLongitude for location-based search
radiusNoSearch radius in meters (default: 1000)
page_limitNoNumber of results to return (default: 10)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral disclosure responsibility, but it only states a generic action. It omits details like whether query is needed for location searches, return format, or any side effects (none expected), leaving behavior largely undefined.

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 extremely concise (7 words, one sentence) and front-loaded. While it wastes no words, it is arguably too terse to provide sufficient context, but conciseness itself is good.

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

Completeness2/5

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

Given 5 parameters and no output schema, the description is too minimal. It fails to explain combined name/location search behavior, output format, or how it relates to siblings like 'mbta_get_nearby_stops' and 'mbta_get_stops', leaving significant gaps for an agent.

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 coverage is 100% with clear descriptions for all 5 parameters. The description adds the phrase 'near a location' to hint at the role of latitude/longitude, but this is already implicit from the schema. The tool description does not significantly enhance param understanding beyond the schema.

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

Purpose4/5

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

The description clearly states the tool searches for stops by name or location. While it captures the core function, it does not explicitly distinguish from sibling tools like 'mbta_get_nearby_stops' (location-only) or 'mbta_get_stops' (by ID), leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. For example, it doesn't compare to 'mbta_get_nearby_stops' for location-only searches or 'mbta_list_all_stops' for unfiltered lists, making selection harder for an agent.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 32 tool updatesv0.1.0
    • First observedmbta_get_alerts
    • First observedmbta_get_amtrak_health_status
    • First observedmbta_get_amtrak_trains
    • First observedmbta_get_amtrak_trains_geojson
    • First observedmbta_get_chained_track_predictions
    • First observedmbta_get_external_alerts
    • First observedmbta_get_facilities
    • First observedmbta_get_historical_assignments
    • First observedmbta_get_live_facilities
    • First observedmbta_get_nearby_stops
    • First observedmbta_get_prediction_stats
    • First observedmbta_get_predictions
    • First observedmbta_get_predictions_for_stop
    • First observedmbta_get_route_alternatives
    • First observedmbta_get_routes
    • First observedmbta_get_schedules
    • First observedmbta_get_schedules_by_time
    • First observedmbta_get_services
    • First observedmbta_get_shapes
    • First observedmbta_get_stops
    • First observedmbta_get_track_prediction
    • First observedmbta_get_trips
    • First observedmbta_get_vehicle_positions
    • First observedmbta_get_vehicles
    • First observedmbta_list_all_alerts
    • First observedmbta_list_all_facilities
    • First observedmbta_list_all_lines
    • First observedmbta_list_all_routes
    • First observedmbta_list_all_services
    • First observedmbta_list_all_stops
    • First observedmbta_plan_trip
    • First observedmbta_search_stops

TDQS

B3.4/5.0

Scored across 32 tools

Disambiguation4/5

Most tools have distinct purposes, but some overlap exists (e.g., mbta_get_vehicles and mbta_get_vehicle_positions, multiple alert tools). Descriptions help differentiate, but slight ambiguity remains.

Naming Consistency5/5

All tools follow a consistent mbta_verb_noun pattern (e.g., mbta_get_predictions, mbta_list_all_alerts). No style mixing; very predictable.

Tool Count4/5

32 tools is high, but the MBTA domain is complex, covering alerts, predictions, schedules, facilities, vehicles, etc. The number is justified, though slightly above ideal.

Completeness5/5

The tool set comprehensively covers transit operations: real-time data, predictions, schedules, routes, stops, facilities, alerts, and trip planning. No obvious gaps for common use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time San Francisco Bay Area Rapid Transit data, enabling queries about BART schedules, routes, and station information through natural language.
    2 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides read-only access to live Bay Area transit data, including routes, stops, real-time departures, vehicle positions, and service alerts, for use by large language models.
    6
    -