Skip to main content
Glama
labeveryday

nba-stats-mcp

by labeveryday

🏀 NBA MCP Server

PyPI version Python 3.10+ License: MIT Tests Code style: ruff

Access comprehensive NBA statistics via Model Context Protocol

A Model Context Protocol (MCP) server that provides access to live and historical NBA data including player stats, game scores, team information, and advanced analytics. v0.3.0: All 21 tools accept human names (not just IDs), return structured data + compact text, and default season to current. Optimized for both large and small LLM clients.

Quick Start with Claude Desktop

  1. Install the server:

# Using uvx (recommended - no install required)
uvx nba-stats-mcp

# Or using pip
pip install nba-stats-mcp

# Or from source
git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
uv sync
  1. Add to your Claude Desktop config file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "nba-stats": {
      "command": "uvx",
      "args": ["nba-stats-mcp"]
    }
  }
}

Or if you installed from source:

{
  "mcpServers": {
    "nba-stats": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/nba-stats-mcp/",
        "run",
        "nba-stats-mcp"
      ]
    }
  }
}
  1. Restart Claude Desktop

Related MCP server: NBA MCP Server

What You Can Ask

  • "Show me today's NBA games"

  • "What are LeBron James' stats this season?"

  • "Get the box score for Lakers vs Warriors"

  • "Who are the top 10 scorers this season?"

  • "Show me all-time assists leaders"

  • "When do the Celtics play next?"

  • "Get Stephen Curry's shot chart"

  • "Who are the league leaders in deflections?"

  • "Show me Giannis' career awards"

Available Tools (21 total)

All tools accept human names — no need to resolve IDs first. Every response includes structured data + compact text.

Player Tools

  • get_player_info(player) - Player bio and details (accepts name or ID)

  • get_player_stats(player, stat_type) - Season, career, game log, hustle, defense, or advanced stats

  • get_player_awards(player) - All awards and accolades

  • get_shooting_data(player, data_type) - Shot chart or shooting splits

Team Tools

  • get_team_roster(team) - Team roster (accepts team name or ID)

  • get_team_advanced_stats(team) - Team efficiency metrics (ORtg, DRtg, pace)

  • get_schedule(team) - Upcoming games

  • get_standings() - League standings by conference

Game Tools

  • get_scoreboard(date?) - Games for a date (defaults to today)

  • find_game(team1, team2?, date?) - Find game_id by team matchup

  • get_game_details(game_id) - Live game info with team stats

  • get_box_score(game_id) - Full box score with player stats

  • get_play_by_play(game_id) - Play-by-play with timestamps

  • get_game_rotation(game_id) - Player rotation/substitution data

League Tools

  • get_leaders(category, scope) - Current season, all-time, or hustle leaders

  • get_season_awards(season?) - Season MVP and major awards

Composite Tools (new in v0.3.0)

  • compare_players(player1, player2) - Side-by-side player comparison

  • daily_summary(date?) - All games + scores for a date

  • team_overview(team) - Roster + record + upcoming schedule

Resolution Tools

  • resolve_player_id(query) - Fuzzy match player name to ID

  • resolve_team_id(query) - Fuzzy match team name to ID

Visual Assets (Public NBA CDN)

This MCP server also returns public NBA CDN asset URLs (no API key) alongside IDs in several tool responses, so UI clients can render visuals.

  • Player headshots:

    • Full size: https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.png

    • Thumbnail: https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png

  • Team logos (SVG):

    • https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg

Tools that include these URLs:

  • players: resolve_player_id, get_player_info, get_player_stats

  • teams: resolve_team_id, get_standings, get_team_roster

Installation Options

git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
uv sync

With pip

pip install nba-stats-mcp

From source

git clone https://github.com/labeveryday/nba-stats-mcp.git
cd nba-stats-mcp
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -e .

Usage with Other MCP Clients

Python/Strands

from mcp import stdio_client, StdioServerParameters
from strands.tools.mcp import MCPClient

mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(
        command="uvx",
        args=["nba-stats-mcp"]
    )
))

Running Standalone (for testing)

# If installed via pip/uvx (stdio, default)
nba-stats-mcp

# Or from source
uv run nba-stats-mcp
# or
python -m nba_mcp_server

Streamable HTTP Transport (new in v0.2.0)

# Run as an HTTP server instead of stdio
nba-stats-mcp --transport streamable-http --host 127.0.0.1 --port 8000

# Also supports SSE transport
nba-stats-mcp --transport sse --port 8000

MCP Inspector

npx @modelcontextprotocol/inspector
# In the Inspector UI, configure a stdio server:
# - Command: uv
# - Args: --directory /absolute/path/to/nba-stats-mcp run nba-stats-mcp
#   (or Command: python, Args: -m nba_mcp_server)

JSON Response Format (v3.0)

All tools return a single JSON object (encoded as the MCP TextContent.text string). The top-level schema is:

  • tool_name: tool that ran

  • arguments: arguments passed

  • text: compact 1-3 line summary (clean — no IDs or CDN URLs)

  • data: structured dict with all machine-readable values (primary output for programmatic use)

  • entities: extracted IDs + asset URLs for UI rendering

Visual Assets (Public NBA CDN)

The server includes public CDN URLs (no API key required) in entities:

  • Player headshots:

    • headshot_url: https://cdn.nba.com/headshots/nba/latest/1040x760/{playerId}.png

    • thumbnail_url: https://cdn.nba.com/headshots/nba/latest/260x190/{playerId}.png

  • Team logos:

    • team_logo_url: https://cdn.nba.com/logos/nba/{teamId}/global/L/logo.svg

Configuration

Logging Levels

Control logging verbosity with the NBA_MCP_LOG_LEVEL environment variable (default: WARNING):

export NBA_MCP_LOG_LEVEL=INFO  # For debugging
nba-stats-mcp

In Claude Desktop config:

{
  "mcpServers": {
    "nba-stats": {
      "command": "uvx",
      "args": ["nba-stats-mcp"],
      "env": {
        "NBA_MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Performance & Reliability Tuning

You can tune request behavior (helpful when agents do parallel tool calls) via env vars:

  • NBA_MCP_HTTP_TIMEOUT_SECONDS: Per-request timeout (default: 30)

  • NBA_MCP_MAX_CONCURRENCY: Max concurrent outbound NBA API requests (default: 8)

  • NBA_MCP_RETRIES: Retries for transient failures (429 / 5xx / network) (default: 2)

  • NBA_MCP_CACHE_TTL_SECONDS: Cache TTL for stats endpoints (default: 120)

  • NBA_MCP_LIVE_CACHE_TTL_SECONDS: Cache TTL for live endpoints (default: 5)

  • NBA_MCP_TLS_VERIFY: TLS verification enabled (default: 1). If you see PermissionError reading CA bundles (common in sandboxed/macOS privacy contexts), set to 0.

Example Claude Desktop config:

{
  "mcpServers": {
    "nba-stats": {
      "command": "uvx",
      "args": ["nba-stats-mcp"],
      "env": {
        "NBA_MCP_LOG_LEVEL": "INFO",
        "NBA_MCP_MAX_CONCURRENCY": "8",
        "NBA_MCP_CACHE_TTL_SECONDS": "120",
        "NBA_MCP_LIVE_CACHE_TTL_SECONDS": "5",
        "NBA_MCP_RETRIES": "2",
        "NBA_MCP_HTTP_TIMEOUT_SECONDS": "30"
      }
    }
  }
}

Data Sources

This server uses official NBA APIs:

  • Live Data API - Real-time scores and game data

  • Stats API - Player stats, team info, historical data

  • Schedule API - Full season schedule including future games

Development

Running Tests

uv sync --all-extras
uv run pytest
uv run pytest --cov=nba_mcp_server --cov-report=html

Code Quality

uv run ruff check src/
uv run ruff format src/

Security (Bandit)

Static security analysis:

uv sync --all-extras
uv run bandit -c pyproject.toml -r src/

Releasing to PyPI

This project uses Hatchling for builds. Recommended release steps:

# 1) Ensure clean env + tests
uv sync --all-extras
uv run pytest
uv run ruff check src/ tests/
uv run bandit -c pyproject.toml -r src/

# 2) Build distributions
uv run python -m build

# 3) Upload
uv run twine upload dist/*

Tip: for TestPyPI uploads, use twine upload --repository testpypi dist/*.

Requirements

  • Python 3.10+

  • mcp >= 1.23.0

  • httpx >= 0.27.0

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! Please submit a Pull Request.

About the Author

This project was created by Du'An Lightfoot, a developer passionate about AI agents, cloud infrastructure, and teaching in public.

Learn more and connect:

Available Tools

21 tools
compare_playersC

Compare two players side by side. Accepts names or IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
player1Yes
player2Yes
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/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 full burden. It states the tool compares players but does not disclose what the comparison entails (e.g., which statistics, side effects, or data scope). The behavior is minimally described.

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 front-loaded sentence, which is concise. However, it is too brief and could be expanded without losing conciseness. It earns its place but lacks completeness.

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 3 parameters and an output schema, the description is incomplete. It does not explain what the output represents, the scope of comparison, or any limits. The existing output schema reduces the need to describe return values, but the description still lacks essential context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It adds that player1 and player2 accept names or IDs, which is helpful, but it does not explain the optional 'season' parameter or any format constraints. The description adds marginal value over 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 it compares two players side by side, which is a specific verb and resource. It distinguishes from sibling tools like get_player_stats or get_player_info, which focus on single players. However, it could be more precise about what attributes are compared.

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 mentions it accepts names or IDs, giving basic input guidance. However, it provides no context on when to use this tool versus alternatives (e.g., when to use get_player_stats instead), no exclusions, and no prerequisites.

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

daily_summaryB

All games + scores for a date. Defaults to today.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states the tool lists games and scores, but omits any information about auth requirements, read-only nature, rate limits, pagination, or data format. The minimal text does not compensate for the lack of 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 extremely concise at 12 words, with the core purpose stated first and the default behavior appended. Every word earns its place; no filler or redundant information. The structure is front-loaded and efficient.

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 the tool's simplicity (1 optional parameter) and presence of an output schema, the description provides the essential function. However, it lacks usage context (e.g., date format, ordering, how it differs from similar tools). The completeness is adequate for a trivial tool but missing guidance that would help an agent choose correctly among siblings.

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 0% description coverage for the 'date' parameter. The description adds 'Defaults to today', which clarifies the default behavior and optionality. However, it does not specify the expected date format or allowed values, leaving the agent to infer. This adds moderate value 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 that the tool returns 'All games + scores for a date', which specifies the verb (list/retrieve) and resource (games and scores). The scope is well-defined, but it does not explicitly distinguish from siblings like 'get_scoreboard' or 'get_game_details', leading to 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?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'Defaults to today', which implies typical usage, but no explicit context, exclusions, or when-not-to-use. Sibling tools like 'get_scoreboard' or 'get_schedule' might be confused without further clarification.

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

find_gameB

Find game_id by team matchup and optional date. Accepts team names.

ParametersJSON Schema
NameRequiredDescriptionDefault
team1Yes
team2No
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 full burden. It does not disclose whether multiple game_ids can be returned, what happens if no match, or any side effects. The behavior for optional team2 (only one team?) is unclear.

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 of 10 words, making it concise but under-specified. It conveys the core purpose but sacrifices clarity and completeness, lacking details that could fit without excessive length.

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 3 parameters, no annotations, and an output schema exists, the description is incomplete. It does not explain match behavior (e.g., exact vs partial, case sensitivity, handling of multiple games on same date) or error conditions. Essential context for correct usage is missing.

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

Parameters2/5

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

The description mentions 'team matchup' and 'optional date', which maps to team1, team2, and date parameters, but does not specify expected formats for team names or date. Since schema coverage is 0%, the description adds little beyond the schema, and the optionality of team2 is ambiguous.

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 finds a game_id by team matchup and optional date, specifying it accepts team names. This distinguishes it from sibling tools like get_schedule or get_game_details, which serve different purposes.

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 when needing a game_id from team names and a date, but does not explicitly state when to use this tool versus alternatives like get_schedule (to find games) or when not to use it. No exclusion criteria or alternative tools are mentioned.

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

get_box_scoreB

Full box score with player stats. Accepts game_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 cover behavioral traits. It only restates the purpose without detailing what 'full box score' includes, any limitations, or side effects.

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 with two short sentences. It could be more structured but is efficient 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?

The tool has an output schema, reducing the need to explain return values. However, the description lacks context on prerequisites, error conditions, or data scope, making it minimally complete.

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

Parameters1/5

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

The schema has 0% description coverage for parameters. The description merely repeats 'Accepts game_id,' adding no format, constraints, or context beyond 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 it provides a full box score with player stats for a game, using game_id. It distinguishes itself from siblings like get_game_details and get_play_by_play.

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 box score retrieval but provides no explicit guidance on when to use or when not to use it, nor any comparison to sibling tools.

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

get_game_detailsC

Detailed game info. Accepts game_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or potential side effects.

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

Conciseness2/5

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

The description is extremely brief, consisting of two fragments that lack substance; conciseness is achieved at the cost of completeness.

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 an output schema, the description fails to provide context about the tool's role among numerous siblings, leaving the agent uncertain about when to invoke it.

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

Parameters1/5

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

The description only restates the parameter name ('Accepts game_id'), adding no semantic information beyond the schema, which has 0% coverage and provides only name and type.

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

Purpose3/5

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

The description states 'Detailed game info' which clearly indicates the tool retrieves comprehensive game data, but it does not differentiate from siblings like get_box_score or get_play_by_play, which also provide game details.

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; the agent has no criteria to choose among similar siblings.

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

get_game_rotationC

Player rotation/substitution data for a game.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description implies read-only behavior by stating 'data for a game' but lacks details on authentication, performance, or side effects. Insufficient disclosure 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?

Single sentence with clear purpose, front-loaded. No wasteful text, but could be expanded slightly with parameter details without losing conciseness.

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 low complexity (1 param, output schema exists), the description is minimally adequate but lacks parameter documentation. With output schema, return values are covered, but usage context is missing.

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

Parameters1/5

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

Schema description coverage is 0%, and description does not explain the 'game_id' parameter meaning or format. The description adds no value beyond 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?

Description clearly states verb (get) and resource (rotation/substitution data for a game). Distinguishes from siblings like get_game_details or get_box_score by specifying rotation 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 on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description is minimal with no usage context.

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

get_leadersC

League leaders. scope: current_season (default), all_time, hustle. category: points, assists, rebounds, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNopoints
scopeNocurrent_season
seasonNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must fully disclose behavior. It lists available scope and category options but does not explain what the tool does with the limit, season parameters, or whether it is read-only. The output format is not described, and no restrictions or side effects are mentioned.

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, using a single sentence and keyword examples. While it gets the point across, it could be better structured with separate lines or bullet points for clarity. 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?

Given the presence of an output schema, the description need not detail return values. However, it only covers two of four parameters superficially, and lacks guidance on valid values or usage context. The sibling tools provide some context but the description is not complete enough for an agent to use confidently.

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?

With 0% schema description coverage, the description partially compensates by explaining the meaning of 'scope' and 'category' with examples. However, 'season' and 'limit' are not addressed, and the values for category and scope are not formally defined.

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 'League leaders' with scope and category examples clearly indicates that the tool retrieves top performers. It distinguishes from siblings like get_player_stats or get_standings by focusing on leaders. However, it lacks a verb and could be more explicit about the operation.

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 compare_players or get_player_stats. There is no mention of when to choose different scopes or categories, nor any exclusions or prerequisites.

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

get_play_by_playC

Play-by-play data for a game.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYes
start_periodNo
end_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose any behavioral traits such as mutability, performance implications, or data freshness. The agent learns nothing beyond the basic purpose.

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

Conciseness2/5

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

The description is extremely concise (one short phrase), but brevity sacrifices necessary detail. There is no structure such as bullet points or separation of concerns, and it fails to earn its place by providing complete 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?

Given the simplicity of the tool (3 parameters, no nested objects) and the presence of an output schema, the description could be more complete. It lacks explanation of parameter ranges, default behavior, or how data is returned.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no meaning to the parameters (game_id, start_period, end_period). The agent must infer semantics from parameter names alone, which is insufficient.

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 provides 'play-by-play data for a game', directly conveying the verb (get) and resource (play-by-play data) with a specific scope (for a game). This distinguishes it from sibling tools like get_box_score or get_game_details.

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 indicate when to use this tool versus alternatives (e.g., get_box_score for box scores) or mention any preconditions.

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

get_player_awardsB

Player awards/accolades. Accepts player name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden. It does not disclose whether the tool is read-only, error behavior, rate limits, or other behavioral traits. The output schema may cover return values, but the description should provide more context for safety.

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 sentence that conveys the core purpose and parameter hint without unnecessary words. It is appropriately sized and front-loaded.

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 the existence of an output schema, the description does not need to detail return values. However, it lacks context on the scope of awards, ordering, or typical usage patterns, making it minimally adequate.

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?

With 0% schema description coverage, the description adds value by clarifying that 'player' can be a name or ID, which goes beyond the schema's type string. This helps the agent understand acceptable input formats.

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 'Player awards/accolades', which is a specific verb+resource. It distinguishes from siblings like get_player_info and get_player_stats, but could be more specific about the scope (e.g., career vs. season awards) compared to get_season_awards.

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 mentions 'Accepts player name or ID', providing a hint for the parameter. However, it lacks explicit guidance on when to use this tool vs. alternatives like get_season_awards, and no prerequisites or exclusions are stated.

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

get_player_infoB

Player bio/profile. Accepts player name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden for behavioral traits. It only states it accepts name or ID but omits details like authentication requirements, rate limits, or whether it works with partial names versus exact matches. No mention of output format or edge cases.

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 short (two sentences) and front-loaded. It conveys the purpose and parameter flexibility without fluff. Slightly more detail (e.g., 'returns biographical data') would not harm conciseness, but it is efficient.

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 the presence of an output schema, the description does not need to detail return values. However, it lacks context on typical use cases, limitations (e.g., only for active players), or how it differs from related tools like resolve_player_id. It is minimally complete for a simple tool.

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 schema provides only the parameter name 'player' and type 'string' with 0% description coverage. The description adds that it accepts 'player name or ID', clarifying the parameter's acceptable values beyond the raw schema, which is valuable for an agent.

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 returns a player bio/profile, which distinguishes it from sibling tools like get_player_stats (statistics) or get_player_awards (awards). It also specifies it accepts player name or ID, adding clarity to the 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 versus alternatives. It does not mention scenarios where it should not be used or recommend other tools for different needs (e.g., searching by partial name vs. exact ID).

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

get_player_statsC

Player stats. stat_type: season (default), career, game_log, hustle, defense, advanced. Accepts player name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
stat_typeNoseason
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description should disclose behavioral traits like read-only status, rate limits, or authentication needs. It only states it returns stats, lacking any such 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 concise (two sentences) and front-loaded with the core purpose. The stat_type list is efficient. No wasted words.

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?

Output schema exists, so return values are documented. However, the description omits the required player parameter and season usage, leaving gaps for a moderately complex tool with 3 parameters.

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 description adds meaning for stat_type (listing options) and player (accepts name or ID), but does not explain the season parameter (e.g., format, required when stat_type is 'season'). Given 0% schema coverage, more detail is needed.

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 provides player stats and lists valid stat_type values (season, career, etc.). It mentions accepting player name or ID, which distinguishes it from sibling tools like get_player_info or get_player_awards that focus on other aspects.

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 explicit guidance on when to use this tool versus siblings like compare_players, get_player_info, or get_shooting_data. The description does not help the agent choose among the 20 sibling tools.

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

get_scheduleC

Team upcoming schedule. Accepts team name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYes
days_aheadNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It does not mention that the tool is read-only, not destructive, or any potential side effects. The description is minimal and lacks safety information.

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 short (8 words) but is a fragment ('Team upcoming schedule') rather than a complete sentence. It is front-loaded but could be more structured. Every word earns its place, but the fragment reduces clarity.

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 2 unannotated parameters and no parameter descriptions, the description does not fully equip an agent to invoke the tool correctly. While output schema exists, the description lacks detail on date range, return format, or how days_ahead interacts with the schedule. Completeness is low.

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

Parameters2/5

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

Schema description coverage is 0%, so description must add meaning. It clarifies that 'team' can be name or ID and that 'days_ahead' defaults to 7, but does not explain the meaning of 'days_ahead' (e.g., from today?) or the format of team identifiers. Missing details limit effective parameter use.

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 states it returns 'Team upcoming schedule' and specifies it accepts team name or ID. The purpose is clear but could be more explicit about the verb (e.g., 'Retrieves'). It does not differentiate from sibling tools like 'get_game_details' or 'get_team_advanced_stats'.

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. The description only mentions it accepts team name or ID, but does not explain context or prerequisites. An agent would need to infer usage.

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

get_scoreboardB

Games for a date (YYYY-MM-DD or YYYYMMDD). Defaults to today.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries full transparency burden. It only states it returns 'games for a date' and the default behavior. It omits any details about side effects, authentication needs, rate limits, or pagination. For a read-only tool, more context would be helpful.

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 sentence that immediately conveys the tool's purpose and key details. It is front-loaded and contains no superfluous words.

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?

With an output schema present, the return format is covered. However, given many sibling tools, the description lacks guidance on when to prefer this tool over others. For a simple date-filtered list, the description is minimally adequate but could be improved by noting the scope (e.g., 'all games on a given date').

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 single parameter 'date' is described with accepted formats (YYYY-MM-DD or YYYYMMDD) and default (today). Since the schema has 0% description coverage, the description compensates adequately. However, it could clarify whether an empty string or null behaves the same.

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 returns games for a given date, specifying accepted formats and default behavior. It distinguishes it from siblings like 'get_schedule' or 'find_game' by focusing on a single date, but doesn't explicitly name the action verb (e.g., 'get' or '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?

The description provides minimal usage guidance: it mentions defaulting to today for convenience, but does not specify when to use this tool versus alternatives like 'get_schedule' (which likely covers date ranges) or 'find_game' (which may filter by other criteria). No exclusions or prerequisites are given.

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

get_season_awardsC

Major award winners for a season (MVP, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the overall function but does not mention any side effects, authorization needs, or return format. The tool is likely read-only, but this is not explicit.

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 concise (single sentence) and front-loaded with the core purpose. However, it could be slightly expanded to cover parameter details 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 absence of annotations and low schema coverage, the description is insufficiently detailed. It fails to explain the season parameter format or default behavior, and does not leverage the available output schema to reduce description burden. The tool is simple, but completeness is lacking.

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

Parameters2/5

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

The sole parameter 'season' has 0% schema description coverage. The tool description mentions 'for a season' but provides no details on format, allowed values, or the effect of leaving it null (default). It adds little beyond the parameter name.

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 major award winners for a season, with examples like MVP. It differs from sibling get_player_awards which targets individual player awards. However, it could be more explicit about the scope of awards 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 offers no guidance on when to use this tool versus alternatives (e.g., get_player_awards, get_leaders). It does not specify context or prerequisites for usage.

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

get_shooting_dataC

Shooting data. data_type: splits (default) or chart. Accepts player name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
data_typeNosplits
seasonNo
game_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 fails to disclose behavioral traits such as read-only nature, authentication, rate limits, or result format. The only behavioral hint is that it accepts player name or ID, which is parameter-level info.

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 concise (two sentences) and front-loaded with the resource name. However, the first sentence is too brief and could be integrated with the second for better flow. Overall, it earns its place with minimal waste.

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 parameters and an output schema, the description is incomplete. It doesn't explain what the output contains, the difference between splits and chart, or the role of season and game_id. The output schema exists but is not leveraged in the description.

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 description adds meaning for two of four parameters: it explains player accepts name or ID and data_type can be 'splits' or 'chart'. However, season and game_id are not mentioned, leaving their purpose unclear.

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 returns 'shooting data' and mentions the data_type parameter (splits or chart), which differentiates it from siblings like get_player_stats that likely return all stats. However, it doesn't specify what specific shooting metrics are included, 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 like get_player_stats or get_box_score. The description only mentions what the tool accepts, not the intended use case or context.

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

get_standingsC

League standings by conference.

ParametersJSON Schema
NameRequiredDescriptionDefault
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It does not explain whether the season parameter is required, what 'by conference' means for output, or any other behavioral traits like data freshness or response structure.

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

Conciseness2/5

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

The description is only 5 words, which is too terse. It omits critical information, making it under-specified rather than efficiently concise.

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 a simple tool with one optional parameter and an output schema, the description fails to clarify key aspects: the meaning of 'by conference', expected season format, and what the tool returns. It is incomplete for an AI agent to reliably invoke.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the 'season' parameter beyond its name and type. The parameter's format, possible values, and behavior when null are not explained.

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 'League standings by conference' clearly indicates the tool retrieves standings data organized by conference. It distinguishes from sibling tools like get_schedule or get_scoreboard, though it could be more explicit about the action (e.g., 'Retrieve').

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 get_scoreboard or get_schedule. There is no mention of prerequisites, context, or exclusions.

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

get_team_advanced_statsB

Team advanced metrics (ORtg, DRtg, pace, net rating). Accepts team name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYes
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations; description only lists output metrics and input format. Does not disclose data freshness, authentication needs, or behavior on invalid inputs.

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 with front-loaded metrics and input rule, no filler.

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?

Tool has two parameters and output schema, but description lacks context on season format, error handling, and data scope. Incomplete for a stats tool.

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

Parameters2/5

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

Schema description coverage is 0%; description only notes 'team name or ID' for the required parameter, omitting season format and details. Insufficient compensation.

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 it returns team advanced metrics (ORtg, DRtg, pace, net rating) and specifies input format. Distinct from sibling tools like get_team_roster.

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 vs alternatives like team_overview or get_standings. Only mentions input format.

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

get_team_rosterB

Team roster. Accepts team name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYes
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits. It only states 'Team roster' with no details on what the roster includes (e.g., all players, positions, stats) or any side effects. The existence of an output schema reduces the burden, but the description adds minimal transparency.

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 extremely concise, with two short sentences that are front-loaded. Every word adds value, and there is no redundancy or filler.

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 the tool's simplicity (2 params, no nested objects) and the presence of an output schema, the description is adequate but minimal. It does not explain what the roster contains, but the output schema likely provides that detail. A score of 3 reflects the bare minimum.

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 0%, so the description must add meaning. It clarifies that 'team' accepts name or ID, which is helpful. However, it provides no information about the 'season' parameter beyond its schema definition. This partial coverage earns a middle 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?

The description clearly states 'Team roster' and that it accepts team name or ID, establishing the tool's purpose of retrieving a team's roster. It is distinct from sibling tools like team_overview or get_team_advanced_stats, though it does not explicitly differentiate.

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 (e.g., team_overview for summary or resolve_team_id for ID lookup). The description only says it accepts team name or ID, omitting context such as prerequisites or limitations.

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

resolve_player_idA

Resolve player name to player_id. Returns top matches with active/inactive status.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
active_onlyNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well by stating it returns top matches with active/inactive status. However, it omits details like case sensitivity, partial matching behavior, or potential rate limits.

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. It efficiently conveys the core purpose.

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?

Given 3 parameters and an output schema, the description covers the essential transformation. However, it lacks detail on what 'top matches' means and how the 'limit' parameter affects results, leaving minor gaps.

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 description adds meaning beyond the bare schema (which has no parameter descriptions) by mentioning player name and active/inactive status. But it does not explain 'limit' or the exact role of 'active_only'. Schema coverage is 0%, so description compensates partially.

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 'resolve' and clearly states the resource transformation: 'player name to player_id'. It also mentions returning top matches with status, which distinguishes it from sibling tools like get_player_info or compare_players.

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 when needing a player ID from a name, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_player_info for already-known IDs). No when-not-to-use or exclusions are mentioned.

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

resolve_team_idA

Resolve team name/city/nickname to team_id. Returns top matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It reveals that the tool 'Returns top matches', indicating multiple results, but does not disclose behavior for no matches, casing sensitivity, or the meaning of 'top'. The output schema exists but was not provided, so the description partially compensates.

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, front-loading the purpose and adding a key behavioral note ('top matches'). No superfluous information.

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 that an output schema exists, the description does not need to detail return values, but it is still lacking: it does not mention the limit parameter, success/failure behavior, or what constitutes 'top matches'. For a simple lookup tool, more context would improve usability.

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 description adds meaning to the 'query' parameter by indicating it can be a team name, city, or nickname. However, the 'limit' parameter (default 5) is not explained. With 0% schema description coverage, this is moderate but insufficient for full clarity.

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: 'Resolve team name/city/nickname to team_id'. It uses a specific verb-resource structure and distinguishes itself clearly from the sibling tool 'resolve_player_id', which resolves player identifiers.

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 the use case (when a team name, city, or nickname is known and the ID is needed), but does not explicitly mention when to use this tool over alternatives like 'resolve_player_id' or when not to use it. No exclusions or context are provided.

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

team_overviewA

Team overview: roster + record + upcoming schedule. Accepts team name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYes
seasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 carry the burden. It implies a read-only query by listing outputs (roster, record, schedule), but does not explicitly confirm it is non-destructive or discuss other behavioral traits like authentication or rate limits. The description is 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?

The description is exceptionally concise: a single sentence that front-loads the purpose and includes parameter guidance. Every word earns its place, and there is 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?

Given that an output schema exists (so return structure is documented elsewhere), the description provides a sufficient high-level overview of what the tool returns. It lacks detail on edge cases or filtering, but is complete enough for an agent to decide to invoke it.

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 0%, so the description compensates partially. It clarifies that the 'team' parameter accepts a name or ID, which adds meaning beyond the schema type. However, the optional 'season' parameter is completely undocumented in both the schema and description, leaving ambiguity.

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 provides 'roster + record + upcoming schedule', clearly distinguishing it from sibling tools like get_team_roster or get_schedule. The verb 'overview' and listed contents make the purpose specific and actionable.

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 tells the agent it accepts team name or ID, which is helpful for parameter selection, but provides no guidance on when to use this tool vs. alternatives like get_team_roster or get_schedule. The agent must infer context from the sibling list.

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. Dates show when Glama detected each change.

  1. 21 tool updatesv0.3.0
    • First observedcompare_players
    • First observeddaily_summary
    • First observedfind_game
    • First observedget_box_score
    • First observedget_game_details
    • First observedget_game_rotation
    • First observedget_leaders
    • First observedget_play_by_play
    • First observedget_player_awards
    • First observedget_player_info
    • First observedget_player_stats
    • First observedget_schedule
    • First observedget_scoreboard
    • First observedget_season_awards
    • First observedget_shooting_data
    • First observedget_standings
    • First observedget_team_advanced_stats
    • First observedget_team_roster
    • First observedresolve_player_id
    • First observedresolve_team_id
    • First observedteam_overview

TDQS

B3/5.0
Disambiguation4/5

Most tools have clear distinct purposes, but daily_summary and get_scoreboard both provide games for a date, creating slight overlap. Additionally, get_leaders and get_season_awards both relate to awards/leaders though they differ in scope.

Naming Consistency3/5

Naming conventions are mixed: many tools use a 'get_' prefix, but some like compare_players, daily_summary, and find_game omit it, and resolve_player_id/team_id use a 'resolve_' prefix. This inconsistency could confuse an agent.

Tool Count4/5

With 21 tools covering players, teams, games, and leagues, the count is on the higher side but remains reasonable for a comprehensive NBA stats server. It's well-scoped without being excessive.

Completeness4/5

The tool set covers a wide range of NBA data including player info/stats, team rosters/schedules, game details, and league leaders. Minor gaps exist, such as missing team basic stats or historical data, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive NBA player statistics from basketball-reference.com, delivering detailed stats including career summaries, season comparisons, advanced metrics, and shooting analytics.
    3
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to retrieve NBA data including player stats, team information, game logs, and league standings through the nba_api library.
    10
    1
    -
  • F
    license
    A
    quality
    D
    maintenance
    Provides access to live NHL game data, player and team statistics, standings, schedules, playoff brackets, and historical comparisons through natural language queries using the official NHL API.
    11
    -
  • F
    license
    B
    quality
    D
    maintenance
    Provides natural language access to IPL cricket match data, allowing users to query player statistics, team performances, and match results. It utilizes a SQLite backend and Cricsheet data to deliver detailed cricket analytics through the Model Context Protocol.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/labeveryday/nba-stats-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server