Sports Hub MCP Server
Sports Hub is a unified MCP server aggregating 42 sports data providers (410 tools) into one read-only service for scores, stats, standings, odds, and more — the schema excerpt alone covers ESPN, NHL, MLB, Formula 1, OpenF1, OpenLigaDB, TheSportsDB, NCAA, SportSRC, and Lichess.
Scores & schedules — live/final scores and game schedules for ESPN leagues (NBA, NFL, MLB, NHL, soccer, etc.), NHL, MLB (incl. minors), NCAA, TheSportsDB, and OpenLigaDB German football.
Standings & rankings — league tables, conference/division standings, polls, and driver/constructor championships (ESPN, NHL, MLB, OpenLiga, TheSportsDB, NCAA, F1).
Teams & rosters — team lists, details, rosters, and per-team stats/schedules across ESPN, NHL, MLB, TheSportsDB, and NCAA.
Players & athletes — athlete bios, career stats, game logs, stat leaders, and player search (ESPN, NHL, MLB, TheSportsDB).
Game detail — box scores, play-by-play, line scores, event summaries, and landing pages for NHL, MLB, NCAA, and ESPN events.
Formula 1 / motorsport — race, qualifying, and sprint results; lap times, pit stops, driver results (1950+); plus OpenF1 live telemetry, positions, intervals, stints, radio, weather, and race control.
Chess — Lichess user profiles with per-variant ratings (and Chess.com support per the README).
News & reference catalogs — ESPN/NCAA news, seasons, divisions, circuits, sports/league lists.
Broad coverage beyond schema — README adds odds/betting, esports, cricket, golf, tennis, boxing, MMA, motorsport (MotoGP, Formula E, NASCAR), AFL, EuroLeague, and NFL fantasy via 42 providers (19 keyless by default).
Efficient context use — every tool takes an optional
fieldsprojection and responses are size-capped; read-only/idempotent annotations; stdio and HTTP/SSE transports.
Provides tools for interacting with Chess.com API, including access to player profiles, stats, clubs, and leaderboards.
Provides tools for Lichess API, including access to user data, top players, broadcasts, and daily puzzles.
Provides tools for MLB Stats API, covering MLB and MiLB data such as schedules, standings, and player stats.
Provides access to NBA data through providers like BallDontLie and MySportsFeeds, including scores, stats, and standings.
Provides tools for NHL Web API, covering NHL data such as schedules, standings, and player statistics.
Provides access to Premier League data through soccer-focused providers like API-Football and football-data.org, including fixtures, standings, and odds.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Sports Hub MCP Serverget today's NBA scores"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A unified MCP server that aggregates 42 sports API providers into a single service. 410 tools covering scores, stats, odds, esports, college sports, chess, motorsport, boxing, AFL, and more across 70+ sports.
Each provider works independently. You only need API keys for the providers you use. Missing keys don't block startup — tools return an error when called without their key.
Works with:
Demo

NBA scores, Premier League odds, Tennis H2H — all from a single MCP server.
Related MCP server: sportsdata-mcp
Compatibility
Platforms
OS | Status |
macOS | Supported |
Linux | Supported |
Windows | Supported |
MCP Clients
Client | Status | Notes |
Claude Desktop | Supported | Anthropic's desktop app |
Claude Code (CLI) | Supported |
|
Cursor | Supported | Built-in MCP |
Windsurf (Codeium) | Supported | Built-in MCP |
Continue.dev | Supported | Open-source AI assistant |
Cline | Supported | VS Code extension |
Zed | Supported | Built-in MCP |
ChatGPT Desktop | Supported | OpenAI desktop app |
Gemini CLI | Supported | Google CLI |
Any MCP client | Supported | Stdio + HTTP/SSE transport |
Uses the stdio transport from the MCP SDK. Works with any LLM (Claude, GPT, Gemini, Llama, Mistral, etc.).
Requirements: Node.js 18+, npm.
Providers (42)
Works instantly — no API key, no signup (19 providers, ~165 tools)
These providers work out of the box. Just build and run.
Prefix | Provider | Coverage | Tools | Notes |
| 20+ sports | 10 | Unofficial — can break | |
| NHL | 13 | Undocumented but stable | |
| MLB/MiLB | 13 | Official, undocumented | |
| Formula 1 (1950+) | 13 | Community-maintained | |
| F1 live telemetry | 12 | Live race weekends only | |
| German football | 10 | Bundesliga focus | |
| 40+ sports | 13 | Test key auto, watermarks | |
| College sports | 8 | 5 req/s rate limit | |
| Football, basketball, MMA + streams | 7 | V1 free, V2 needs paid key | |
| Chess (users, top players, broadcasts, daily puzzle) | 7 | ~20 req/sec/IP | |
| Chess (profiles, stats, clubs, leaderboards) | 7 | Throttles on parallel calls | |
| AFL (Australian Football League) | 6 | Honest UA required | |
| MotoGP/Moto2/Moto3/MotoE | 7 | Unofficial — can break | |
| Formula E | 7 | Unofficial — can break | |
| NASCAR Cup/Xfinity/Truck | 3 | Unofficial CDN feeds | |
| Dota 2 analytics | 11 | 60 req/min, 50k/mo | |
| NFL fantasy | 10 | ~1000 req/min | |
| EuroLeague + EuroCup basketball | 6 | Keyless feeds | |
| Historical football results + odds | 2 | CSV, 25+ leagues |
Tip: Use
SPORTS_HUB_PROVIDERS=freeto load only these 19 providers (~165 tools).
Free tier with API key — signup required, no credit card (23 providers, ~245 tools)
Registration takes 1-2 minutes. All keys are free.
Prefix | Provider | Coverage | Tools | Free Limit | Get Key |
| PandaScore | Esports (13 titles) | 14 | 1000 req/hr | |
| API-Football | Soccer (960+ leagues) | 15 | 100 req/day | |
| API-Sports | 9 sports | 10 | 100 req/day/sport | |
| API-Tennis | Tennis (ATP/WTA/ITF) | 12 | 100 req/day | |
| BallDontLie | NBA/NFL/MLB/NHL | 10 | Basic tier | |
| CricketData | Cricket | 10 | 100 req/day | |
| Entity Sport | Cricket (250+ comps) | 12 | Free plan | |
| football-data.org | Soccer (12 leagues) | 11 | 10 req/min | |
| Sportmonks | Soccer | 12 | 3000 req/hr | |
| SportsDataIO | 9 sports | 12 | 1000 req/mo | |
| The Odds API | 70+ sports odds | 9 | 500 req/mo | |
| Odds-API.io | 34 sports odds | 10 | Free account | |
| Sports Game Odds | 55+ leagues odds | 10 | Trial | |
| Lumify | Odds, splits + AI bet analysis (8 sports) | 14 | Free trial key | |
| Fighting Tomatoes | MMA | 8 | 200 req/mo | |
| Live Golf API | Golf (PGA/DP World) | 8 | Free tier | |
| iSportsAPI | Football/Basketball (Asia) | 10 | Free tier | |
| SportDevs | Rugby/Volleyball/Handball | 12 | Trial | |
| MySportsFeeds | NFL/NBA/MLB/NHL | 12 | Free non-commercial | |
| GolfCourseAPI | 30K+ golf courses | 6 | 300 req/day | |
| College Football Data | NCAA football | 14 | 1000 req/mo | |
| Boxing Data API | Pro boxing (fighters/bouts/titles) | 8 | 100 req/mo | |
| Highlightly | Multi-sport highlights + odds | 6 | 100 req/day |
Providers with missing keys don't block the server — they just return an error when called. Register keys incrementally as you need them.
Installation
Quick (npx — no install)
npx mcp-sports-hubnpm global
npm install -g mcp-sports-hub
mcp-sports-hubFrom source
git clone https://github.com/lacausecrypto/mcp-sports-hub.git
cd mcp-sports-hub
npm install
npm run buildMCP Registry
This server is published on the official MCP Registry as io.github.lacausecrypto/sports-hub. MCP clients that support the registry can discover and install it automatically.
Transport Modes
Stdio (default — Claude Desktop, Cursor, etc.)
npx mcp-sports-hubHTTP/SSE (remote clients, web apps, custom integrations)
# Via flag
npx mcp-sports-hub --http
# Via env
SPORTS_HUB_HTTP=1 SPORTS_HUB_PORT=3000 npx mcp-sports-hubEndpoints:
POST /mcp— MCP protocol (Streamable HTTP with SSE)GET /health— Health check ({"status":"ok","providers":19,"sessions":0,"mode":"session"})
Supports CORS and multi-client session management via the mcp-session-id header. Default port: 3000.
Each client gets its own session, created on initialize and addressed afterwards by its session id. Building a session costs ~90 ms for the 165-tool free preset, paid once per client rather than per request. Idle sessions are reaped.
SPORTS_HUB_MAX_SESSIONS=200 # concurrent sessions before new ones get a 503
SPORTS_HUB_SESSION_TTL=1800 # seconds a session may sit idle
SPORTS_HUB_STATELESS=1 # opt out: build a throwaway server per requestSPORTS_HUB_STATELESS=1 suits several replicas behind a load balancer with no sticky routing. It pays the build cost on every call, so prefer sessions for a single instance.
⚠ Security: HTTP mode binds to
127.0.0.1(loopback) by default. SettingSPORTS_HUB_HOST=0.0.0.0exposes an unauthenticated MCP endpoint to your whole network — anyone who can reach it can use your configured API keys. DNS-rebinding protection only blocks browser-origin attacks, not direct clients. Only expose it behind a reverse proxy with auth/TLS.SPORTS_HUB_CORS_ORIGINSmust list explicit origins (a literal*is rejected).
Hosted (Smithery)
A Dockerfile and smithery.yaml are included for container hosting on Smithery. The hosted endpoint serves the keyless free preset, so clients connect with zero setup. The deploy sets SPORTS_HUB_DNS_REBINDING_PROTECTION=0 because Smithery's proxy forwards a non-localhost Host header.
SPORTS_HUB_DNS_REBINDING_PROTECTION=0disables the Host/Origin check (it is on by default). Only set it when the server runs behind a trusted proxy that owns routing — never for a server directly reachable by browsers on localhost.
Configuration
Environment Variables
Only set keys for providers you want:
# Free — no key needed:
# ESPN, NHL, MLB, Jolpica F1, OpenF1, OpenLigaDB, NCAA, TheSportsDB (test key),
# SportSRC (V1), Lichess, Chess.com, Squiggle (AFL),
# MotoGP, Formula E, NASCAR, OpenDota, Sleeper
# Optional (defaults to test key)
export THESPORTSDB_API_KEY="your-key" # https://www.thesportsdb.com/
# Requires free registration
export PANDASCORE_TOKEN="your-token" # https://pandascore.co/
export API_SPORTS_KEY="your-key" # https://api-sports.io/
export API_FOOTBALL_KEY="your-key" # https://www.api-football.com/
export API_TENNIS_KEY="your-key" # https://api-tennis.com/
export BALLDONTLIE_API_KEY="your-key" # https://www.balldontlie.io/
export CRICKETDATA_API_KEY="your-key" # https://cricketdata.org/
export ENTITY_SPORT_KEY="your-key" # https://www.entitysport.com/
export FOOTBALL_DATA_API_KEY="your-key" # https://www.football-data.org/
export SPORTMONKS_API_KEY="your-key" # https://www.sportmonks.com/
export SPORTSDATA_IO_KEY="your-key" # https://sportsdata.io/
export THE_ODDS_API_KEY="your-key" # https://the-odds-api.com/
export ODDS_API_IO_KEY="your-key" # https://odds-api.io/
export SPORTS_GAME_ODDS_KEY="your-key" # https://sportsgameodds.com/
export FIGHTING_TOMATOES_API_KEY="your-key" # https://fightingtomatoes.com/
export LIVE_GOLF_API_KEY="your-key" # https://livegolfapi.com/
export ISPORTSAPI_KEY="your-key" # https://www.isportsapi.com/
export SPORTDEVS_API_KEY="your-key" # https://sportdevs.com/
export GOLFCOURSE_API_KEY="your-key" # https://golfcourseapi.com/
export MYSPORTSFEEDS_USER="your-user" # https://www.mysportsfeeds.com/
export MYSPORTSFEEDS_PASS="your-pass"
export CFBD_API_KEY="your-key" # https://collegefootballdata.com/key
export LUMIFY_API_KEY="your-key" # https://lumify.ai/Windows (PowerShell):
$env:API_SPORTS_KEY = "your-key"
$env:PANDASCORE_TOKEN = "your-token"Windows (cmd):
set API_SPORTS_KEY=your-key
set PANDASCORE_TOKEN=your-tokenResponse size and the fields parameter
Sports APIs return very wide objects, and every byte a tool returns is spent from the model's context window. A single espn_get_scoreboard-style team listing is ~300 KB of JSON, of which the part anyone wants is under 3 KB.
Every tool accepts an optional fields parameter: a comma-separated list of key names to keep, matched at any depth. Branches that match nothing are dropped, and a matched key keeps its whole value.
// espn_get_teams { "sport": "basketball", "league": "nba" }
// -> 297 KB
// espn_get_teams { "sport": "basketball", "league": "nba",
// "fields": "id,abbreviation,displayName,location" }
// -> 2.9 KB, same 30 teamsIf fields matches nothing, the tool says so and lists the top-level keys it did see, rather than returning an empty object.
Responses are also capped. Above the limit, the longest lists in the payload are shortened until it fits (so the JSON still parses) and a note reports how many items were dropped.
SPORTS_HUB_MAX_RESULT_BYTES=40000 # default; serialized bytes per tool resultClaude Desktop
Config file locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"sports-hub": {
"command": "node",
"args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
"env": {
"PANDASCORE_TOKEN": "your-token",
"API_SPORTS_KEY": "your-key",
"THE_ODDS_API_KEY": "your-key"
}
}
}
}Windows path: "args": ["C:/Users/you/mcp-sports-hub/dist/index.js"]
Only include env vars for providers you need. Omit env entirely for free-only providers.
Claude Code (CLI)
claude mcp add sports-hub node /absolute/path/to/mcp-sports-hub/dist/index.jsOr in .claude/settings.json:
{
"mcpServers": {
"sports-hub": {
"command": "node",
"args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
"env": {
"PANDASCORE_TOKEN": "your-token"
}
}
}
}Provider Filtering
By default, only the free preset is loaded (19 providers, ~165 tools — no API keys needed). Use SPORTS_HUB_PROVIDERS to change what's loaded:
# Default — free providers only (no config needed)
npx mcp-sports-hub
# Load ALL 42 providers (410 tools)
SPORTS_HUB_PROVIDERS=all npx mcp-sports-hub
# Use a preset
SPORTS_HUB_PROVIDERS=us-major npx mcp-sports-hub
# Pick specific providers
SPORTS_HUB_PROVIDERS=espn,nhl,odds npx mcp-sports-hub
# Exclude from all (prefix with -)
SPORTS_HUB_PROVIDERS=-sportsdata,-mma npx mcp-sports-hubPresets
Preset | Providers | Tools | Needs keys? |
| 19 no-key providers (espn, nhl, mlb, f1, openf1, openliga, sportsdb, ncaa, sportsrc, lichess, chesscom, squiggle, motogp, formulae, nascar, opendota, sleeper, euroleague, footballdatauk) | ~165 | No |
| all 42 providers | 410 | Yes (for key-required providers) |
| lichess, chesscom | 14 | No |
| espn, nhl, mlb, ncaa, cfbd, bdl, msf, nascar, sleeper | ~93 | Some |
| espn, apifootball, footballdata, sportmonks, openliga, sportsrc, footballdatauk, highlightly | ~73 | Some |
| f1, openf1 | 25 | No |
| f1, openf1, motogp, formulae, nascar | ~42 | No |
| pandascore, opendota | 25 | Some |
| odds, oddsio, sgo, lumify | 43 | Yes |
| cricket, entitycricket | 22 | Yes |
| livegolf, golfcourse | 14 | Some |
Cache
All GET responses are cached in memory for 60 seconds by default. This protects against duplicate calls and rate limit waste. Configure with:
SPORTS_HUB_CACHE_TTL=120 # seconds (0 to disable)The cache key includes a digest of the request's auth headers, so two API keys never read each other's entries. Concurrent identical requests are collapsed into a single upstream call, and a 404/410 is remembered briefly (SPORTS_HUB_NEGATIVE_CACHE_TTL, default 30s) so a wrong ID can't be re-fetched in a loop.
Rate limits and retries
429 and 5xx responses are retried with exponential backoff, honouring Retry-After when the upstream sends one. Client errors (4xx other than 408/425/429) and timeouts are not retried.
SPORTS_HUB_MAX_RETRIES=2 # extra attempts after the first (0 disables)
SPORTS_HUB_RETRY_BASE_MS=300 # backoff base; doubles per attemptIn Claude Desktop config:
"env": {
"SPORTS_HUB_PROVIDERS": "us-major",
"THE_ODDS_API_KEY": "your-key"
}Tool Naming
All tools follow {provider}_{action}:
espn_get_scoreboard — Live scores (ESPN)
nhl_get_standings — NHL standings
mlb_get_game_boxscore — MLB box score
f1_get_race_results — F1 results (1950+)
openf1_get_laps — F1 live telemetry
pandascore_get_lives — Live esports matches
apifootball_get_fixtures — Soccer fixtures (960+ leagues)
odds_get_odds — Betting odds (70+ sports)
sportsrc_get_xg_stats — Expected goals (xG)MCP Resources & Prompts
Beyond tools, the server exposes:
Resources (readable catalogs, no API call):
sportshub://providers— the full provider catalog (prefix, name, coverage, required key)sportshub://presets— all presets and the providers they loadsportshub://provider/{key}— details for one provider (with key autocompletion)
Prompts (curated slash-command workflows over the 410 tools):
whats-on-today·compare-odds {event}·motorsport-weekend {series}·league-standings {league}·team-deep-dive {team}·f1-race {season} {round}
All tools are annotated readOnly / idempotent so clients can skip confirmation prompts.
Architecture
src/
├── index.ts # Imports + registers all 42 providers; transports
├── shared/
│ ├── http.ts # fetchJson, fetchText, buildUrl, toolResult, errorResult
│ │ # + retry/backoff, coalescing, keyed cache
│ ├── catalog.ts # provider catalog + presets (single source of truth)
│ ├── annotations.ts # central read-only annotations + titles
│ ├── tool-pipeline.ts # central `fields` param, size cap, empty-result hints
│ ├── projection.ts # field projection used by the pipeline
│ ├── slim.ts # strips $schema boilerplate from tools/list
│ ├── resources.ts # MCP resources (provider/preset catalogs)
│ └── prompts.ts # MCP prompts (curated workflows)
└── providers/
├── espn.ts # 10 tools — no key
├── nhl.ts # 13 tools — no key
├── mlb-stats.ts # 13 tools — no key
├── jolpica-f1.ts # 13 tools — no key
├── openf1.ts # 12 tools — no key
├── openligadb.ts # 10 tools — no key
├── golfcourse.ts # 6 tools — GOLFCOURSE_API_KEY
├── thesportsdb.ts # 13 tools — optional key
├── pandascore.ts # 14 tools — PANDASCORE_TOKEN
├── api-football.ts # 15 tools — API_FOOTBALL_KEY
├── api-sports.ts # 10 tools — API_SPORTS_KEY
├── api-tennis.ts # 12 tools — API_TENNIS_KEY
├── balldontlie.ts # 10 tools — BALLDONTLIE_API_KEY
├── cricketdata.ts # 10 tools — CRICKETDATA_API_KEY
├── entity-sport-cricket.ts # 12 tools — ENTITY_SPORT_KEY
├── football-data.ts # 11 tools — FOOTBALL_DATA_API_KEY
├── sportmonks.ts # 12 tools — SPORTMONKS_API_KEY
├── sportsdata-io.ts # 12 tools — SPORTSDATA_IO_KEY
├── the-odds-api.ts # 9 tools — THE_ODDS_API_KEY
├── odds-api-io.ts # 10 tools — ODDS_API_IO_KEY
├── sports-game-odds.ts # 10 tools — SPORTS_GAME_ODDS_KEY
├── lumify.ts # 14 tools — LUMIFY_API_KEY
├── fighting-tomatoes.ts # 8 tools — FIGHTING_TOMATOES_API_KEY
├── live-golf.ts # 8 tools — LIVE_GOLF_API_KEY
├── isportsapi.ts # 10 tools — ISPORTSAPI_KEY
├── sportdevs.ts # 12 tools — SPORTDEVS_API_KEY
├── mysportsfeeds.ts # 12 tools — MYSPORTSFEEDS_USER/PASS
├── sportsrc.ts # 7 tools — V1 free, V2 needs paid key (not exposed)
├── ncaa.ts # 8 tools — no key
├── cfbd.ts # 14 tools — CFBD_API_KEY
├── lichess.ts # 7 tools — no key
├── chess-com.ts # 7 tools — no key
├── squiggle.ts # 6 tools — no key
├── motogp.ts # 7 tools — no key
├── formula-e.ts # 7 tools — no key
├── nascar.ts # 3 tools — no key
├── opendota.ts # 11 tools — no key
├── sleeper.ts # 10 tools — no key
├── euroleague.ts # 6 tools — no key
├── football-data-uk.ts # 2 tools — no key (CSV)
├── boxing.ts # 8 tools — BOXING_DATA_API_KEY
└── highlightly.ts # 6 tools — HIGHLIGHTLY_API_KEYEach provider exports register(server). Keys are checked at call time, not startup.
Contributing
Fork the repository
Create
src/providers/my-api.tsexportingregister(server: McpServer)Prefix tool names:
myapi_get_somethingImport + call in
src/index.tsnpm run buildto verifySubmit a PR
License
MIT
Available Tools
165 toolschesscom_get_clubchesscom: Get clubBRead-onlyIdempotent
Get Chess.com club details by URL id (the slug after /club/ in the web URL).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| club_id | Yes | Club URL id, e.g. "chess-com-developer-community" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=true, so the safety and repeatability profile is covered structurally. The description adds no behavioral context beyond that (no auth requirements, rate limits, or note on whether unknown club ids error), which is acceptable given the lower bar set by the annotations but not value-adding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The identifier-format hint is embedded parenthetically rather than consuming an extra sentence, which is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully-schematized read tool whose annotations cover the safety profile, the description gives enough to invoke it correctly. The only real gap is that no output schema exists and the description says nothing about what club details are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: club_id carries an example and fields is documented as comma-separated keys. The description's "slug after /club/ in the web URL" adds provenance for the id that the schema's example only implies, a marginal gain, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Get Chess.com club details") and names the platform, which lets an agent separate it from chesscom_get_player (a person) and chesscom_get_player_clubs (a list of clubs for a player). It stops short of naming any sibling explicitly, so it lands at a clear-but-undifferentiated 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative tool is referenced. The parenthetical about the URL slug explains how to build the id, which is parameter semantics rather than usage routing, so an agent gets no help choosing between this and chesscom_get_player_clubs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_country_playerschesscom: Get country playersBRead-onlyIdempotent
Get the list of titled Chess.com players from a country (returns usernames and titles).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| country | Yes | ISO 3166 alpha-2 country code, e.g. "US", "FR", "IN" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety and volatility profile is fully covered without description help. The description adds return-content context ('returns usernames and titles'), which is useful given there is no output schema, but it omits volume, pagination, and any rate-limit caveats typical of external open-world APIs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence states the action, the scope qualifier ('titled'), and the return payload. No filler or redundancy; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, two-parameter lookup with full schema coverage and covering annotations, the description is close to sufficient and the return-content hint compensates for the absent output schema. However, it says nothing about result size, ordering, or pagination behavior for what may be a long country roster, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: 'country' is documented as an ISO 3166 alpha-2 code with examples and 'fields' as a comma-separated key list. The description adds nothing to the parameter semantics beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: retrieve the list of titled players from a country, with the 'titled' qualifier narrowing scope beyond a plain player listing. This is distinguishable from siblings like chesscom_get_player (single player) and chesscom_get_leaderboards (global ranking lists), though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no routing to alternatives such as chesscom_get_leaderboards or chesscom_get_player. The agent must infer from the name that this is the country-scoped roster call, which is reasonable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_leaderboardschesscom: Get leaderboardsARead-onlyIdempotent
Get Chess.com global leaderboards across all categories (daily, daily960, live_rapid, live_blitz, live_bullet, tactics, rush, battle).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint, idempotentHint, and openWorldHint. The description adds the scope of 'global leaderboards across all categories' and enumerates categories, but does not disclose auth needs, rate limits, pagination, or return behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly written sentence, front-loaded with the core action and resource, and the category list adds useful scope without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only leaderboard fetch with one optional schema-documented parameter and annotations covering safety, the description is nearly complete. It could say more about the return shape since no output schema exists, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in the schema. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('Chess.com global leaderboards'), plus scope ('across all categories') and an explicit category list. This clearly distinguishes it from sibling tools like player stats, clubs, or country players.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does; it gives no guidance on when to use it versus alternatives, prerequisites, or exclusions. No alternative is named, so the agent must infer usage entirely from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_playerchesscom: Get playerBRead-onlyIdempotent
Get a Chess.com player's public profile (name, country, joined date, last online, title, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username | Yes | Chess.com username (case-insensitive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety and idempotence profile is covered. The description adds the useful qualifier that the data is 'public', implying no authentication is needed for another user's profile, but says nothing about rate limiting, error behavior for unknown usernames, or whether a missing user returns an empty profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that puts the resource first and the return payload second; nothing redundant. The trailing 'etc.' slightly weakens it by leaving the return surface open-ended, which matters because there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so adequately by enumerating the main profile fields. For a two-parameter, single-required, annotation-covered read tool that is close to sufficient, with the only real gap being how the optional 'fields' projection behaves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (username, fields) are already documented in the schema, which sets the baseline at 3. The description adds no syntax or behavioral detail about the comma-separated 'fields' projection filter, even though that is the one parameter whose semantics are non-obvious.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (Chess.com player) and scope (public profile), and enumerates the fields returned, so the agent knows this is a profile lookup rather than a stats or games query. However, it never names or contrasts with the close siblings that also take a username (chesscom_get_player_stats, chesscom_get_player_clubs, chesscom_get_player_archives, lichess_get_user), so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. The enumerated profile fields hint at scope, but nothing tells the agent to prefer chesscom_get_player_stats for ratings or chesscom_get_player_clubs for club membership, nor whether the call requires any setup. Structurally this matches the calibration MID example, which also scored 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_player_archiveschesscom: Get player archivesBRead-onlyIdempotent
List the YYYY/MM archive URLs containing a player's monthly game history.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username | Yes | Chess.com username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and repeat-call behavior are covered. The description contributes the return shape (a list of archive URLs at monthly granularity), which is genuinely useful context beyond annotations, but says nothing about volume, auth, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the key output format qualifier (YYYY/MM) arrives early. It is appropriately sized for a two-parameter list tool, though it does not use its brevity to add any usage routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey enough about the return to be actionable, and it does identify that the result is archive URLs in YYYY/MM form. However, it omits how those URLs are meant to be consumed and offers no guidance on the unused-adjacent 'fields' parameter, leaving it minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema; baseline 3 applies. The description implies the username parameter ('a player's') but adds no detail on the 'fields' parameter or the format/semantics of the YYYY/MM values supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (archive URLs) scoped to a player's monthly game history, including the URL format YYYY/MM. It is clearly distinguishable from chesscom_get_player or chesscom_get_player_stats, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives (e.g., use this before fetching monthly game data, versus get_player for the profile). Usage can only be inferred from what the tool returns, which is the same gap seen in the mid-tier calibration example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_player_clubschesscom: Get player clubsBRead-onlyIdempotent
Get the list of Chess.com clubs a player belongs to (with last-activity timestamps).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username | Yes | Chess.com username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is fully covered by structured data. The description adds one useful return-content detail (entries carry last-activity timestamps), but says nothing about auth, rate limits, or result size/pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the return-content detail in a parenthetical. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by noting the returned list includes last-activity timestamps. For a simple two-parameter read tool with full schema coverage and clear annotations, that is nearly sufficient, though a hint about the optional 'fields' projection or result ordering would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'username' and 'fields' are documented in the schema), so the baseline of 3 applies. The description adds no meaning beyond the schema, not even clarifying what 'fields' keys are valid for this endpoint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Get'), resource ('list of Chess.com clubs') and scope ('a player belongs to'), which clearly separates it from chesscom_get_club (single club details) and chesscom_get_country_players. It never names those siblings explicitly, so an agent must infer the distinction, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives, even though chesscom_get_club could plausibly be confused with this tool. Usage is only implied by the resource being described, which the rubric treats as insufficient for a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chesscom_get_player_statschesscom: Get player statsARead-onlyIdempotent
Get a Chess.com player's stats by time control (daily, rapid, blitz, bullet) and chess960, with current ratings, best, and W/L/D records.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username | Yes | Chess.com username (case-insensitive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile needs no restating. The description adds useful context about the response grouping by time control and the record fields, but says nothing about rate limits, invalid/unknown usernames, or whether all time controls are returned in one call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that opens with the verb and resource and spends its remainder on the returned breakdown. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-shape burden by naming ratings, best, and W/L/D per time control. It is nearly complete for a simple read-only stats fetch, lacking only edge-case behavior (unknown username, partial coverage of time controls).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two params (username, fields), so the schema already carries both. The description's 'by time control (daily, rapid, blitz, bullet) and chess960' actually describes the result grouping rather than any parameter, so it adds no parameter-level syntax or format guidance beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a Chess.com player's stats') and enumerates the covered time controls plus the data returned (current ratings, best, W/L/D). It clearly separates itself from chesscom_get_player in substance, though it never names a sibling for explicit routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for a player's rating/record breakdown rather than their profile or club list. There is no when-to-use/when-not guidance, no note on what chesscom_get_player covers instead, and no prerequisites (e.g. username validity).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_athleteespn: Get athleteBRead-onlyIdempotent
Get information about a specific athlete, including bio, stats, and career history.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| athlete_id | Yes | ESPN athlete ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that the response contains bio, stats, and career history, which is useful return-shape context, but says nothing about rate limits, auth, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource leading and the returned content trailing. No filler, though it is arguably under-specified rather than maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by naming the return categories, and annotations cover the safety profile. But it omits why sports/league are required and how the 'fields' projection parameter behaves, leaving gaps for a 4-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with sport, league, athlete_id, and fields all documented in the schema itself. The description adds no syntax, format, or relationship detail (e.g. that sport/league scope the athlete lookup), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Get information about a specific athlete') and enumerates the content categories (bio, stats, career history). However, with siblings like mlb_get_player, nhl_get_player, and sportsdb_get_player_details, it never signals that this is the cross-sport ESPN source, so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to choose this over the many player/athlete siblings (mlb_get_player, nhl_get_player, opendota_get_player, sportsdb_get_player_details). No exclusions, prerequisites, or context cues are given; the agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_event_summaryespn: Get event summaryBRead-onlyIdempotent
Get a detailed summary of a specific event/game, including play-by-play, box score, leaders, and game info.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| event_id | Yes | ESPN event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and repeatability profile is covered. The description adds a content inventory of the response (play-by-play, box-score, leaders, game info), which is genuinely useful given there is no output schema, but says nothing about availability before/after an event or rate/coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, scope and content list; no filler and nothing an agent must skip past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the summary contains, and the schema plus annotations cover parameters and safety. It stops short of covering edge cases such as events not yet started or sports where play-by-play is unavailable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sport, league, event_id and the fields projection. The description adds no syntax, format or default guidance beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get a detailed summary of a specific event/game) and enumerates the payload's contents (play-by-play, box score, leaders, game info). This is well beyond a tautology, but it never names the sibling it competes with — espn_get_scoreboard or nhl_get_game_landing — so an agent must infer the distinction from the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says this requires a completed or in-progress event, nothing contrasts it with espn_get_scoreboard or the per-league game tools, and no prerequisites are stated. Usage can only be inferred from the required event_id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_newsespn: Get newsARead-onlyIdempotent
Get the latest news articles for a sport/league, including headlines, descriptions, and links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of articles to return | |
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety and idempotency are covered. The description adds the shape of the response (headlines, descriptions, links), which is useful, but says nothing about result limits, freshness/ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the verb, resource, scope, and returned fields with zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the return payload (headlines, descriptions, links), and the required sport/league params are clear. It falls short only on ordering/recency guarantees and default result count, which an agent would want for a "latest news" call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so sport codes, league codes, limit, and fields are already documented in the schema. The description adds no syntax or format detail beyond identifying that sport/league scope the query, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (latest news articles) scoped to a sport/league, so an agent knows exactly what comes back. It does not, however, distinguish itself from the sibling ncaa_get_news, which reads almost identically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the words "latest news for a sport/league" – there is no explicit statement of when to reach for this vs. ncaa_get_news or the scoreboard/standings siblings. No exclusions or prerequisites are given, leaving the agent to infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_scoreboardespn: Get scoreboardARead-onlyIdempotent
Get live or date-specific scores for a sport/league. Returns current scoreboard with game status, scores, and basic game info.
| Name | Required | Description | Default |
|---|---|---|---|
| dates | No | Date filter in YYYYMMDD format (e.g. 20240115) | |
| limit | No | Maximum number of events to return | |
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the return shape ('game status, scores, and basic game info'), but says nothing about pagination, the limit parameter's behavior, or result caps — a modest addition over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, then the return content. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully summarizes the returned fields, which is the main thing an agent needs. It falls short only on pagination/limit behavior and how the live-vs-date mode is selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including dates, limit, fields, sport and league is already documented with examples. The description only alludes to date filtering; it adds no format or interaction detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get live or date-specific scores for a sport/league') and states what the payload contains. It is clearly a scoreboard/scores tool, though it never explicitly distinguishes itself from near siblings like espn_get_event_summary, espn_get_team_schedule, or espn_get_standings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'live or date-specific' implies when to reach for it (current games vs. a specific date), but there is no explicit when-not guidance and no mention of alternative ESPN tools for deeper game detail. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_seasonsespn: Get seasonsBRead-onlyIdempotent
Get available seasons for a sport/league, including season types (preseason, regular, postseason) and date ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that results include season types and date ranges, which is useful payload context given there is no output schema, but it says nothing about ordering, completeness, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and the returned content are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches what comes back (season types, date ranges), and annotations cover safety. For a simple read-only lookup this is nearly sufficient, missing only ordering/pagination and whether the result set can be empty for a valid sport/league pair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both required codes are documented with examples in the schema itself. The description only restates "for a sport/league" and adds no format, case-sensitivity, or validation detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get available seasons for a sport/league") and even enumerates the returned content (season types, date ranges). It is clear what the tool does, though it never differentiates itself from the several other *_get_seasons siblings (f1_get_seasons, sportsdb_get_seasons, motogp_get_seasons) beyond the espn prefix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement, no alternatives named, no prerequisites. The phrasing implies a discovery/lookup call that precedes season-scoped queries, but that is inference, not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_standingsespn: Get standingsBRead-onlyIdempotent
Get league standings. Returns conference/division standings with team records, win/loss, and ranking info.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Group, conference, or division filter ID | |
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| season | No | Season year (e.g. "2024") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety and caching profile is covered structurally. The description usefully adds what the payload contains (conference/division grouping, records, rankings), but says nothing about pagination, whether a season must be supplied, or coverage limits across sports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the verb/resource front-loaded and the return shape immediately after; no filler. Could arguably be tightened further but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description at least sketches the return shape, which is valuable. Combined with a fully documented 5-parameter schema and read-only annotations, this is nearly complete; only sport coverage and season requirements go unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents sport, league, group, fields, and season with examples. The description adds no parameter-level meaning (e.g., that group maps to a conference/division filter), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get league standings") and then enumerates the return content (conference/division standings with records, win/loss, ranking). It does not, however, distinguish itself from the many other standings siblings (nhl_get_standings, mlb_get_standings, sportsdb_get_standings, f1_get_driver_standings), leaving the agent to infer the ESPN multi-sport scope from the name prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never says how this differs from the ~8 other standings tools in the sibling list, nor when a sport-specific standings tool should be preferred over this generic ESPN one. The agent must guess from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_team_detailsespn: Get team detailsBRead-onlyIdempotent
Get detailed information about a specific team, including record, stats, venue, and next event.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| team_id | Yes | ESPN team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotence. The description adds return content categories (record, stats, venue, next event) but omits rate limits, auth needs, pagination, or data freshness, so it provides only modest context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no redundant clauses. Every phrase ('detailed information', 'specific team', and the enumerated contents) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema detail tool with full schema coverage and safety annotations, the description adequately states the resource and main returned data. It is slightly incomplete in not clarifying how it differs from sibling endpoints (roster, schedule, teams list), but the core need is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with sport, league, team_id, and fields all documented in the schema. The description adds no parameter-level detail, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('detailed information about a specific team') with enumerated contents (record, stats, venue, next event). However, it does not distinguish itself from sibling tools like espn_get_team_roster, espn_get_team_schedule, or espn_get_teams, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives named, and no exclusions. The description only states what the tool returns, leaving the agent to infer that this is for a single team's detail view rather than roster, schedule, or list endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_team_rosterespn: Get team rosterARead-onlyIdempotent
Get the full roster for a specific team, including player names, positions, jersey numbers, and basic stats.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| team_id | Yes | ESPN team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. Because there is no output schema, the description carries the return-value burden and does so usefully by listing exactly what the roster payload contains, though it says nothing about team_id format expectations or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the tool's purpose first and then the payload contents, with no filler. It is appropriately sized, though it spends no words on differentiating context that would have earned a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with a fully documented schema and no output schema, the description gives enough to invoke it correctly and tells the agent what comes back. The one gap is that it does not help the agent choose this tool over the several other ESPN team tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so sport, league, team_id and fields are all documented in the schema itself. The description adds no parameter-level detail beyond that, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the full roster for a specific team') and enumerates the returned entities (names, positions, jersey numbers, basic stats). It is clear on its own but never distinguishes itself from close siblings such as espn_get_team_details or espn_get_teams, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives, despite the ESPN family containing espn_get_team_details, espn_get_teams, and espn_get_team_schedule. Usage is only weakly implied by the word 'roster' and the phrase 'specific team'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_teamsespn: Get teamsBRead-onlyIdempotent
List all teams in a league. Returns team names, IDs, abbreviations, logos, and locations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of teams to return | |
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the returned field set (names, IDs, abbreviations, logos, locations), which is useful, but says nothing about how limit truncates results or whether the list is paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded before the return-value detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema the description does partially compensate by enumerating returned fields, which is appropriate. It still omits limit/fields behavior and how to choose this source over the many sibling team endpoints, leaving gaps for a 4-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so sport and league examples, limit, and fields are already fully documented in the schema. The description only implies league scoping and adds no syntax or interaction detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all teams in a league') and scopes it to a league, which is clear enough to invoke. However, it does no sibling differentiation despite many adjacent team-listing tools (mlb_get_teams, ncaa_get_teams, openliga_get_teams, squiggle_get_teams, formulae_get_teams), so an agent must infer ESPN is the right source from the name prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not guidance and no mention of alternatives, even though sportsdb_search_teams and openliga_get_teams cover overlapping ground. The required sport/league pairing is only inferable from the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espn_get_team_scheduleespn: Get team scheduleBRead-onlyIdempotent
Get a team's schedule for a season, including past results and upcoming games.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport code, e.g. "football", "basketball", "baseball", "hockey", "soccer", "mma", "golf", "tennis", "racing" | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "nfl", "nba", "mlb", "nhl", "wnba", "college-football", "mens-college-basketball", "eng.1", "usa.1", "ufc", "pga", "atp", "f1" | |
| season | No | Season year (e.g. "2024") | |
| team_id | Yes | ESPN team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety and caching profile is covered. The description adds a modest behavioral detail — that the payload mixes completed results with future fixtures — but says nothing about pagination, season defaults, or whether the season param is required for current-year data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the resource and the temporal scope front-loaded and zero filler. It is arguably under-sized rather than over-sized, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back; it does so only loosely ('past results and upcoming games'). For a 5-parameter, 3-required tool spanning multiple sports and leagues, it omits season defaults, whether results are ordered, and how it relates to the sibling nhl_get_team_schedule, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the enumerated-style examples for sport and league is already documented in the schema. The description only echoes the 'season' concept, adding no syntax, format, or default-value detail beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource ('Get a team's schedule') with a stated scope ('for a season') and content hint ('past results and upcoming games'). It does not distinguish itself from the near-identical sibling nhl_get_team_schedule or from league-specific schedule tools like mlb_get_schedule, leaving the agent to infer that this is the multi-sport ESPN variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of when to prefer this over nhl_get_team_schedule or the league-specific schedule tools in the sibling list, and no stated prerequisites (e.g. that sport/league/team_id must be mutually consistent). Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_clubseuroleague: Get clubsARead-onlyIdempotent
List the clubs participating in a EuroLeague/EuroCup season (names, codes, venues, country).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety and repeatability profile is covered. The description adds the useful scoping fact that results are tied to one season and one competition, but says nothing about result size, pagination or ordering. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the season/competition scope and returned attributes packed in without waste. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by naming the attributes returned (names, codes, venues, country), which is exactly what an agent needs to decide if this tool answers its question. Only the absence of any volume/ordering hint keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with competition's E/U enum and season_year's start-year convention both documented in the schema itself, so the baseline is 3. The description's parenthetical '(names, codes, venues, country)' loosely hints at what the fields filter can project, but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (clubs) plus the scoping dimension (participating in a EuroLeague/EuroCup season) and even the returned fields. It is easy to distinguish from euroleague_get_games, get_rounds and get_game_boxscore. It stops short of 5 only because it never names or contrasts an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose: call it when you need the roster of clubs in a season. There is no explicit when-to-use, when-not-to-use, or pointer to a sibling (e.g. a team-details or standings tool) that might serve a related need, so an agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_game_boxscoreeuroleague: Get game boxscoreARead-onlyIdempotent
Get a game's full box score (per-player and team stats for both teams). Use a game code from euroleague_get_games.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_code | Yes | Game code | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and idempotency profile is covered. The description adds only the return-content scope (per-player and team stats for both teams); it says nothing about response size, pagination, or error behavior for a large boxscore payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste: the return scope is front-loaded and the input-source note follows. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does so adequately (per-player and team stats for both teams). It is complete enough to invoke correctly, though it could note result formatting or that stats cover both squads in more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including the E/U competition enum) are already documented in the schema. The description adds no format or semantics beyond pointing at euroleague_get_games as the source of game_code, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a game's full box score") and clarifies scope with parenthetical content ("per-player and team stats for both teams"). This distinguishes it from sibling tools like euroleague_get_game_header and euroleague_get_game_playbyplay without the agent needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where the required game_code comes from ("Use a game code from euroleague_get_games"), which is a useful input-sourcing hint. However, it gives no when-to-use vs when-not guidance relative to the other euroleague game tools (header, playbyplay), leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_game_headereuroleague: Get game headerARead-onlyIdempotent
Get a game's header/summary: final and per-quarter scores, teams, coaches. Use a game code from euroleague_get_games.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_code | Yes | Game code (from euroleague_get_games) | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety/idempotency profile is covered externally. The description adds the return-content breakdown, but says nothing about permissions, error behavior when the game_code is invalid, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the payload is front-loaded and the sourcing hint follows. Every clause earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry return-value context — and it does by listing the score, team and coach content. Given the read-only annotations and fully documented schema, this is nearly complete; only cross-sibling differentiation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the game_code source and season_year example is already documented in the schema. The description's only parameter note ('a game code from euroleague_get_games') merely repeats the schema, adding no new semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a game's header/summary') and enumerates the payload ('final and per-quarter scores, teams, coaches'), so the agent knows exactly what it returns. It does not, however, distinguish itself from the sibling euroleague_get_game_boxscore, which likely overlaps heavily.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete prerequisite — 'Use a game code from euroleague_get_games' — which is useful routing context. But it never says when to pick this over euroleague_get_game_boxscore or euroleague_get_game_playbyplay, so the selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_game_playbyplayeuroleague: Get game playbyplayARead-onlyIdempotent
Get a game's full play-by-play feed (every event by quarter). Use a game code from euroleague_get_games.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_code | Yes | Game code | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and repeat-safety profile is covered. The description adds only the content scope ('every event by quarter') and says nothing about ordering, pagination, or volume of events.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the content scope front-loaded and the parameter hint following. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with full schema coverage and clear annotations, the description covers what the tool returns at a high level even without an output schema. Minor gaps remain around event ordering and feed size, but nothing blocks correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The only added meaning is the provenance of game_code (from euroleague_get_games); competition, season_year, and fields are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a game's full play-by-play feed') plus the scope of the content ('every event by quarter'), which separates it from euroleague_get_game_boxscore and euroleague_get_game_header. It stops short of naming a sibling explicitly to route the agent, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite for one parameter ('Use a game code from euroleague_get_games'), which is genuinely useful. However, it gives no when-to-use or when-not guidance relative to the boxscore/header siblings that also take a game code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_gameseuroleague: Get gamesBRead-onlyIdempotent
Get all EuroLeague/EuroCup games for a season (teams, scores, dates, round, status).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety and idempotency profile is covered. The description adds the returned field set, but says nothing about pagination, response size for a full season, or rate limits of the external API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource, scope and returned payload are all in the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 fully documented parameters and no output schema, the description usefully enumerates the returned fields (teams, scores, dates, round, status), which covers the missing output schema. Only richer behavioral context is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so fields, competition enum and season_year semantics are already documented in the schema. The description only restates the season scoping and adds no format or syntax detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get games) plus the scope (a season) and the two competitions covered. It does not explicitly distinguish itself from siblings like euroleague_get_rounds, but the season-wide scope makes the granularity clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not guidance and no named alternatives. The agent must infer from the description that this is the season-level listing and that euroleague_get_rounds or euroleague_get_game_header serve narrower needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
euroleague_get_roundseuroleague: Get roundsARead-onlyIdempotent
List the rounds (game days) of a EuroLeague/EuroCup season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| competition | No | Competition: "E" = EuroLeague, "U" = EuroCup | E |
| season_year | Yes | Season start year (e.g. 2024 for the 2024-25 season) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds minor domain context by clarifying that 'rounds' means 'game days,' but it does not discuss rate limits, auth requirements, or return behavior beyond what annotations and the schema already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It gives the essential verb, resource, and domain without unnecessary or repeated information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and clear annotations, the description is nearly sufficient. The only slight gap is that it does not explicitly state season_year is required, but the schema handles that clearly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, including the competition enum and season_year format. The description reinforces the EuroLeague/EuroCup scope but adds no syntax or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('rounds (game days)') scoped to a EuroLeague/EuroCup season. It is immediately clear what the tool returns, but it does not explicitly distinguish itself from sibling tools like euroleague_get_games, which also cover season-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent can infer it is used to retrieve the list of rounds for a given season. However, the description offers no explicit when-to-use guidance, no when-not-to-use guidance, and no mention of alternatives such as euroleague_get_games.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_circuitsf1: Get circuitsARead-onlyIdempotent
List Formula 1 circuits for a given season or all-time. Returns circuit names, locations, and coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description usefully names the returned fields (names, locations, coordinates), which matters since there is no output schema, but it says nothing about pagination or the default-limited result set that the params imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the scoping condition is front-loaded and the return summary follows. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description covers purpose, scope, and return fields. It omits pagination behavior, but the schema carries that, leaving only minor gaps an agent can fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, fields, offset, and season are already documented in the schema; baseline is 3. The description only echoes the season concept and adds no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (Formula 1 circuits) with scope qualifiers (given season or all-time). The resource itself cleanly distinguishes it from siblings like f1_get_drivers or f1_get_constructors, though it does not explicitly name or contrast those neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For a given season or all-time' implies the usage context, but there is no explicit when-to-use or when-not guidance, and no alternative sibling is named. It is implied usage rather than a routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_constructorsf1: Get constructorsARead-onlyIdempotent
List Formula 1 constructors/teams for a given season or all-time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the season-vs-all-time scoping; it says nothing about result size, pagination behavior, or what 'all-time' returns differently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb and resource front-loaded and zero filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list endpoint with annotations covering safety and a fully documented schema, plus no output schema to explain, this is close to complete. It would reach 5 with a note on what constructors fields are returned or how all-time differs from a season query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, fields, offset and season are fully documented in the schema already. The description only restates the season dimension, adding no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Formula 1 constructors/teams') plus the scoping dimension (season or all-time), so an agent can distinguish it from f1_get_constructor_standings or f1_get_drivers. It doesn't explicitly name a sibling to differentiate against, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a given season or all-time' implies how the season parameter drives the query, but there is no explicit when-to-use guidance or named alternative (e.g. use f1_get_constructor_standings for points tables). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_constructor_standingsf1: Get constructor standingsARead-onlyIdempotent
Get Formula 1 World Constructors' Championship standings for a given season.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds no behavioral context beyond the purpose, such as return format, pagination behavior, or season handling, so it does not go beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It communicates the resource and scope immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only standings tool with rich parameter descriptions and safety annotations, the description is largely sufficient. It does not describe what the standings contain (e.g., position, points, team names), but that omission is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters, including the season default of 'current' and pagination details. The description only restates the season concept, adding no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), resource ('Formula 1 World Constructors' Championship standings'), and scope ('for a given season'). It implicitly distinguishes from the sibling f1_get_driver_standings by naming the constructors' championship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call it when you need constructor standings for a season. However, there is no explicit when-to-use guidance, no mention of when to prefer f1_get_driver_standings, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_driver_resultsf1: Get driver resultsBRead-onlyIdempotent
Get all race results for a specific driver in a given season. Use driver IDs like 'hamilton', 'max_verstappen', 'leclerc'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") | |
| driver_id | Yes | Driver ID (e.g. "hamilton", "max_verstappen", "leclerc") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering the safety profile. The description adds no behavioral traits beyond that—no pagination behavior, result ordering, or whether sprint results are included—so it provides minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core operation and followed by a brief parameter hint, with zero filler. Every sentence contributes, and the purpose is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5-parameter schema with full coverage and read-only annotations, the description is adequate for basic invocation. It falls short on sibling differentiation and return-value expectations (no output schema exists), leaving some ambiguity for an agent choosing between F1 tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented directly in the schema, including examples for driver_id and season defaults. The driver ID examples in the description duplicate the schema rather than adding new meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Get'), resource ('race results'), and scope ('for a specific driver in a given season'), making the operation identifiable. However, it does not explicitly differentiate itself from sibling tools like f1_get_race_results, leaving sibling discrimination to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no explicit when-to-use guidance or mention of alternatives such as f1_get_race_results. The only directive is about driver ID format, which is parameter guidance rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_driversf1: Get driversARead-onlyIdempotent
List Formula 1 drivers for a given season or all-time. Returns driver IDs, names, nationalities, and other info.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds a partial return-shape note ('driver IDs, names, nationalities, and other info') which is useful since there is no output schema, but says nothing about pagination or default result volume beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the listing scope is front-loaded before the incidental return-field detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a fully documented schema, the definition covers purpose, scope and rough output contents. It stops short of naming sibling alternatives or noting that results are paginated by default, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines limit, offset, fields and the season format including the 'current' default. The description adds only the high-level notion that season may be a specific year or all-time, which leaves the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Formula 1 drivers') and clarifies scope ('for a given season or all-time'), so the agent knows it is a driver-listing tool rather than a results or standings tool. It does not, however, differentiate itself from close siblings like openf1_get_drivers or f1_get_driver_standings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'for a given season or all-time' phrasing implies when the tool is useful, but there is no explicit guidance on when to prefer it over openf1_get_drivers, f1_get_driver_standings, or f1_get_driver_results. Usage must be inferred from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_driver_standingsf1: Get driver standingsBRead-onlyIdempotent
Get Formula 1 World Drivers' Championship standings for a given season.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is fully covered by structured metadata. The description adds nothing beyond that – no note on data freshness for 'current', pagination behavior, or result shape – making it essentially a restatement of the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Nothing needs trimming; the issue is omission, not verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could usefully indicate what a standings entry contains (position, points, driver/team) and how pagination behaves. For a low-complexity, fully-schematized read tool this is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, fields and season are all already documented with defaults and bounds. The description's 'for a given season' merely echoes the season parameter, adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Get) plus a precisely named resource (Formula 1 World Drivers' Championship standings) scoped to a season. The 'Drivers'' qualifier inherently separates it from f1_get_constructor_standings, but the description never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as f1_get_constructor_standings or f1_get_driver_results. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_lap_timesf1: Get lap timesARead-onlyIdempotent
Get lap times for a specific race. Can return all laps or a specific lap number. Data available from 1996 onwards.
| Name | Required | Description | Default |
|---|---|---|---|
| lap | No | Specific lap number (omit for all laps) | |
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| round | Yes | Round number within the season | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | Yes | Season year (e.g. "2024") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds one genuine behavioral fact beyond the structured data – historical coverage begins in 1996 – but says nothing about pagination behavior, result volume, or ordering, which the schema only hints at via limit/offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and zero filler. The middle sentence partially duplicates the schema's own parameter documentation, which is the only mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter read tool with no output schema and full annotation coverage, the description supplies what an agent needs: what it returns, the optional single-lap mode, and the historical boundary. The absence of any note on pagination or result ordering is a minor gap given limit/offset exist in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including lap, season, round, limit, offset and fields is already documented in the schema. The description's only added meaning is that omitting the lap parameter yields all laps, which is essentially a restatement of the schema's 'omit for all laps' note, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get lap times for a specific race') and clarifies scope with the all-laps vs. single-lap distinction and the 1996 data start. It does not differentiate itself from the closely related sibling openf1_get_laps, which also returns lap data, so the agent gets no routing help between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('for a specific race', 'all laps or a specific lap number') and flags a hard constraint (data from 1996 onwards), which helps an agent decide if the tool is applicable. It names no alternative and gives no when-not-to-use guidance, so the sibling overlap with openf1_get_laps is left unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_pit_stopsf1: Get pit stopsARead-onlyIdempotent
Get pit stop data for a specific race. Can return all pit stops or a specific stop number. Data available from 2012 onwards.
| Name | Required | Description | Default |
|---|---|---|---|
| stop | No | Specific pit stop number (omit for all stops) | |
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| round | Yes | Round number within the season | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | Yes | Season year (e.g. "2024") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and repeatability profile is covered structurally. The description adds the temporal availability constraint (2012+), which is useful context, but says nothing about pagination behavior, data source, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core action front-loaded and the qualification (specific stop / all stops) immediately after. No padding, though the availability note could be folded more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-resource read tool with full parameter documentation and read-only/idempotent annotations, the description covers what an agent needs to call it. There is no output schema, but the return shape of pit-stop data is conventionally obvious; a note on source or pagination would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (stop, limit, round, fields, offset, season) are already documented in the schema, including defaults and bounds. The description's 'all or a specific stop number' phrasing only echoes the stop parameter and adds no format or syntax detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get pit stop data') and scopes it to a specific race, plus clarifies the two query modes (all stops vs. a single stop number). It does not name or distinguish itself from near-neighbors such as openf1_get_pit or f1_get_lap_times, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'data available from 2012 onwards' note is a genuine usage constraint, and the all-vs-single-stop phrasing hints at when to use the stop parameter. However, there is no explicit guidance on when to pick this tool over the other pit-stop-capable sibling (openf1_get_pit), leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_qualifyingf1: Get qualifyingBRead-onlyIdempotent
Get Formula 1 qualifying results. Returns Q1/Q2/Q3 times for drivers in a specific qualifying session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| round | No | Round number within the season | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that the return contains Q1/Q2/Q3 driver times, which is useful context, but says nothing about pagination, the 'current' season default, or behavior on missing rounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the return contents. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does double duty by naming the returned Q1/Q2/Q3 times, which is the key return-value information. For a 5-parameter, all-optional tool with full schema coverage this is nearly sufficient, though it omits how session/round scoping interacts with the default 'current' season.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (limit, round, fields, offset, season) is already documented in the schema. The description adds no parameter-level detail, such as season/round format requirements, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get Formula 1 qualifying results') and clarifies the payload ('Q1/Q2/Q3 times for drivers in a specific qualifying session'). This separates it from race/sprint result siblings, but it never explicitly distinguishes itself from f1_get_driver_results or f1_get_lap_times, which an agent could plausibly confuse with qualifying data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative tool is named. The description only implies the domain (session qualifying), leaving the agent to infer whether f1_get_race_results, f1_get_sprint, or f1_get_driver_results should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_race_resultsf1: Get race resultsBRead-onlyIdempotent
Get Formula 1 race results. Returns finishing positions, drivers, constructors, times, and status for a season or specific round.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| round | No | Round number within the season | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is fully covered. The description adds useful payload context by listing the returned fields (positions, drivers, constructors, times, status), but says nothing about pagination behavior or result ordering beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, no filler. Efficient, though the second sentence is essentially a return-field list that could be trimmed or expanded more purposefully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing return content, and it does so by enumerating the result fields. With 0 required params and 100% schema coverage, the agent has enough to call it, though pagination semantics remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already fully documented in the schema; baseline 3 applies. The phrase 'for a season or specific round' loosely maps to the season/round params but adds no format or default detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get Formula 1 race results) and pins the scope to a season or a specific round, which separates it from race-weekend siblings like f1_get_sprint and f1_get_qualifying by resource. It does not name any sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance or alternatives. It never says how this differs from f1_get_sprint, f1_get_qualifying, or f1_get_driver_results, all of which operate on the same race weekend, so the agent must infer the choice from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_schedulef1: Get scheduleBRead-onlyIdempotent
Get the Formula 1 race schedule/calendar for a given season, including circuit info and race dates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and repeatability profile is covered. The description adds useful content scope (circuit info and race dates) but says nothing about pagination behavior or how the default season resolves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb, resource, scope and payload contents appear before any trailing clause. It is terse without being cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool whose annotations cover safety and whose schema covers all four parameters, the essentials are present, and the description partially compensates for the missing output schema by naming circuit info and race dates. It still omits ordering and pagination semantics, which an agent needs to page through a season correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, fields and season are already documented, including the "current" default. The description only implies the season filter and adds nothing about field projection or pagination interaction, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (Formula 1 race schedule/calendar) scoped to a season, plus what the payload contains (circuit info, race dates). The f1_ prefix cleanly separates it from the many *_get_schedule siblings, though it does not explicitly distinguish itself from f1 seasonal tools like f1_get_seasons or f1_get_circuits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternatives. An agent must infer on its own that this is the calendar-level tool rather than f1_get_race_results or openf1_get_sessions, and that season supports "current" only by reading the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_seasonsf1: Get seasonsBRead-onlyIdempotent
List all Formula 1 seasons from 1950 to present, including Wikipedia links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds one genuinely useful return-value fact — that each season includes Wikipedia links — but says nothing about pagination defaults or result ordering, which matters given limit/offset parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope constraint and the notable return detail; nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully annotated, zero-required-parameter list endpoint with no output schema, the description covers what the tool returns (seasons plus Wikipedia links). The only small gap is the missing note that results are paginated rather than exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: limit, fields and offset all carry their own descriptions and bounds. The description adds nothing about parameters, and 'List all seasons' arguably understates the default-30 limit, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('List') and resource ('Formula 1 seasons') and bounds it explicitly to '1950 to present', which is far more precise than a bare 'get seasons'. It doesn't explicitly contrast itself with the sibling season tools (motogp_get_seasons, sportsdb_get_seasons, espn_get_seasons), but the F1 scoping and date range make its remit unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, nor of prerequisites or context. The phrase 'List all seasons' also gives no hint that results are paginated by default, which is exactly the situation where an agent would need guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
f1_get_sprintf1: Get sprintBRead-onlyIdempotent
Get Formula 1 sprint race results for a specific round.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 30, max 1000) | |
| round | No | Round number within the season | |
| fields | No | Keys to keep (comma-separated). | |
| offset | No | Number of results to skip for pagination | |
| season | No | Season year (e.g. "2024") or "current" (default: "current") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds only the round-scoping constraint and nothing about return format, pagination, or data completeness, so it is minimal but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is efficient, though arguably under-specified rather than richly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup tool with full schema coverage and annotations covering the safety profile, the description is adequate to invoke correctly. The absence of output schema means return-shape explanation would have helped, but the core need is met.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (limit, round, fields, offset, season) are already documented in the schema. The description adds no syntax or format detail beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get), resource (Formula 1 sprint race results), and scope (specific round), clearly distinguishing this from the regular-race sibling f1_get_race_results via the word 'sprint'. However it does not explicitly name any sibling to route the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no explicit alternatives named. The sprint-vs-race distinction is implied by the word 'sprint' but the description never tells the agent when to prefer this over f1_get_race_results or f1_get_qualifying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
footballdata_uk_get_matchesfootballdata: Uk get matchesARead-onlyIdempotent
Get historical matches (results + bookmaker odds) for a league and season from football-data.co.uk. Returns the most recent matches first; filter by team and cap with limit.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Filter to matches involving this team (case-insensitive substring) | |
| limit | No | Max matches to return (default 30, most recent first) | |
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League code, e.g. "E0" (Premier League). Use footballdata_uk_list_leagues. | |
| season | Yes | Season code, 4 digits, e.g. "2425" for 2024-25 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety and repeatability are covered. The description adds the useful ordering behavior ('most recent matches first') and content scope (results plus odds), but says nothing about rate limits, auth, or pagination semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the resource and its distinguishing content (results + odds) are front-loaded, followed by ordering and filtering. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the return content (results plus bookmaker odds) and ordering. It covers what an agent needs to call the tool correctly, though it could say more about response shape or pagination given the limit of 400.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents league codes, season format, team substring matching, limit cap, and fields selection. The description's mention of team filtering and limit only restates schema content, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (historical matches with results and bookmaker odds) for a league and season, and names the data source football-data.co.uk. It does not explicitly differentiate itself from similar siblings like openliga_get_matches_by_league_season or sportsrc_get_matches, but the odds mention and source give it a distinct identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'filter by team and cap with limit,' which maps to the optional parameters, but gives no explicit when-to-use vs when-not guidance or alternatives. The schema points to footballdata_uk_list_leagues for the league param, but the description itself carries no routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
footballdata_uk_list_leaguesfootballdata: Uk list leaguesARead-onlyIdempotent
List the football-data.co.uk league codes usable with footballdata_uk_get_matches, and how to form the season code.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safe, repeatable read profile is covered. The description adds only that the payload contains league codes plus season-code formation guidance; it says nothing about pagination, size, or response shape, so it is only marginally richer than the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the resource and the consuming tool with no wasted words. Nothing can be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a reference-list tool with no output schema and one optional parameter, the description adequately explains what is returned (league codes and season-code format). It could be slightly more explicit about the response contents, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional 'fields' parameter with 100% schema description coverage, so the schema carries the meaning. The description adds no extra detail about the field-projection syntax, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (football-data.co.uk league codes), and explicitly ties the output to the sibling footballdata_uk_get_matches. It also notes the season-code formation guidance, so an agent knows this is a reference/enumeration tool distinct from get_matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'usable with footballdata_uk_get_matches' makes the context clear: this is the prerequisite lookup for the matches tool. It gives no explicit exclusions or when-not conditions, but the intended usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_championshipsformulae: Get championshipsARead-onlyIdempotent
List Formula E championships (one per season, from 2014-15 to the current season) with their ids and status. The id (championshipId) feeds the standings tools.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that the result is one row per season across a defined historical window and includes an id and status, which is useful behavioral context in the absence of an output schema. Pagination or ordering behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the first covers scope, coverage window, and returned fields; the second covers the downstream linkage. The most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param read tool with no output schema, the description supplies the season coverage, the identity of the returned key, and the reason to call it. What remains unstated — ordering, whether the list can be filtered, or that the full set is small enough to return unpaginated — is minor but would make it airtight.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional `fields` parameter and schema description coverage is 100%, so the schema already fully documents it. The description says nothing about `fields` (e.g., which keys are valid or what the default projection is), so it adds no meaning beyond the schema — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List Formula E championships') plus granularity ('one per season, from 2014-15 to the current season') and returned fields ('ids and status'). Naming the series as Formula E distinguishes it from look-alike season tools such as f1_get_seasons or sportsdb_get_seasons, though no Formula E sibling (races, teams, standings) is contrasted by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The `id` (championshipId) feeds the standings tools' states the concrete downstream dependency, telling an agent to call this before formulae_get_driver_standings or formulae_get_team_standings. It never explicitly excludes alternatives or says when not to use it, so this is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_driver_standingsformulae: Get driver standingsARead-onlyIdempotent
Get the Formula E drivers' championship standings for a championship (season). Pass a championshipId from formulae_get_championships.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| championship_id | Yes | Championship id from formulae_get_championships |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered by structured data. The description adds the prerequisite linkage to formulae_get_championships but says nothing about ordering, pagination, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and the prerequisite following immediately. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and adequate annotations, the description covers purpose and the key prerequisite. It is slightly thin on ordering or scope of standings, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description repeats the championship_id provenance hint but adds no extra semantics for the free-form 'fields' parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the Formula E drivers' championship standings') and scopes it to a championship/season. It is clearly distinguishable from the adjacent formulae_get_team_standings sibling, which covers team rather than driver standings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to pass a championshipId from formulae_get_championships, which gives a clear prerequisite and a chained-call path. It does not, however, say when to prefer this over formulae_get_team_standings or other standings tools, so there is no explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_raceformulae: Get raceARead-onlyIdempotent
Get details for a single Formula E race (sessions, circuit, schedule). Use a race id from formulae_get_races.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| race_id | Yes | Race id from formulae_get_races |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the useful detail that the response contains sessions, circuit and schedule, but says nothing about pagination, error behavior, or how the optional fields projection affects output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, the purpose front-loaded and the id prerequisite second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by naming the returned sections, and the id source is clear. For a simple two-parameter read tool this is nearly sufficient, though it could note the fields projection's effect on the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema, and the schema's race_id description mirrors the description's wording. The description adds no meaning beyond the schema and never mentions the optional fields projection parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single Formula E race), and enumerates the payload contents (sessions, circuit, schedule). It implicitly distinguishes itself from the list-oriented formulae_get_races, but does not explicitly differentiate from close siblings like formulae_get_race_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where the required id comes from (formulae_get_races), which is useful prerequisite guidance. However, it gives no when-to-use/when-not guidance relative to alternatives such as formulae_get_race_results, so usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_race_resultsformulae: Get race resultsARead-onlyIdempotent
Get the race results / classification for a Formula E race (driver, team, position, points). Use a race id from formulae_get_races.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| race_id | Yes | Race id from formulae_get_races |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the shape of the returned classification (driver/team/position/points), which is modest extra context but does not discuss ordering, missing-result edges, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler; the field list is front-loaded and the id-sourcing hint follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description covers purpose, the returned fields, and where to get the id. Only the cross-series disambiguation (Formula E vs F1) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, and the description's note about sourcing race_id merely restates the schema text. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Get the race results / classification') and enumerates the returned content (driver, team, position, points). It also names the series as Formula E, which is the key distinction from the F1 sibling tools, though it never calls out f1_get_race_results explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a prerequisite by telling the agent to source the id from formulae_get_races, which is genuinely useful routing. However, it offers no when-not-to-use guidance and does not distinguish this from formula E siblings like formulae_get_race or from f1_get_race_results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_racesformulae: Get racesARead-onlyIdempotent
List Formula E races / E-Prix with id, name, country, city, date and result-availability flags. Paginated — use page to advance. Each race id feeds formulae_get_race / formulae_get_race_results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (0-based) | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description adds genuine behavior beyond that: the result set is paginated and page-addressable, and the ids are usable as keys in other tools. Rate limits or page-size defaults are not disclosed, so 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler; the resource and returned fields come first, pagination second, downstream routing last. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields, which is the right place to compensate. Pagination is covered, but the page size, whether a total count exists, and the meaning of the result-availability flags are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema; this sets the baseline at 3. The description reinforces `page` as the advancing cursor but says nothing about the `fields` projection parameter, adding only marginal meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Formula E races / E-Prix') and enumerates the returned fields (id, name, country, city, date, result flags). It also names the sibling tools that consume the output, so an agent can place it precisely in the formulae_* family without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Paginated — use `page` to advance' tells the agent how to iterate, and 'Each race id feeds formulae_get_race / formulae_get_race_results' establishes this as the entry point that routes downstream. It lacks an explicit when-not-to-use condition (e.g., versus formulae_get_championships), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_teamsformulae: Get teamsARead-onlyIdempotent
List Formula E teams with wins, podiums and race starts.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered by structured data. The description goes beyond that by disclosing the aggregate statistics included per team (wins, podiums, race starts), which is useful payload context for choosing the tool. It does not cover freshness (which season), pagination, or the full response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the identifying scope ('Formula E') appears immediately. It is efficient, though extremely terse for a tool with no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with one fully documented optional parameter and no output schema, the description is largely sufficient: it identifies the sport, the entity, and the key stats returned. It leaves minor gaps around season scoping and full return structure, but nothing that would cause an agent to misuse it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional 'fields' parameter with full schema description coverage ('Keys to keep (comma-separated)'), so the schema already carries the semantics. The description adds nothing about how or why to project fields. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence names a specific verb ('List') and resource ('Formula E teams'), which disambiguates it from the many other league team endpoints in the sibling list (mlb_get_teams, espn_get_teams, ncaa_get_teams, etc.). It also previews the payload (wins, podiums, race starts). It stops short of distinguishing itself from adjacent formulae tools such as formulae_get_team_standings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no named alternative. An agent must infer that this is the roster/team list endpoint versus formulae_get_team_standings or formulae_get_championships. No prerequisites, season scoping, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formulae_get_team_standingsformulae: Get team standingsARead-onlyIdempotent
Get the Formula E teams' championship standings for a championship (season). Pass a championshipId from formulae_get_championships.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| championship_id | Yes | Championship id from formulae_get_championships |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the season-scoping context and says nothing about return shape, pagination, or how standings are ordered, which is acceptable but not rich given the lower bar set by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is returned and followed by the input dependency. The second sentence largely duplicates the schema description of championship_id, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only standings lookup with full schema coverage and annotations, the description supplies the needed purpose and input provenance. No output schema exists, but the return concept (team championship standings) is clear enough that little more is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, and the description merely repeats the schema's note that championship_id comes from formulae_get_championships. The optional 'fields' projection parameter is not mentioned in the description, but the schema covers it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (Formula E teams' championship standings) scoped to a season. It is cleanly distinguishable from the sibling formulae_get_driver_standings because it explicitly names 'teams' rather than drivers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context by telling the agent to supply a championshipId sourced from formulae_get_championships, which establishes the call order. It stops short of any explicit when-not-to-use or naming of alternatives such as driver standings, so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_broadcastslichess: Get broadcastsARead-onlyIdempotent
List official Lichess broadcast tournaments (live coverage of OTB events). Returns up to ~20 most recent.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max broadcasts to return (1-50, default 20) | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds ordering context ("most recent") that the annotations lack, but the "~20" figure is vague and sits awkwardly beside a schema that permits max=50, which could mislead an agent about the effective cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scope. No wasted words; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list endpoint, the description plus annotations and a fully documented schema cover what an agent needs to invoke it, and the recency/volume note is useful. Minor gaps remain around what a broadcast record contains and whether the list can be filtered, but no output schema is expected here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (max, fields) are already documented in the schema. The description adds no syntax, formatting, or interpretation detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List official Lichess broadcast tournaments") and clarifies the resource with "live coverage of OTB events", which separates it from the arena-focused lichess_get_tournaments sibling. It does not name that sibling explicitly, so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical scope hint implies this is the tool for OTB broadcast coverage, but there is no explicit when-to-use, no exclusion criteria, and no pointer to lichess_get_tournaments or lichess_get_daily_puzzle as alternatives. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_daily_puzzlelichess: Get daily puzzleARead-onlyIdempotent
Get the Lichess puzzle of the day, including the source game and the solution moves.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and determinism are covered structurally. The description helpfully discloses the return payload (source game plus solution moves), which is useful since no output schema exists, but adds nothing on caching, rate limits, or that the result changes daily.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the resource and immediately lists what is returned. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless read tool with annotations covering the safety profile, the description discloses the return contents adequately in the absence of an output schema. A minor gap is the absence of any note on daily rotation or fixed scope, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional 'fields' parameter, and the schema description (100% coverage) already documents it. The description adds no further parameter meaning, so the baseline of 3 for fully-covered schema is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (Lichess puzzle of the day), and explicitly names the contents included (source game and solution moves). Easily distinguished from all siblings, none of which concern puzzles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'puzzle of the day' implies usage context (fetch today's puzzle), but there is no explicit when-to-use guidance, no alternatives, and no mention that it always returns the single current daily puzzle regardless of input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_teamlichess: Get teamARead-onlyIdempotent
Get information about a Lichess team: description, member count, leader, open/closed status.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | Team id (URL slug, e.g. "lichess-swiss") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds the returned field set, which is mild extra value, but says nothing about authentication requirements, rate limits, or behavior when the team id is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, followed by the concrete return contents. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only, single-required-parameter lookup with a fully documented schema, the description is nearly sufficient — and by listing the returned fields it partially compensates for the absent output schema. Only error/not-found behavior is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both team_id (URL slug example) and fields (comma-separated key filter) are already documented in the schema. The description names no parameters and adds no syntax or guidance beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (Lichess team) and enumerates the payload contents: description, member count, leader, open/closed status. It is unambiguous within the lichess_* family, but it does not explicitly differentiate itself from adjacent lookup tools such as lichess_get_user or sportsdb_get_team_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose — call it when you need a team's profile — but there is no explicit when-to-use statement, no prerequisites, and no named alternative for team-like lookups in the broader sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_top_playerslichess: Get top playersBRead-onlyIdempotent
Get the top N players for a Lichess performance variant (bullet, blitz, rapid, classical, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of top players to return (1-200, default 10) | |
| perf | Yes | Performance variant key | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and idempotency profile is covered. The description adds only the ranking/depth semantics ('top N'), and says nothing about caching, rate limits, or roughly what a player entry contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with verb and resource, with no filler or restated schema detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully documented read-only endpoint with annotations covering safety, this is nearly complete. The only gap is that with no output schema, the description does not hint at the shape of a returned player entry (name, rating, title), which an agent might otherwise need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: n has a documented range and default, perf has a full enum, and fields explains the comma-separated projection. The description's parenthetical variant list adds mild illustrative value but no format or syntax information beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (top N players) scoped to a Lichess performance variant, with examples of the variants inline. The resource is unambiguous and not overlapped by any sibling tool, though it does not explicitly contrast itself with neighboring read tools like lichess_get_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use or when-not-to-use guidance; it never mentions an alternative tool or the condition (e.g., leaderboards vs. a single user lookup) that should route an agent here. Only the phrase 'top N' implicitly signals a leaderboard-style query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_tournamentslichess: Get tournamentsARead-onlyIdempotent
Get current Lichess Arena tournaments (created, started, and recently finished).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description's one real addition is defining the temporal window of 'current' (created/started/recently finished), which is useful, but it says nothing about result volume, ordering, pagination, or whether a token is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verb and resource, with the scope qualifier in parentheses. Nothing superfluous and nothing padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with no output schema and one fully documented parameter, the description covers what is returned closely enough for correct invocation. The only gaps are return volume/ordering and auth expectations, which are minor for this shape of tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional 'fields' key is documented there, so baseline 3 applies. The description adds no projection/syntax detail (e.g., how 'fields' interacts with the returned tournament objects) beyond what the schema already gives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get current Lichess Arena tournaments') and immediately disambiguates the scope of 'current' as created, started, and recently finished. No sibling tool in the list returns Lichess tournaments, so a single clear sentence is enough to route the agent correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description: call it to fetch the currently relevant tournament list. There is no statement of when to prefer it over another tool or of any prerequisite, but with no competing Lichess tournament sibling and zero required parameters, no strong exclusion guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_userlichess: Get userBRead-onlyIdempotent
Get a Lichess user's public profile, including per-variant ratings, played games, and account flags.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username | Yes | Lichess username (case-insensitive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful scope context ('public profile') and enumerates the kind of data returned, but says nothing about rate limits, error behavior for nonexistent users, or casing/auth implications beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the returned content second. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description's enumeration of profile contents does meaningful work in telling the agent what to expect. For a simple read-only getter with full schema coverage and annotations, this is close to complete; only edge-case behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (username, fields) are already documented in the schema; the description adds no syntax or format detail beyond it. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a Lichess user's public profile) and enumerates the content returned (per-variant ratings, played games, account flags). It does not, however, differentiate itself from nearby siblings such as lichess_get_users_status or lichess_get_top_players, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and never names an alternative tool. With many sibling user/player tools in the list, the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lichess_get_users_statuslichess: Get users statusBRead-onlyIdempotent
Get realtime online + streaming status for up to 100 Lichess users in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Comma-separated usernames (max 100), e.g. "thibault,DrDrunkenstein" | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description usefully adds that status is 'realtime' and capped at 100 users per call, but says nothing about rate limits, detection granularity, or what 'streaming' status entails. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource, its realtime nature, and the batch limit all appear immediately. Nothing could be trimmed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could say more about what the returned status fields contain (online, playing, streaming flags), which is the tool's core value. Otherwise it is complete for a simple read-only lookup whose safety semantics are carried by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the ids parameter already documents the comma-separated format with an example, and fields documents key filtering; the 100-user cap is stated there too. The description adds no syntax or semantic detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get) and resource (realtime online + streaming status for Lichess users), which is clearly distinct from the profile-oriented lichess_get_user sibling. It also conveys batch scope (up to 100 users). It does not explicitly name or contrast against any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus lichess_get_user or any other sibling, and no exclusions or prerequisites (e.g., rate limits, polling guidance) are given. 'In a single call' hints at batch use but is a performance remark, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_divisionsmlb: Get divisionsBRead-onlyIdempotent
List all MLB divisions with their IDs, names, and associated leagues.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description contributes the fact that this returns the complete set of divisions with their IDs, names, and leagues, which partially compensates for the absent output schema, but says nothing about the fields parameter or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with every clause carrying information (IDs, names, associated leagues). Nothing wasted and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only list tool with no output schema, stating the returned fields is the key compensation and it does that. It is only slightly incomplete in not clarifying the 'fields' projection behavior or whether results span both leagues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional 'fields' parameter, so the schema already documents its purpose ('Keys to keep (comma-separated)'). The description adds no extra meaning to that parameter, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a specific resource (MLB divisions), plus the fields returned, so it is trivially separable from siblings like mlb_get_teams or mlb_get_standings. It stops short of naming an alternative, but the resource itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer from the resource name alone that this is the lookup for division metadata rather than team or standings lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_gamemlb: Get gameBRead-onlyIdempotent
Get detailed game data from the live feed including plays, box score, and line score.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_pk | Yes | The unique game ID (gamePk) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and reproducibility profile is covered. The description adds one useful nugget beyond that: the data comes from the 'live feed', implying freshness/live-updating rather than archival. It gives no detail on response size or cost despite being an aggregate endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action front-loaded and no filler. It is compact, though it spends its word budget enumerating content that the sibling tools already own rather than clarifying scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, read-only tool with no output schema, the description gives a rough sense of the returned payload, which is adequate. It omits the one thing an agent most needs here — how this aggregate relates to the granular boxscore/linescore/play-by-play siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both game_pk and fields are documented in the schema itself. The description adds nothing about parameter usage (e.g., what 'fields' filtering does), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource ('Get detailed game data') and enumerates the payload (plays, box score, line score), so the agent knows this is an aggregate game view. It does not, however, distinguish itself from the sibling mlb_get_game_boxscore, mlb_get_game_linescore, and mlb_get_game_play_by_play tools that carve out the very same content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. Because the description lists 'plays, box score, and line score' — each of which has its own dedicated sibling tool — the agent is left to guess whether this is the superset call or a redundant one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_game_boxscoremlb: Get game boxscoreBRead-onlyIdempotent
Get the box score for a game with full batting and pitching stats for both teams.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_pk | Yes | The unique game ID (gamePk) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description contributes the content scope ('batting and pitching stats for both teams') but says nothing about freshness, partial/in-progress games, or payload size for a stats-heavy endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource leads and the payload description follows. It is efficient, though extremely short for a tool with a rich sibling set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does briefly indicate what is returned (batting and pitching stats for both teams), which is adequate at a high level. However, it omits routing guidance against mlb_get_game, mlb_get_game_linescore, and mlb_get_game_play_by_play, which is the main missing piece for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both game_pk and fields are documented in the schema. The description adds no syntax, format, or sourcing detail for game_pk and never mentions the fields projection parameter. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (box score for a game) and adds scope: 'full batting and pitching stats for both teams.' This implicitly distinguishes it from mlb_get_game_linescore and mlb_get_game_play_by_play, but it never names those siblings or explains the distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of the alternative boxscore/landing/play-by-play tools. The only hint of prerequisite is the phrase 'for a game,' implying a game_pk sourced elsewhere, but this is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_game_linescoremlb: Get game linescoreBRead-onlyIdempotent
Get the line score (inning-by-inning scoring summary) for a game.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_pk | Yes | The unique game ID (gamePk) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered by structured data. The description adds only the definition of 'line score'; it says nothing about response shape, pagination, or whether a game must be in progress/finished, which is the kind of context an annotation can't provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical earns its place by defining a sport-specific term the agent may not know.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool the annotations plus schema cover most needs, but with no output schema the description could have sketched what a linescore contains (per-inning runs per team) or noted game state requirements. It stops at the definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with game_pk and fields both documented inline, so the schema carries the burden. The description adds no extra meaning about the game_pk format or the fields projection syntax, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (line score) and disambiguates the term with a parenthetical definition ('inning-by-inning scoring summary'). It does not, however, distinguish itself from close siblings like mlb_get_game_boxscore or mlb_get_game_play_by_play, which an agent will likely see side by side.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no reference to alternative tools. An agent must infer from the name alone that this is the inning-by-inning view rather than the boxscore or play-by-play.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_game_play_by_playmlb: Get game play by playARead-onlyIdempotent
Get play-by-play data for a specific game including all at-bats and pitches.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_pk | Yes | The unique game ID (gamePk) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the content disclosure ('all at-bats and pitches'), which is useful, but says nothing about return volume, pagination or ordering for what is typically a large payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states resource and included content; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with full schema coverage and no output schema, the definition is nearly sufficient: the agent knows what it fetches and what safety profile applies. The only gap is any hint about the size/shape of the returned play-by-play payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description adds no format or semantics detail beyond what the schema already provides (it does not explain the 'fields' key-filtering parameter at all).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) plus resource (play-by-play data for a specific game) with the added scope 'all at-bats and pitches'. It is distinguishable from mlb_get_game_boxscore and mlb_get_game_linescore by resource name, but the description never explicitly contrasts them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: 'for a specific game' signals that a game_pk is required, and the schema confirms it. There is no explicit when-to-use/when-not framing or pointer to the sibling tools that return other game views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_league_leadersmlb: Get league leadersBRead-onlyIdempotent
Get league stat leaders for categories like home runs, batting average, ERA, strikeouts, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season year (e.g. 2024) | |
| sportId | No | Sport ID (1=MLB) | |
| leaderCategories | Yes | Stat category: "homeRuns", "battingAverage", "earnedRunAverage", "strikeouts", "wins", "saves", "stolenBases", etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is clear. The description adds no behavioral context beyond that, such as rate limits, authentication needs, pagination, or result-count behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It immediately states the action and the kind of resource returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only retrieval tool with complete parameter descriptions and clear safety annotations, the description is largely sufficient. The main gap is that it does not describe the shape of the leaderboard results, but that is a minor omission for this endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates category examples for leaderCategories, but adds no extra parameter meaning for fields, season, or sportId beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Get league stat leaders." It gives useful category examples and distinguishes league leaders from player-specific stats by implication, but it does not explicitly contrast itself with siblings such as mlb_get_player_stats or nhl_get_stat_leaders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool returns but offers no guidance on when to use it versus alternatives. There is no mention of prerequisites, season defaults, or when another sibling tool 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.
mlb_get_playermlb: Get playerARead-onlyIdempotent
Get detailed player information including bio, position, and optionally hydrated stats.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| hydrate | No | Hydration string, e.g. "stats(group=[hitting],type=[season])" to include stats | |
| player_id | Yes | Player ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered externally. The description adds that hydration is optional and what categories of data are returned, but says nothing about error behavior, missing IDs, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the return payload and the optional stats capability are both packed into it economically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema and fully annotated safety, the description covers purpose and payload adequately; it could note that player_id is an MLB player identifier, but the schema and required list already carry that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so player_id, fields, and hydrate are already documented, including a hydrate example. The description's mention of 'optionally hydrated stats' only echoes the hydrate parameter and adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (player) and enumerates the payload: bio, position, optionally hydrated stats. This implicitly separates it from the stats-only sibling mlb_get_player_stats, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally hydrated stats' hints that stats can be pulled through this tool rather than a stats-specific one, but there is no explicit when-to-use guidance, no exclusions, and no routing to mlb_search_players or mlb_get_player_stats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_player_statsmlb: Get player statsCRead-onlyIdempotent
Get detailed statistics for a player by stat type and group.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Stat group: "hitting", "pitching", "fielding" | |
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season year (e.g. 2024) | |
| player_id | Yes | Player ID | |
| stats_type | Yes | Stat type: "season", "career", "gameLog", "yearByYear", "seasonAdvanced", etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing behavioral beyond that: no note on whether results are paginated, how large gameLog/yearByYear responses are, or whether season is required for certain stats_type values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with zero filler. It could carry more content without becoming bloated, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with full schema coverage and no output schema, the required operational content is largely in the schema. However, the description omits what the response looks like and how stat_type/group/season interact, which an agent needs to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description echoes 'stat type and group' but adds no syntax, defaults, or interaction rules (e.g. that season matters for 'season' but not 'career') beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) plus resource (player statistics) with the two discriminating axes named (stat type and group). An agent can distinguish it from mlb_get_player or mlb_get_league_leaders, but the description never names those siblings or states the distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. needing a player_id from mlb_search_players), and no indication of when to prefer this over mlb_get_player or mlb_get_league_leaders. Usage is only implied by the phrase 'for a player'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_schedulemlb: Get scheduleARead-onlyIdempotent
Get the MLB game schedule for a date or date range. Returns games with scores, status, and teams.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Single date in YYYY-MM-DD format (e.g. 2024-04-15) | |
| fields | No | Keys to keep (comma-separated). | |
| teamId | No | Filter by team ID | |
| endDate | No | Range end date YYYY-MM-DD | |
| sportId | No | Sport ID (1=MLB, 11=AAA, 12=AA, 13=A, 14=A-short) | |
| startDate | No | Range start date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and idempotency are covered. The description adds genuinely useful context beyond that by disclosing the return contents ('games with scores, status, and teams'), which matters given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the primary purpose front-loaded and the return summary second. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only schedule tool whose safety traits are already in annotations and whose parameters are fully covered by the schema, the description covers what the tool does and what it returns. It could be stronger by noting single-game alternatives, but nothing essential for invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the date/range fields, teamId, sportId enum-like values, and fields projection. The description mentions 'date or date range' but adds no format or usage detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the MLB game schedule') plus scope ('for a date or date range'), which an agent can act on directly. It does not explicitly distinguish itself from the sibling mlb_get_game (single game) or other league schedule tools, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the naming and the date/range framing, but there is no explicit when-to-use / when-not guidance and no mention of alternatives such as mlb_get_game for a single matchup. The agent must infer context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_standingsmlb: Get standingsBRead-onlyIdempotent
Get league standings with win/loss records, division ranks, and streaks.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season year (e.g. 2024). Defaults to current season. | |
| leagueId | No | League ID(s), comma-separated (103=AL, 104=NL). Defaults to both. | |
| standingsTypes | No | Standings type: regularSeason, wildCard, divisionLeaders, etc. | regularSeason |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the shape of the payload (records, ranks, streaks), which is useful context but does not disclose season defaults, league defaults, or how standingsTypes changes output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Appropriately sized, though it sacrifices guidance for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless-required read-only standings tool with no output schema, the description is adequate but thin: it never explains the default season, the AL/NL default, or what wildCard/divisionLeaders types produce, all of which the agent must dig out of the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (fields, season, leagueId, standingsTypes) are already documented in the schema. The description adds no parameter detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (league standings) and enumerates the content returned (win/loss records, division ranks, streaks). It does not distinguish itself from the many sibling standings tools (nhl_get_standings, espn_get_standings, sportsdb_get_standings), leaving the agent to infer MLB scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of alternatives such as mlb_get_divisions or mlb_get_league_leaders. Usage is only implied by the tool name and returned-fields list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_team_rostermlb: Get team rosterCRead-onlyIdempotent
Get a team's roster with player names, positions, jersey numbers, and status.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season year | |
| team_id | Yes | Team ID | |
| rosterType | No | Roster type: active, fullSeason, 40Man, depthChart, etc. | active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile completely. The description adds only output content, not behavior: it says nothing about what rosterType changes, how season defaults behave, or whether the result is filtered or paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and resource come first and the output fields follow. It is efficient, though it stops short of any additional routing or scoping detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by listing returned fields, and annotations plus a fully documented schema cover safety and inputs. Missing context includes what 'status' means and what the non-default rosterType values return, which an agent calling this tool would reasonably want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented in the schema and the baseline is 3. The description adds no parameter-level meaning, notably omitting that rosterType defaults to 'active' and accepts values like fullSeason, 40Man, and depthChart.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a team's roster') and enumerates the returned fields (names, positions, jersey numbers, status), so it is clearly distinguishable from mlb_get_teams or mlb_get_player. It does not, however, explicitly contrast itself with the near-identical nhl_get_team_roster or other sibling roster tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., that team_id must come from mlb_get_teams), and no mention of alternatives such as mlb_get_player for individual players. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_get_teamsmlb: Get teamsBRead-onlyIdempotent
List MLB teams with their IDs, names, venues, divisions, and leagues.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season year | |
| sportId | No | Sport ID (1=MLB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered and the description's burden is lighter. The description adds the shape of the returned records (IDs, names, venues, divisions, leagues), but says nothing about pagination, result size, or whether the list is season-dependent despite a season parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the verb and resource lead and the returned attributes follow. Nothing needs to be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-required-parameter reference list with full schema coverage and annotations covering safety, the description is nearly sufficient. The only meaningful gap is not clarifying the interaction between the season/sportId parameters and the returned team set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (fields, season, sportId) are already documented in the schema, which sets the baseline at 3. The description adds no extra meaning about how fields filtering or season selection affects the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (List) and resource (MLB teams) and enumerates the payload (IDs, names, venues, divisions, leagues), so the agent knows exactly what comes back. It does not explicitly differentiate itself from other team-listing siblings such as espn_get_teams, openliga_get_teams, or sportsdb_search_teams, though the MLB prefix and the venue/division/league fields do implicitly scope it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisites, and no mention of alternative team-lookup tools. Usage is only inferable from the tool being a flat reference list, so the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mlb_search_playersmlb: Search playersBRead-onlyIdempotent
Search for players by name. Returns matching players with their IDs, teams, and positions.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Player name(s) to search for | |
| fields | No | Keys to keep (comma-separated). | |
| sportId | No | Sport ID (1=MLB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful return content (IDs, teams, positions), which is helpful given there is no output schema, but it says nothing about match behavior (partial vs exact, case sensitivity) or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the core action is front-loaded and the return summary follows immediately. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with a fully-covered schema and annotations carrying the safety profile, the description is nearly complete. It covers purpose and return shape but omits search semantics (partial matching, multi-name handling), which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (names, fields, sportId) are already documented in the schema. The description adds no syntax, format, or matching detail beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (players), scoped to MLB via the name/title. It clearly implies lookup-by-name versus the sibling mlb_get_player, but the description itself never explicitly distinguishes them, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance and names no alternatives, despite many overlapping siblings (mlb_get_player, mlb_get_team_roster, sportsdb_search_players). An agent must infer that this is the fuzzy-name entry point while mlb_get_player is the by-ID lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_categoriesmotogp: Get categoriesARead-onlyIdempotent
List the racing categories (MotoGP, Moto2, Moto3, MotoE) for a season, with their UUIDs. Use a seasonUuid from motogp_get_seasons; the returned categoryUuid feeds sessions and standings.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season_uuid | Yes | Season UUID from motogp_get_seasons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful output context (categories plus their UUIDs) but says nothing about rate limits, result size, or ordering beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: the first delivers purpose and return shape, the second delivers the input source and downstream destination. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by naming the categories and their UUIDs, and it documents the upstream/downstream data flow. The only gap is the semantics of the optional 'fields' projection parameter, which is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the season_uuid description already states 'Season UUID from motogp_get_seasons', so the description mostly repeats structured data. It adds no detail on the 'fields' key-filtering syntax beyond what the schema supplies. Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the racing categories ... for a season'), enumerates the exact values returned (MotoGP, Moto2, Moto3, MotoE), and notes the UUIDs included. It positions the tool within the MotoGP family by naming motogp_get_seasons as the source of the input, so an agent can distinguish it from siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to obtain the seasonUuid from motogp_get_seasons and that the returned categoryUuid feeds sessions and standings, which gives clear workflow placement. It stops short of stating when NOT to use it or naming a direct alternative, but no sibling offers equivalent category listing, so the guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_eventsmotogp: Get eventsARead-onlyIdempotent
List the events (Grands Prix) in a season with circuit, country and dates. Each event's UUID feeds motogp_get_sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| is_finished | No | Filter to finished events only | |
| season_uuid | Yes | Season UUID from motogp_get_seasons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety is covered. Beyond that, the description discloses what each event returns (circuit, country, dates) and that the returned UUID is reused by motogp_get_sessions — useful behavior not present in the annotations or schema, especially with no output schema. It does not cover pagination or whether all season events are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose and scope front-loaded and the chaining hint placed second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully summarizes the returned content and where the event UUID goes next, and all three parameters are schema-documented. The remaining gap — result count/pagination and how is_finished interacts with the listing — is minor for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: season_uuid, fields and is_finished are each documented, including that season_uuid comes from motogp_get_seasons. The description's season scoping is consistent with the schema but adds no syntax or format detail beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (events/Grands Prix) and narrows scope to a season, then names the returned fields (circuit, country, dates). The follow-on note that each event UUID feeds motogp_get_sessions cleanly separates it from siblings like motogp_get_seasons and motogp_get_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The season-scoped framing tells the agent this is the step after picking a season, and the UUID-feeds-sessions sentence makes the downstream use concrete. There is no explicit when-not-to-use or alternative-tool statement, but the workflow position is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_ridersmotogp: Get ridersBRead-onlyIdempotent
List MotoGP riders with their profile data (name, number, country, team). Optionally filter by category UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| category_uuid | No | Category UUID to filter riders (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is fully covered and the description need not restate it. The description adds only the set of profile fields returned, with no note on pagination, result size, or what an empty/no-match result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the resource and returned fields are front-loaded, and the optional filter follows. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with full annotation coverage and a fully documented schema, the description is sufficient. The absence of any return-shape or pagination note is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both fields and category_uuid; baseline is 3. The description restates the category UUID filter but does not clarify the 'fields' projection parameter or give UUID format examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb (List) plus resource (MotoGP riders) and the returned profile fields (name, number, country, team). It is distinguishable from f1_get_drivers and openf1_get_drivers via the MotoGP scope, but it never differentiates itself from its own sibling motogp_get_standings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'Optionally filter by category UUID,' which is a parameter note rather than a when-to-use rule. There is no mention of when to prefer this over motogp_get_standings, motogp_get_categories, or other rider/driver listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_seasonsmotogp: Get seasonsARead-onlyIdempotent
List MotoGP seasons with their UUIDs and year. The id (seasonUuid) feeds the categories/events/standings tools. current:true marks the live season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description adds genuinely useful return-shape context ('with their UUIDs and year', '`current:true` marks the live season') that no annotation provides. It says nothing about ordering, result size, or whether history is complete, so it is a modest value-add rather than rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is listed, then the downstream-ID hook, then the current-season flag. No filler and nothing that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing returns and it does so at a reasonable level (UUID, year, current flag). For a no-required-params reference list this is nearly sufficient; only ordering/pagination of the season list is unaddressed, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One optional parameter (`fields`) with 100% schema description coverage, so the schema already documents the comma-separated key filter. The description never mentions the projection parameter or its syntax, adding nothing beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (MotoGP seasons), and names the domain clearly enough to separate it from the other *_get_seasons siblings (f1, espn, sportsdb). It does not explicitly contrast itself with those siblings, but the MotoGP namespace plus 'seasons' is unambiguous about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real context for when the tool matters: the returned `id` (seasonUuid) is the input that 'feeds the categories/events/standings tools', so an agent knows this is the entry point for the MotoGP chain. It stops short of naming when NOT to use it or how it differs from motogp_get_categories as a starting point, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_session_classificationmotogp: Get session classificationARead-onlyIdempotent
Get the full classification (results) of a session: rider, team, constructor, time/gap and points. Use a session id from motogp_get_sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| test | No | Set true for test sessions (default false) | |
| fields | No | Keys to keep (comma-separated). | |
| session_id | Yes | Session id from motogp_get_sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, covering the safety profile without any help from the description. The description adds the shape of the payload (rider/team/constructor/time-gap/points) but says nothing about pagination, whether 'full' means unpaginated, or how test sessions change behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first front-loads what is returned, the second front-loads the input requirement. No filler, no restatement of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the field enumeration in the description usefully tells the agent what comes back, and the input provenance is covered. It is slightly incomplete on the two optional parameters (test, fields) and on pagination/limits for a 'full' classification, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (session_id, test, fields) are documented in the schema itself; baseline 3 applies. The description only reinforces the session_id provenance already stated in the schema and says nothing about the `test` flag or the `fields` projection, adding no meaning beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('full classification (results) of a session') and enumerates the returned fields (rider, team, constructor, time/gap, points). This clearly distinguishes it from siblings such as motogp_get_standings or motogp_get_sessions, which return season-level or session-list data rather than a single session's result order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition and routes the agent to the sibling that supplies the required input: 'Use a session id from motogp_get_sessions.' That is real usage guidance, but there is no when-not guidance or mention of how this differs from standings/classification-style siblings beyond the id requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_sessionsmotogp: Get sessionsARead-onlyIdempotent
List the sessions (practice, qualifying, race, etc.) for an event and category. Pass eventUuid from motogp_get_events and categoryUuid from motogp_get_categories. Each session id feeds motogp_get_session_classification.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| event_uuid | Yes | Event UUID from motogp_get_events | |
| category_uuid | Yes | Category UUID from motogp_get_categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the useful pipeline detail that each session id feeds motogp_get_session_classification, but says nothing about return shape, session ordering, or rate/coverage limits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, followed by input sourcing and output routing. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carrying the session-id hand-off is valuable and the input chain is fully specified. It stops short of describing what a session record contains or how to use the 'fields' projection parameter, which is a minor gap for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states 'Event UUID from motogp_get_events' and 'Category UUID from motogp_get_categories', so the description largely restates the schema. The optional 'fields' projection parameter is not explained in the description at all, leaving the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List the sessions') with concrete examples of session types (practice, qualifying, race) and scope narrowed to an event and category. It is clearly distinguishable from the sibling motogp_get_session_classification, which it explicitly hands off to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisites for the two required parameters by naming motogp_get_events and motogp_get_categories, and indicates the downstream tool that consumes the results. What's missing is any explicit 'when not to use' or alternative-tool guidance, but the chain usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motogp_get_standingsmotogp: Get standingsBRead-onlyIdempotent
Get the championship standings for a season and category (riders' or constructors' points table). Pass seasonUuid and categoryUuid.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season_uuid | Yes | Season UUID from motogp_get_seasons | |
| category_uuid | Yes | Category UUID from motogp_get_categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safe-read profile is covered. The description only adds that the result is a points table; it says nothing about ordering, tie-breaking, pagination, or whether an incomplete season yields partial standings, so it adds only marginal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, purpose first, parameters second with no filler. It is appropriately sized for a simple lookup, though the second sentence is arguably redundant with the schema's required fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say a bit more about what the standings payload contains (columns, sort order). It covers the minimum — season/category scope and table type — but leaves the return shape largely unspecified for a data-returning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so season_uuid, category_uuid, and fields are fully documented in the schema (including the upstream tools that produce the UUIDs). The description just restates the two required parameters (with mismatched casing, seasonUuid vs season_uuid) and adds no format or constraint detail, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Get the championship standings') and clarifies the two variants (riders' or constructors' points table), which helps separate it from f1_get_driver_standings / f1_get_constructor_standings. It does not explicitly name a sibling or note how it differs from other standings endpoints, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'Pass seasonUuid and categoryUuid', which is an instruction on what to supply, not when to use this tool versus alternatives. There is no when-not-to-use condition, no prerequisite about first calling motogp_get_seasons or motogp_get_categories (that hint lives only in the schema), and no mention of season/category applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nascar_get_lap_timesnascar: Get lap timesARead-onlyIdempotent
Get per-driver lap times and speeds for a specific race. Use the race_id from nascar_get_schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Season year | |
| fields | No | Keys to keep (comma-separated). | |
| race_id | Yes | Race id from nascar_get_schedule | |
| series_id | Yes | Series id: 1 = Cup, 2 = Xfinity, 3 = Craftsman Truck |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and repeatability profile is covered. The description adds nothing beyond that – no note on volume of returned rows, pagination, or whether data exists for every race – so it clears the lowered bar but does not exceed it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the core capability front-loaded, followed by the one actionable dependency. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full schema coverage, annotations and no output schema, the description covers what the tool returns and how to obtain the key identifier. The remaining gap is only the absence of any scoping detail on the returned data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the series_id enum mapping and the year range, so the schema carries the parameter burden. The description only reinforces the race_id provenance, which the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'per-driver lap times and speeds for a specific race.' It implicitly separates itself from nascar_get_live (live vs. historical race) and f1_get_lap_times, but it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite chain by telling the agent to use the race_id from nascar_get_schedule, which is genuine usage guidance. However, it gives no when-not conditions and does not contrast with nascar_get_live or f1_get_lap_times, leaving selection largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nascar_get_livenascar: Get liveARead-onlyIdempotent
Get the live race feed: current lap, flag state, laps to go, leader and per-vehicle running order. When no race is live, fields are in an idle state (flag_state 9, race_id -1).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world semantics, so the bar is lower, and the description still adds genuine behavioral information the annotations cannot: the idle-state sentinel values (flag_state 9, race_id -1) that let an agent distinguish 'no live race' from 'empty result'. It omits anything about refresh cadence or payload size, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The primary capability and its returned fields are front-loaded, and the idle-state caveat follows as a supporting clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return payload and does so by listing the key fields plus the idle-state fallback. For a zero-required-parameter, low-complexity read tool, nothing needed to invoke or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional 'fields' parameter whose schema description already covers 100% of the semantics ('Keys to keep (comma-separated)'). The description adds no further meaning about the projection syntax or valid keys, so the baseline 3 for high schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Get) plus resource (live race feed) with an explicit enumeration of what the feed contains: current lap, flag state, laps to go, leader, and per-vehicle running order. That enumeration clearly separates it from siblings like nascar_get_schedule and nascar_get_lap_times without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives real usage context: when no race is live the response degrades to an idle state (flag_state 9, race_id -1), which tells the agent the tool is safe to call at any time and how to detect the no-race case. It does not name alternatives or explicit when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nascar_get_schedulenascar: Get scheduleARead-onlyIdempotent
Get the NASCAR race schedule for a season and series, including track, dates, winners and stage info for completed races.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Season year (e.g. 2026) | |
| fields | No | Keys to keep (comma-separated). | |
| series_id | Yes | Series id: 1 = Cup, 2 = Xfinity, 3 = Craftsman Truck |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower; the description adds value by disclosing the payload shape — track, dates, winners, and stage info for completed races — which matters because there is no output schema. It does not mention pagination, rate limits, or auth, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core operation and then lists supplemental return content. Every clause is informative and none is redundant with the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields (track, dates, winners, stage info) for a simple three-parameter read tool, which is most of what an agent needs. It stops short of noting result volume, ordering, or how the fields parameter narrows output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: year, series_id (with the 1=Cup/2=Xfinity/3=Truck legend), and fields are all documented in the schema. The description only restates 'season and series' at a high level and adds nothing about the comma-separated fields projection, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get the NASCAR race schedule) and scopes it precisely to a season and series, which cleanly separates it from nascar_get_lap_times and nascar_get_live. It does not name a sibling to route against, but the NASCAR-specific framing and the season/series scope make the tool's identity unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for a season and series' and by the note that winner/stage detail applies to 'completed races', suggesting this is a past/results-oriented schedule call. There is no explicit statement of when to prefer this over nascar_get_live or a lap-times call, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_gamencaa: Get gameARead-onlyIdempotent
Get detailed information about a specific NCAA game, including play-by-play, box score, and stats.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| game_id | Yes | NCAA game ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld behavior. The description adds that the response includes play-by-play, box score, and stats, which is useful content context, but it does not discuss auth, rate limits, or return shape; with annotations carrying the safety profile this is a moderate addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no filler; it states the action and the content scope immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with fully documented parameters and annotations covering safety, the description supplies the key content scope (play-by-play, box score, stats). It could say more about the optional fields parameter or sibling alternatives, but no output schema exists and the core call is adequately framed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines sport, game_id, and fields. The description does not add syntax or constraints beyond identifying the tool as game-specific, matching the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Get') and resource ('specific NCAA game') and enumerates the detailed content included (play-by-play, box score, stats). It does not name any sibling endpoint, so explicit differentiation is left to inference, but the 'specific game' scope separates it from scoreboard/schedule tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving details about one game but gives no explicit when-to-use or when-not-to-use guidance and does not mention alternatives like ncaa_get_scoreboard or ncaa_get_stats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_newsncaa: Get newsBRead-onlyIdempotent
Get the latest NCAA news, optionally filtered by sport.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | No | Sport name, e.g. "football", "basketball". Omit for all sports. | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing beyond that: no indication of recency window, result volume, pagination, or how "latest" is bounded, which is the kind of context that would earn credit here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and scope front-loaded and zero filler. Appropriately sized for a simple two-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only news fetch with full schema documentation and annotations covering safety, the description is largely sufficient. The only real shortfall is the absence of any disambiguation from the near-identical espn_get_news sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both "sport" and "fields" are documented with examples and the omit-for-all behavior. The description's "optionally filtered by sport" merely restates what the schema already says, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the latest NCAA news") and names the optional filter, so the agent knows exactly what the tool returns. It does not distinguish itself from the sibling espn_get_news, which covers a similar news surface, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a basic use case (fetch NCAA news) and mentions the sport filter, but offers no when-to-use guidance, no exclusions, and no routing advice against the closely related espn_get_news sibling. An agent must infer selection on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_rankingsncaa: Get rankingsBRead-onlyIdempotent
Get NCAA rankings/polls (AP, Coaches, CFP, etc.) for a sport.
| Name | Required | Description | Default |
|---|---|---|---|
| poll | No | Poll name, e.g. "ap", "coaches", "cfp" | |
| week | No | Week number | |
| year | No | Year (e.g. 2024) | |
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| division | No | Division code, e.g. "fbs", "d1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering the safety and repeat-call profile. The description adds the set of poll types but says nothing extra about behavior, e.g. whether an omitted poll returns all polls or how weeks/years scope results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and scope front-loaded and zero filler. Nothing is repeated and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no output schema, the definition is minimally adequate: annotations carry the safety profile and the schema documents all parameters. It nevertheless omits useful context such as what happens when poll/week/year are omitted or how fields filtering behaves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including poll, week, year, division, and fields is already documented in the schema. The description's poll examples ('AP, Coaches, CFP') loosely reinforce the poll parameter but add no syntax or default behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (NCAA rankings/polls) and names concrete poll examples (AP, Coaches, CFP). It implicitly differentiates from the sibling ncaa_get_standings by using 'rankings/polls' rather than standings, but never says so explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives such as ncaa_get_standings or espn_get_standings. The only contextual cue is 'for a sport', which merely echoes the required parameter rather than telling the agent when this tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_schedulencaa: Get scheduleBRead-onlyIdempotent
Get a team's NCAA schedule for a season.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year (e.g. 2024) | |
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | NCAA team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior, so the description carries a lower burden. Yet it adds no behavioral context beyond the annotations—such as default season behavior, return format, or pagination—offering zero value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for its content and avoids clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, full schema coverage, and no output schema, the description is minimally adequate. It fails to clarify default season behavior or what the schedule includes (e.g., past vs. future games), which are relevant for an agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no meaning beyond what the schema provides (e.g., it doesn't explain valid formats for 'year' or the purpose of the 'fields' parameter), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('a team's NCAA schedule for a season'), clearly distinguishing it from most sibling tools. However, it does not differentiate from closely related tools like ncaa_get_scoreboard or ncaa_get_game, leaving room for confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., ncaa_get_scoreboard, ncaa_get_game, or espn_get_team_schedule). There are no exclusions, prerequisites, or context about appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_scoreboardncaa: Get scoreboardBRead-onlyIdempotent
Get the NCAA scoreboard for a sport and division. Returns games with scores, status, and basic info.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY/MM/DD format (e.g. 2024/01/15). Defaults to today. | |
| sport | Yes | Sport name, e.g. "football", "basketball", "baseball", "soccer", "hockey", "lacrosse" | |
| fields | No | Keys to keep (comma-separated). | |
| division | Yes | Division code, e.g. "fbs", "fcs", "d1", "d2", "d3" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered without the description. The description adds a return-content summary ('games with scores, status, and basic info'), which is useful given there is no output schema, but it says nothing about live vs final scores, refresh behavior, or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action, and both sentences carry information. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only scoreboard call with full schema coverage, this is nearly sufficient; the return summary stands in for the missing output schema. It falls short only on live/real-time behavior and how many games to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters, including the date format and field keys, are already documented in the schema. The description only restates the required sport/division scope and adds no syntax or default details beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get the NCAA scoreboard) and scopes it by sport and division, which is clearly distinguishable from siblings like ncaa_get_schedule or ncaa_get_game. It does not, however, explicitly name or rule out those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and no alternatives. With ncaa_get_schedule, ncaa_get_game, espn_get_scoreboard and ncaa_get_rankings all in the sibling list, the agent receives no signal on why this tool should be chosen over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_standingsncaa: Get standingsBRead-onlyIdempotent
Get NCAA standings for a sport and division, optionally for a specific year.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year (e.g. 2024) | |
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| division | No | Division code, e.g. "fbs", "d1" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety and repeatability profile is fully covered. The description adds nothing further about return shape, pagination, season availability, or how stale/live data behaves, so it does not meaningfully exceed the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and resource come first. The trailing 'optionally for a specific year' is slightly redundant with the schema's optional year field but is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries no information about what standings data is returned (columns, grouping, ranking order), and it never says which seasons/years are valid. For a read-only lookup tool with full schema coverage this is minimally adequate but leaves the agent guessing about the result set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (year, sport, fields, division) are already documented with examples in the schema. The description only echoes sport/division/year and adds no format or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get NCAA standings') with scope qualifiers (sport, division, year), which clearly separates it from ncaa_get_rankings, ncaa_get_stats and ncaa_get_scoreboard. It does not, however, explicitly name or contrast itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage cue is the phrase 'optionally for a specific year.' There is no statement of when to prefer this over ncaa_get_rankings or ncaa_get_stats, no prerequisites, and no exclusions — the agent must infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_statsncaa: Get statsCRead-onlyIdempotent
Get player or team statistics for an NCAA sport/division.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year (e.g. 2024) | |
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| division | Yes | Division code, e.g. "fbs", "d1" | |
| stat_type | No | Stat type: "individual" or "team" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety/idempotency profile is covered. The description adds nothing beyond that — no note on what stats are returned, whether year defaults to the current season when omitted, or what happens if stat_type is left out. For a 5-param tool with no output schema, that is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity is also the source of the missing usage and behavior detail rather than being deliberately tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully documented in the schema, but with no output schema and no annotations about response shape, the description leaves unclear what a 'statistics' payload contains and how the optional stat_type/year omission is handled. Minimum viable, not complete for a 5-param stats query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents year, sport, fields, division and stat_type with examples and defaults. The description only echoes the player/team distinction already captured by stat_type. Baseline 3 is appropriate; it adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get player or team statistics') and scopes it to NCAA sport/division, so the agent knows exactly what data comes back. It does not differentiate from close siblings like ncaa_get_standings or ncaa_get_rankings, which also return aggregate NCAA data — a reader must infer the split from the stat_type parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing is given. In a family with ncaa_get_standings, ncaa_get_rankings and ncaa_get_game, the description offers no signal for choosing this tool over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ncaa_get_teamsncaa: Get teamsBRead-onlyIdempotent
Get NCAA teams in a division, optionally filtered by conference.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | Yes | Sport name, e.g. "football", "basketball" | |
| fields | No | Keys to keep (comma-separated). | |
| division | Yes | Division code, e.g. "fbs", "d1" | |
| conference_id | No | Conference ID to filter by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and idempotency profile is covered. The description adds the division/conference scoping context but says nothing about pagination, result size, or what a team record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the resource and both scope qualifiers appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with full schema coverage and no output schema, the description is minimally sufficient. It lacks sibling differentiation and any hint about result shape or pagination, which matters given how many similar 'get teams' tools exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the four parameters is documented in-schema (sport, division, conference_id, fields). The description only echoes the division and conference semantics, adding no format or example beyond what the schema already supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (NCAA teams) with the scoping dimension (division) and optional filter (conference). It does not, however, distinguish itself from the many other team-listing siblings (espn_get_teams, mlb_get_teams, formulae_get_teams), relying on the name prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of prerequisites (e.g., conference_id not being required), and no routing to alternative team tools. Usage is only implied by the word 'optionally'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_draftnhl: Get draftBRead-onlyIdempotent
Get the current NHL draft rankings and prospect information.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety and caching profile is covered by structured data. The description's only added behavioral signal is the scope word 'current', which implies no historical draft data; it says nothing about freshness, permissions, or result shape. Modest added value over annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the resource front-loaded and no filler. It is arguably under-specified rather than over-long, but it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with full schema coverage and annotations carrying the safety profile, the description is minimally adequate. It doesn't clarify what 'rankings' versus 'prospect information' actually returns, whether past drafts are available, or how the fields projection applies, which leaves the agent with some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'fields' parameter, so the schema already documents that it takes comma-separated keys to keep. The description adds no parameter-level meaning beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('NHL draft rankings and prospect information'), so an agent knows this returns draft/prospect data rather than player or standings data. It does not name a sibling or explain how it relates to them, but the resource is distinctive enough within the NHL tool set that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'current' (this is the live/upcoming draft view) but there is no explicit when-to-use guidance, no statement that historical drafts are unsupported, and no alternative named. The agent can infer the context from the resource name but must guess the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_game_boxscorenhl: Get game boxscoreBRead-onlyIdempotent
Get the box score for a specific NHL game. Includes goals, assists, shots, saves, and other stats.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_id | Yes | NHL game ID (e.g. 2023020001) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description usefully adds that the response contains goals, assists, shots, and saves, but says nothing about required permissions, rate limits, or behavior for an invalid game_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by return content; nothing is wasted. "and other stats" is slightly vague filler but does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries some burden for describing returns, which it does only partially ("other stats" is undefined). With annotations covering safety and the schema covering inputs, the definition is adequate but leaves the return shape loosely specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – both game_id format and the fields projection key are documented in the schema itself. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the box score for a specific NHL game") and enumerates the stat categories included, so the purpose is unambiguous. It does not differentiate from near-identical siblings such as mlb_get_game_boxscore or euroleague_get_game_boxscore, whose names differ only by league.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no note about which sibling to pick for related data (e.g. nhl_get_game_landing or nhl_get_game_play_by_play). Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_game_landingnhl: Get game landingBRead-onlyIdempotent
Get the game landing page data for an NHL game. Includes summary, three stars, scoring plays, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_id | Yes | NHL game ID (e.g. 2023020001) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds a content overview (summary, three stars, scoring plays, and more) beyond the annotations, but it still does not describe return format, pagination, or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the core purpose. 'And more' is slightly vague, but overall there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description gives some useful content overview but omits differentiation from sibling NHL game endpoints and when to use this one. It is adequate but leaves clear gaps for an agent deciding among similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are documented in the input schema. The description adds no additional parameter meaning or syntax beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get the game landing page data for an NHL game') and lists some included content. It does not explicitly differentiate from sibling endpoints like nhl_get_game_boxscore or nhl_get_game_play_by_play, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no prerequisites, and no mention of alternative tools. It only says what the tool does, leaving the agent to infer when to select it over related NHL game endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_game_play_by_playnhl: Get game play by playARead-onlyIdempotent
Get the full play-by-play feed for an NHL game. Contains every event (shots, goals, penalties, faceoffs, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| game_id | Yes | NHL game ID (e.g. 2023020001) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and repeatability profile is covered. The description adds the useful scope fact that the feed includes every event type, but says nothing about feed size, ordering, or filtering behavior beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, zero filler. The second sentence earns its place by enumerating the event types a caller can expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return, and it does so at a high level by naming the event types in the feed. It is adequate for a read-only fetch whose safety profile is already declared by annotations, though it omits any sense of payload size or structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with game_id documented (including an example ID format) and fields explained as comma-separated keys. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Get the full play-by-play feed for an NHL game' — and the follow-up sentence enumerates the event types contained. It clearly distinguishes the tool in spirit from summary siblings like nhl_get_game_boxscore, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'contains every event' suggests this is the tool for granular, event-level data rather than a boxscore summary. There is no explicit when-to-use or when-not-to-use guidance, and no sibling (e.g. nhl_get_game_boxscore, nhl_get_game_landing) is named for contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_playernhl: Get playerBRead-onlyIdempotent
Get detailed information about an NHL player -- bio, career stats, current season stats, awards.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| player_id | Yes | NHL player ID (e.g. 8478402 for Connor McDavid) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and idempotency profile is covered without description help. The description's enumeration of returned data categories is the main added value, but it says nothing about behavior on an invalid player_id or what the fields parameter filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and then the payload. Every clause earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and full schema coverage on both parameters, the remaining burden is return-shape disclosure, which the description partially meets by listing the stat categories. A note on how the fields projection interacts with those categories would close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: player_id documents the NHL ID with an example (8478402 for Connor McDavid) and fields documents comma-separated keys. The description adds nothing about either parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get) and resource (NHL player) and enumerates the payload (bio, career stats, current season stats, awards), so the agent knows exactly what comes back. It stops short of differentiating itself from the very similar sibling nhl_get_player_game_log, which is the one place confusion is plausible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use statement at all. With a near-twin sibling (nhl_get_player_game_log) in the toolset, the definition gives the agent no basis for choosing between a full player profile and a game log.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_player_game_lognhl: Get player game logBRead-onlyIdempotent
Get the game-by-game stats log for an NHL player in a given season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season identifier, e.g. "20232024" (defaults to current season) | |
| game_type | No | Game type: 2 = regular season (default), 3 = playoffs | |
| player_id | Yes | NHL player ID (e.g. 8478402) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no behavioral context such as pagination, rate limits, auth requirements, or output granularity beyond the generic phrase "game-by-game stats log." It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to identifying the tool's purpose and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read-only tool with no output schema, the description is minimal. It conveys the general return type (game-by-game stats log) but does not explain what stats are included, pagination behavior, or return structure. Annotations and schema cover safety and parameter details, so this is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including formats, defaults, and game_type values. The description mentions player and season but adds no meaning beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Get") and resource ("game-by-game stats log for an NHL player") with a clear scope ("in a given season"). It distinguishes itself from siblings like nhl_get_player and nhl_get_team_stats implicitly, but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool returns; it provides no guidance on when to use it versus alternatives, no prerequisites, and no exclusions. Usage is inferable from the purpose but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_schedulenhl: Get scheduleBRead-onlyIdempotent
Get the NHL schedule for a given date. Returns all games, start times, teams, and venues.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD format (defaults to today) | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful context about what comes back (all games, start times, teams, venues), but says nothing about pagination, date-range limits, or off-season/empty-day behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core action front-loaded. The second sentence earns its place because there is no output schema to explain the payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial two-parameter read with no output schema, the description covers the action, the date scoping, and the shape of the return value. Only the league-wide vs team-schedule distinction and any empty-result behavior are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the YYYY-MM-DD pattern and today default. The phrase 'for a given date' reinforces the date parameter but adds no syntax or default detail beyond the schema, and the fields parameter is unmentioned. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get the NHL schedule) plus the scoping dimension (a given date), which is enough to distinguish it from stat/draft siblings. It does not, however, differentiate itself from the closely named nhl_get_team_schedule, leaving the agent to infer the league-wide vs team-scoped distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never mentions that this is the league-wide daily slate nor points to nhl_get_team_schedule or nhl_get_scores for the alternative views the agent will likely need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_scoresnhl: Get scoresARead-onlyIdempotent
Get live and final scores for today's NHL games.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds that results include live (in-progress) and final states, which is useful context, but says nothing about refresh cadence, rate limits, or behavior when no games are scheduled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the scope constraint appended. No filler or redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple no-required-param scoreboard read whose annotations cover safety and which has no output schema. Still, it omits what the timezone/'today' boundary means and whether live games include partial scores, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional 'fields' parameter is fully documented in the schema (100% coverage), so the schema does the heavy lifting. The description adds no meaning about what field keys are valid or how filtering behaves, matching the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (scores) with scope qualifiers: NHL, today's games, live and final. This separates it well from nhl_get_schedule and nhl_get_game_boxscore, though it does not name a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Today's games' and 'live and final' imply when the tool is useful (a same-day scoreboard lookup), but there is no explicit when-to-use guidance, no exclusions, and no pointer to alternatives like nhl_get_schedule or nhl_get_standings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_standingsnhl: Get standingsBRead-onlyIdempotent
Get NHL standings. Optionally filter by date or season.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD format (defaults to today) | |
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season identifier, e.g. "20232024" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, covering the safety profile. The description adds nothing behavioral beyond that: no indication of whether a date returns a historical snapshot, whether season and date interact, or how missing seasons resolve. This is largely a restatement of the name plus a filter hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding, with the core action front-loaded before the optional filtering note. It is efficient, though it borders on terse given what it leaves unsaid.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three documented, all-optional parameters and no output schema, the agent still has no idea of the return shape or what a standings payload contains. For a simple read-only list tool this is minimally adequate, but the absence of an output schema means the description could have carried more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the format details (YYYY-MM-DD, "20232024" season id, comma-separated fields) are all in the schema. The description names date and season but omits fields and adds no semantics beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (NHL standings), and the league qualifier separates it from the many other *_get_standings siblings. It does not clarify what the standings contain (conference/division/points) or how it differs from nhl_get_scores or nhl_get_team_stats, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Optionally filter by date or season" implies the filtering scenarios but is really parameter usage rather than when-to-use guidance. There is no statement of when to prefer this over sibling standings tools or nhl_get_schedule, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_stat_leadersnhl: Get stat leadersCRead-onlyIdempotent
Get the NHL stat leaders for a given category (points, goals, assists, wins, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season identifier, e.g. "20232024" | |
| category | No | Stat category: "points", "goals", "assists", "plusMinus", "gaa", "savePctg", etc. (defaults to "points") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing beyond that: no ranking/limit behavior, no ordering, no indication of how many leaders are returned or how ties are handled. It neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or restatement of the tool title. It is efficient, though its brevity is partly the cause of the gaps noted in other dimensions rather than a virtue of tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety, a fully documented schema and no output schema, the description is minimally sufficient for an agent to invoke the tool. It omits any guidance on season defaults, result size, or relationship to sibling NHL stats tools, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (fields, season, category) are already documented in the schema, including the default for category. The description's category examples duplicate what the schema already lists, adding no syntax, format or interaction detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (NHL stat leaders) and scopes it to a category with concrete examples. It is clear on its own, though it does nothing to distinguish itself from analogous tools like mlb_get_league_leaders or openliga_get_top_scorers that an agent may see in the same catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as nhl_get_team_stats, nhl_get_player, or nhl_get_standings, nor on prerequisites (e.g. that season is optional, or which categories are valid). The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_team_rosternhl: Get team rosterBRead-onlyIdempotent
Get the roster for an NHL team. Returns forwards, defensemen, and goalies with jersey numbers and positions.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | No | Season identifier, e.g. "20232024" (defaults to current season) | |
| team_abbrev | Yes | Three-letter team abbreviation (e.g. "TOR", "MTL", "BOS") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and idempotency profile is covered structurally. The description adds value by disclosing the return composition (forwards, defensemen, goalies with jersey numbers and positions), which partially compensates for the absent output schema, but says nothing about defaulting season behavior or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and followed by the return shape. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only roster tool with full schema coverage and safety annotations, the description covers what an agent needs, and its mention of the returned position groups partially substitutes for the missing output schema. It only lacks guidance on alternatives and season defaulting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (team_abbrev, season, fields) are already documented in the schema with examples and patterns. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the roster for an NHL team") and names the domain, so it is distinguishable from mlb_get_team_roster and espn_get_team_roster by scope. It does not, however, contrast itself against those functionally similar siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing tells the agent when to prefer this over nhl_get_team_stats, nhl_get_team_schedule, or espn_get_team_roster. The use case is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_team_schedulenhl: Get team scheduleBRead-onlyIdempotent
Get the monthly schedule for an NHL team.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Month in YYYY-MM format (defaults to current month) | |
| fields | No | Keys to keep (comma-separated). | |
| team_abbrev | Yes | Three-letter team abbreviation (e.g. "TOR", "MTL", "BOS") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds no further behavioral context (e.g., return format, pagination, rate limits, or what happens with missing months). It merely restates the purpose without enriching transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and resource. There is no redundant or filler content; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (simple read operation), rich schema coverage, and annotations covering safety, the description is minimally adequate. However, it could better distinguish this tool from league-wide schedule tools and note that the month defaults to the current month (though the schema already says so). It lacks any output expectation, which is acceptable without an output schema but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for month (YYYY-MM format, defaults to current month) and team_abbrev (three-letter abbreviation). The description adds no additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (monthly schedule), and scope (for an NHL team). This distinguishes it from the league-wide sibling nhl_get_schedule, but does not explicitly name alternatives. The purpose is clear enough for an agent to understand the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. It does not mention alternatives such as nhl_get_schedule or espn_get_team_schedule, nor does it state prerequisites or constraints. Usage must be inferred solely from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhl_get_team_statsnhl: Get team statsBRead-onlyIdempotent
Get current-season stats for an NHL team (goals, shots, power play, penalty kill, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_abbrev | Yes | Three-letter team abbreviation (e.g. "TOR", "MTL", "BOS") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds the current-season scope and sample stat categories, but says nothing about the shape of the response, aggregation level (team totals vs. splits), or whether the data is live or cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the resource and scope come first. The trailing 'etc.' slightly weakens precision about what the stat set actually contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, low-complexity read lookup with full annotation coverage and no output schema, the description supplies enough to call the tool correctly. The remaining gap—what exactly a 'stat' covers and in what form—is minor at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both team_abbrev (with format example and length bounds) and fields (comma-separated keys) are fully documented in the schema. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get current-season stats for an NHL team') and scopes it to the current season, with examples of the stat categories returned. It is clearly distinguishable from nhl_get_standings, nhl_get_team_roster, and nhl_get_team_schedule by resource, though it never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated prerequisites, and no routing to alternatives such as nhl_get_standings for standings or nhl_get_team_roster for rosters. The agent must infer the boundary from the word 'stats' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_heroesopendota: Get heroesARead-onlyIdempotent
List all Dota 2 heroes with id, name, primary attribute and roles.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that the result is the full hero roster with specific attributes, but says nothing about pagination, caching, or the effect of the fields parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the purpose and returned content are stated immediately and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by naming what each hero entry contains (id, name, primary attribute, roles). It is adequate for a simple read-only catalog tool, though it omits whether the full list is returned unpaginated and how the fields filter interacts with the default shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% ('Keys to keep (comma-separated).'), so the single parameter is fully documented structurally. The description briefly enumerates available attributes (id, name, primary attribute, roles), which loosely maps to the fields keys but adds no real syntax or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all Dota 2 heroes') and even names the returned attributes. It is clearly distinguishable from siblings like opendota_get_hero_stats or opendota_get_player_heroes by resource, though it does not explicitly call out that distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the tool for fetching a static hero catalog as opposed to per-player or per-match hero data. There is no explicit when-to-use statement, no exclusions, and no mention of the more specific opendota hero tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_hero_statsopendota: Get hero statsARead-onlyIdempotent
Get hero stats / current meta: per-bracket pick and win counts for every hero.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds useful content scope ('per-bracket pick and win counts for every hero') but does not disclose return format, pagination, rate limits, or other behavioral traits beyond the annotations. With annotations carrying the main burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the purpose and then the specific return content. No filler, no redundancy, and the scope is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a single optional parameter, the description does a good job stating what data is returned ('per-bracket pick and win counts for every hero'). It omits details like default field behavior or return aggregation format, but those are minor for a simple read-only stats tool whose safety profile is already in annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional 'fields' parameter is documented by the schema itself. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get hero stats') and immediately clarifies scope with 'per-bracket pick and win counts for every hero', which distinguishes it from hero-list siblings like opendota_get_heroes. An agent can tell what data this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current meta' implies a usage context, but there is no explicit when-to-use guidance, no exclusions, and no mention of sibling alternatives such as opendota_get_heroes or opendota_get_player_heroes. The implied usage is clear enough to be minimally viable, but routing between similar tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_matchopendota: Get matchBRead-onlyIdempotent
Get full detail for a Dota 2 match: players, heroes, K/D/A, items, gold/xp, objectives.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| match_id | Yes | Match id (e.g. from opendota_get_pro_matches) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds value by enumerating the returned payload categories, which is useful behavioral context, but it omits any note on cost, rate limits, or error behavior for invalid match ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a verb, qualifier, and colon-separated list of contents. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates what the match detail contains, and both parameters are documented in the schema. Given the simple two-parameter shape and annotation coverage, this is nearly complete, missing only explicit usage routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both match_id and fields are already documented in the schema including the sourcing hint for match_id. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (full detail for a Dota 2 match) and enumerates the returned data (players, heroes, K/D/A, items, gold/xp, objectives), making it distinguishable from the match-listing siblings like opendota_get_pro_matches. It stops short of naming a sibling for contrast, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternatives. The only hint about the match_id source lives in the schema property text ('e.g. from opendota_get_pro_matches'), not in the description itself, so the description carries no usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_playeropendota: Get playerARead-onlyIdempotent
Get a player's profile and aggregate stats by Steam32 account id (rank, MMR estimate, profile).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| account_id | Yes | Steam32 account id (from opendota_search_players) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds that the result is aggregate profile/stat data, but says nothing about rate limits, auth, or the API's caching behavior that would enrich the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource and the identifier come first and the returned fields are appended in parentheses. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read with no output schema, the description names the main returned values (rank, MMR estimate, profile), which partially compensates for the absent output schema. It is essentially adequate, with only minor room to describe the shape of the aggregate stats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both account_id (Steam32 id) and fields (comma-separated keys) are already documented in the schema. The description adds no syntax or meaning beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a player's profile and aggregate stats) plus the identifier used (Steam32 account id) and the fields returned (rank, MMR estimate, profile). This clearly separates it from search tools, though the text does not name a sibling explicitly the way a 5 would.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you need a Steam32 account id, and the schema notes it comes from opendota_search_players. There is no explicit when-to-use/when-not statement or comparison against alternatives such as opendota_search_players in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_player_heroesopendota: Get player heroesBRead-onlyIdempotent
Get a player's per-hero stats (games, win rate, last played).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| account_id | Yes | Steam32 account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the returned data shape, but says nothing about OpenDota API-key/auth requirements, rate limits, or how many heroes are returned. With annotations carrying the safety burden, this is a reasonable 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero filler, front-loaded with the verb and resource. It is efficient, though the extreme brevity is part of why usage and behavior context are thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the returned fields (games, win rate, last played), which is exactly what an agent needs for a simple read-only lookup. It could still mention auth or result ordering, but it is largely complete for a two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: account_id ('Steam32 account id') and fields ('Keys to keep, comma-separated') are both documented in the schema. The description adds no parameter-level detail beyond that (e.g., what keys 'fields' accepts), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a player's per-hero stats') and even names the payload ('games, win rate, last played'), which distinguishes it from siblings like opendota_get_player_matches and opendota_get_player_win_loss. It never explicitly names those alternatives, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no routing to the obvious alternatives (get_player_win_loss for aggregate W/L, get_player_matches for match history). The usage context is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_player_matchesopendota: Get player matchesBRead-onlyIdempotent
Get a player's recent matches (hero, result, K/D/A, duration). Use limit to cap the list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches (default 20) | |
| fields | No | Keys to keep (comma-separated). | |
| account_id | Yes | Steam32 account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the description only needs to add context. It contributes the fact that results are 'recent' matches with a specific field set, but says nothing about ordering, pagination behavior beyond the cap, or how far back 'recent' reaches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence plus a short second sentence; the core purpose is front-loaded and nothing is padded. The second sentence is close to duplicating the schema's limit description, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter list tool with no output schema, the description gives a useful field preview but omits ordering (most recent first?), the meaning of 'recent', and how the fields parameter changes the response. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented in the schema itself, including the default of 20 and the min/max on limit. The description's note about using limit to cap the list merely restates the schema and says nothing about the fields or account_id parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a player's recent matches') and previews the returned fields (hero, result, K/D/A, duration), which makes it distinguishable from generic siblings like opendota_get_player or opendota_get_match. It does not, however, explicitly contrast itself with the other player-scoped siblings such as opendota_get_player_heroes or opendota_get_player_win_loss.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only directive is 'Use `limit` to cap the list', which is parameter usage rather than tool-selection guidance. There is no statement of when this tool is preferable to opendota_get_player, opendota_get_player_heroes, or opendota_get_match, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_player_win_lossopendota: Get player win lossBRead-onlyIdempotent
Get a player's overall win/loss record.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| account_id | Yes | Steam32 account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety and idempotency profile is covered. The description adds the word 'overall,' implying aggregation across all matches rather than per-match filtering, but does not disclose return format, auth needs, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It delivers the essential purpose immediately and is appropriately sized for a simple read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read tool with full schema coverage and annotations covering safety, the description is minimally adequate. However, without an output schema, it could do more to clarify the shape of the returned win/loss record (e.g., wins, losses, win rate).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the account_id and fields parameters are already documented in the schema. The description adds no additional parameter semantics, which is acceptable at baseline 3 when the schema fully covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get a player's overall win/loss record.' It clearly separates this tool from broader siblings like opendota_get_player_matches or opendota_get_player_heroes, but it does not explicitly name an alternative or explain the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, and no prerequisites or exclusions are mentioned. The agent must infer from the name and description that this is the right choice for a summary win/loss aggregate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_pro_leaguesopendota: Get pro leaguesBRead-onlyIdempotent
List Dota 2 leagues / tournaments with id, name and tier.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile, so the bar is lower. The description adds that results carry id, name, and tier, but says nothing about pagination, ordering, or result size for this open-world list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the verb and resource with zero padding. It is appropriately sized, though terse enough that no usage context is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool whose annotations cover the safety profile and whose single parameter is fully documented in the schema, this is nearly complete. The returned fields are even named, so an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional 'fields' parameter, so the schema already documents it. The description adds no filtering or field-selection syntax beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Dota 2 leagues / tournaments') plus the fields returned (id, name, tier). The 'Dota 2' qualifier distinguishes it from the many other sports-league siblings. It does not, however, distinguish it from its closer opendota siblings like get_pro_matches or get_pro_teams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no alternatives named, and no conditions given. The agent must infer from the name alone that this is the roster-of-leagues lookup versus get_pro_matches or get_pro_teams.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_pro_matchesopendota: Get pro matchesARead-onlyIdempotent
Get recent professional Dota 2 matches (teams, league, duration, winner). Use a match_id with opendota_get_match for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds which fields come back, but says nothing about result limits/pagination or how 'recent' is bounded, which matters for a live pro-match feed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the primary purpose is front-loaded ahead of the sibling pointer. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param list endpoint with annotations carrying the safety profile and no output schema, the description is nearly sufficient: it names the resource, the scope, the returned fields, and the sibling alternative. Only the 'recent' window and any result cap are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the sole optional 'fields' parameter is already documented by the schema. The description adds no syntax, defaults, or projection examples beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get recent professional Dota 2 matches') and even previews the returned fields (teams, league, duration, winner). It explicitly names the sibling opendota_get_match for the detail-view case, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the detail case: 'Use a match_id with opendota_get_match for full detail,' which tells the agent when to prefer the sibling. It stops short of stating when NOT to use this tool (e.g., no filtering options beyond fields), leaving some inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_get_pro_teamsopendota: Get pro teamsBRead-onlyIdempotent
List professional Dota 2 teams with rating, wins/losses and last match time.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and idempotency are covered. The description adds the returned field set, which is useful, but says nothing about result limits, pagination, or whether the list is exhaustive — moderate added value against an already-covered safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and returned fields come first and nothing is repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, zero-required-parameter list tool with no output schema, naming the returned fields gives the agent enough to predict the response shape. Only minor gaps remain (ordering, pagination), which is why it falls short of 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter ('fields') and schema description coverage is 100%, so the schema already documents it. The description adds no syntax or default guidance for field selection, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('professional Dota 2 teams') and previews the payload (rating, wins/losses, last match time). The Dota 2 framing implicitly separates it from other sport-team tools, but it never explicitly names a sibling like opendota_get_pro_matches or espn_get_teams to route the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus alternatives (e.g. opendota_get_pro_matches, espn_get_teams) nor any prerequisites or exclusions. Usage is only inferable from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opendota_search_playersopendota: Search playersARead-onlyIdempotent
Search for Dota 2 players by persona name. Returns account_id values for use with the player tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Player persona name to search | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeatability are covered. The description adds the notable fact that the result is a set of account_id values, which matters because there is no output schema, but it says nothing about match fuzziness, result caps, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the search scope is stated before the downstream-usage note. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only lookup with annotated safety and no output schema, the description covers purpose, input, and output shape. Minor gaps remain around matching semantics and result limits, which an agent might otherwise have to discover by trial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two parameters, so the schema already documents both. The description restates the query semantics (persona name) and adds nothing about the optional 'fields' projection beyond the schema's own wording, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Search) plus resource (Dota 2 players) plus the search key (persona name), and it names the output (account_id). The opendota_ prefix and the phrase 'the player tools' clearly differentiate it from opendota_get_player and from the other sport-specific search_players siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives real usage context: this is a lookup whose account_id output feeds the player tools, which implies a use-it-first workflow. It stops short of explicit when-not guidance (e.g. don't use it when you already have an account_id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_car_dataopenf1: Get car dataARead-onlyIdempotent
Get detailed car telemetry: speed, RPM, gear, throttle, brake, DRS. WARNING: This endpoint returns massive amounts of data (multiple samples per second per car). Always use date_gte and date_lte filters to limit the time window, ideally to a few seconds or a single lap.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| date_gte | No | Start datetime filter (ISO 8601, e.g. '2024-03-02T14:00:00'). Highly recommended to limit data volume. | |
| date_lte | No | End datetime filter (ISO 8601, e.g. '2024-03-02T14:00:10'). Highly recommended to limit data volume. | |
| speed_gte | No | Minimum speed in km/h (speed>=value) | |
| speed_lte | No | Maximum speed in km/h (speed<=value) | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number (highly recommended) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent, so the safety profile is covered; the description adds the genuinely useful behavioral fact that this endpoint returns massive, high-frequency data and must be time-bounded. It doesn't discuss pagination, rate limits or response shape, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste, with the warning and its remedy front-loaded after the one-line purpose. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and full schema coverage, the description supplies the one thing the structured fields can't: the data-volume hazard and how to avoid it. Minor gaps remain around return format and pagination, but nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries a description, including the same 'highly recommended to limit data volume' note for date filters. The description reiterates that advice and implies per-car granularity via driver_number, but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get detailed car telemetry') and enumerates the exact fields returned (speed, RPM, gear, throttle, brake, DRS), which clearly separates it from siblings like openf1_get_laps, openf1_get_stints and openf1_get_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance: always apply date_gte and date_lte, ideally narrowed to a few seconds or a single lap. It does not name an alternative tool for coarse-grained data (e.g. laps or intervals), so the routing guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_driversopenf1: Get driversARead-onlyIdempotent
Get driver information for a session or across sessions. Returns driver names, numbers, team names, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| session_key | No | Session identifier to get drivers for a specific session | |
| name_acronym | No | Three-letter driver acronym (e.g. 'VER', 'HAM', 'LEC') | |
| driver_number | No | Driver's car number (e.g. 1 for Verstappen, 44 for Hamilton) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safe-read profile is covered structurally. The description adds the session-scoping behavior and a sketch of the payload, but says nothing about pagination, ordering, or coverage gaps (e.g. missing drivers for sessions without data).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, front-loaded with the core action and scope before the return summary. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description rightly summarizes return content (names, numbers, team names), giving an agent enough to know whether the call answers its question. The trailing 'and more' is vague but the essentials are covered for a simple optional-filter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description adds only the session-scope hint, which the session_key schema description also conveys, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get driver information') plus scope ('for a session or across sessions'). It does not differentiate from the near-identical sibling f1_get_drivers (a different provider), so an agent cannot tell which F1 driver endpoint to prefer from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage via 'for a session or across sessions' — supplying session_key narrows to one session, omitting it spans all. However, it names no alternative and gives no explicit when-to-use/when-not guidance, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_intervalsopenf1: Get intervalsBRead-onlyIdempotent
Get interval data showing the gap between drivers and the leader during a session.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds the semantic content of the returned data (gap to leader), but does not mention pagination, rate limits, or output format; with annotations present, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant text. It is appropriately sized for the amount of information conveyed, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only data endpoint with rich annotations and 100% schema coverage, the description states the returned data but omits usage routing and any note on output granularity (e.g., per-driver values). Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (fields, session_key, driver_number) are documented in the schema. The description adds no parameter-level syntax or semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (interval data) with a precise definition of the content (gap between drivers and the leader during a session). It is distinguishable from sibling data endpoints like positions or laps, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement, no alternatives, and no exclusions. The required session_key in the schema implies session-scoped use, but the description never says when to choose this over openf1_get_positions or openf1_get_laps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_lapsopenf1: Get lapsBRead-onlyIdempotent
Get lap timing data including sector times, lap duration, and more for a session.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| lap_number | No | Filter by specific lap number | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful context about response content (sector times, lap duration) but does not discuss authentication, rate limits, pagination, or destructive scope. It adds some value beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that quickly states the verb, resource, and example data fields. 'And more' is slightly vague, but the definition is efficient and wastes little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only data-fetching tool whose annotations already cover safety. With no output schema, the description should ideally clarify the return shape, but it only gives examples and 'and more'. It is adequate but leaves response structure and pagination unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (fields, lap_number, session_key, driver_number) are already documented in the schema. The description adds no parameter syntax or meaning beyond loosely tying the data to a session. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('lap timing data') and names some returned fields (sector times, lap duration). However, it does not distinguish this tool from sibling lap-time tools such as f1_get_lap_times or nascar_get_lap_times, nor from adjacent openf1 endpoints like stints or pit. Clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance, prerequisites, or alternatives are given. Usage is only implied by the returned data ('lap timing data ... for a session'), so an agent must infer that this is the right choice when lap-level timing is needed. No exclusions or sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_meetingsopenf1: Get meetingsBRead-onlyIdempotent
Get meeting (race weekend/event) information. A meeting groups multiple sessions at one circuit.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Season year (e.g. 2024) | |
| fields | No | Keys to keep (comma-separated). | |
| meeting_key | No | Unique meeting identifier | |
| country_name | No | Country name (e.g. 'Italy', 'Monaco') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds the conceptual grouping of meetings and sessions, but does not disclose filtering behavior, pagination, or return-shape details beyond that domain context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the core purpose. Every sentence contributes directly to identifying the resource and its basic domain meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with full schema coverage and sufficient annotations, the description is largely complete. It lacks usage guidance and does not describe the returned meeting fields, but no output schema exists and the core resource definition is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all four parameters are already documented in the input schema. The description adds no parameter-specific meaning such as expected date formats or how multiple filters combine, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get meeting ... information') and clarifies the domain concept by saying a meeting groups multiple sessions at one circuit. It is clear on its own, but it does not explicitly distinguish itself from nearby siblings such as openf1_get_sessions or f1_get_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives. There is no mention of filtering use cases, prerequisites, or why an agent would choose openf1_get_meetings over openf1_get_sessions for related F1 weekend data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_pitopenf1: Get pitBRead-onlyIdempotent
Get pit stop data including pit lane time and duration for each stop.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number | |
| pit_duration_lte | No | Maximum pit duration in seconds (pit_duration<=value) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the data content (pit lane time, duration per stop) and says nothing about the required session scope, filtering behavior, or result ordering — modest added value given the annotations do the heavy lifting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler and no repetition of the title. It is efficient, though its brevity borders on under-specification for a four-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back, and 'pit stop data including pit lane time and duration' is only a partial answer — no mention of the required session_key scope, the driver-number filtering, the pit_duration_lte threshold, or the record shape. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (fields, session_key, driver_number, pit_duration_lte) are already documented in the schema. The description adds no syntax, units, or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get pit stop data) and names the returned quantities (pit lane time, duration). It does not differentiate itself from the sibling f1_get_pit_stops, which appears to cover the same subject from a different provider, leaving the agent to infer the distinction from the openf1_ prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated prerequisites, and no mention of alternatives such as f1_get_pit_stops or related openf1 endpoints (stints, laps). The agent gets no signal about when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_positionsopenf1: Get positionsBRead-onlyIdempotent
Get position/ranking data during a session. Shows how positions change over time.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| position | No | Filter by specific position (e.g. 1 for leader) | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so safety and idempotency are covered. The description adds one useful behavioral fact, that output is a time series ('how positions change over time'), but says nothing about ordering, granularity, or live-vs-final data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no filler. It is efficient, though the second sentence is close to restating the first rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, fully documented 4-param tool with no output schema, the description is minimally adequate. Annotations carry the safety profile, but the agent gets no sense of return shape (one row per driver per timestamp?) or of how to use the position/driver_number filters to narrow results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains fields, position, session_key, and driver_number. The description adds no filter syntax, range, or interpretation guidance beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get position/ranking data') scoped to 'during a session', which separates it from siblings like openf1_get_intervals (gaps) and openf1_get_laps. It does not explicitly name an alternative sibling, but the resource is concrete enough to identify what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the implied 'during a session' scope, which mirrors the required session_key. There is no when-to-use guidance, no distinction from openf1_get_intervals or openf1_get_laps, and no note on when ranking data is preferable to other session data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_race_controlopenf1: Get race controlBRead-onlyIdempotent
Get race control messages: flags, safety cars, penalties, track status changes, and other official messages.
| Name | Required | Description | Default |
|---|---|---|---|
| flag | No | Flag type filter (e.g. 'YELLOW', 'RED', 'GREEN', 'CHEQUERED') | |
| fields | No | Keys to keep (comma-separated). | |
| category | No | Message category filter (e.g. 'Flag', 'SafetyCar', 'Drs') | |
| session_key | Yes | Session identifier (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only a catalogue of message types and says nothing about return format, pagination, or filtering behavior, so it clears the lower annotated-tool bar without adding much.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding, and the resource is named before the content enumeration. Slightly list-heavy but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with no output schema, the description covers what kind of data comes back but omits the required session_key scope and how the filter parameters shape results. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents session_key, flag, category and fields, including example values. The description adds no additional parameter meaning (e.g. how flag and category interact), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get race control messages') and enumerates the content types (flags, safety cars, penalties, track status), which cleanly separates it from data siblings like openf1_get_laps or openf1_get_car_data. It does not, however, explicitly name a sibling it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites (e.g. that a session_key is required), and no steering away from or toward related OpenF1 endpoints. An agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_sessionsopenf1: Get sessionsBRead-onlyIdempotent
List Formula 1 sessions. A session is a single on-track period such as a practice, qualifying, sprint, or race.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Season year (e.g. 2024) | |
| fields | No | Keys to keep (comma-separated). | |
| session_key | No | Unique session identifier | |
| country_name | No | Country name (e.g. 'Italy', 'United Kingdom') | |
| session_name | No | Session name (e.g. 'Race', 'Qualifying', 'Sprint', 'Practice 1') | |
| session_type | No | Session type (e.g. 'Race', 'Qualifying', 'Practice') | |
| circuit_short_name | No | Short circuit name (e.g. 'Monza', 'Silverstone') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so safety is covered. Beyond that the description adds only a definition of 'session' and discloses nothing about filtering behavior, result ordering, or how session_key interacts with the other filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action, and the definitional second sentence earns its place by disambiguating 'session' across a large multi-sport tool set. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, zero-required, no-output-schema tool, the description omits the key fact that results can be narrowed by year, circuit, country, or session key, leaving the agent to discover filtering only from the schema. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 7 parameters are already documented in the schema. The description adds no parameter meaning of its own, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('Formula 1 sessions') and defines what a session is, which helps separate it from sibling data tools like openf1_get_drivers or openf1_get_laps. It does not explicitly distinguish itself from adjacent tools such as f1_get_schedule or motogp_get_sessions, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no naming of alternatives despite a crowded sibling set of session/schedule tools. The description says nothing about the filtering use cases (by year, circuit, country) that define most real invocations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_stintsopenf1: Get stintsBRead-onlyIdempotent
Get stint data including tire compound, stint number, lap counts, and tire age for each driver.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| compound | No | Tire compound filter (e.g. 'SOFT', 'MEDIUM', 'HARD', 'INTERMEDIATE', 'WET') | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the content of the payload (per-driver stint attributes) but says nothing about pagination, scoping by session, or result ordering, so it adds only modest value beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though its brevity contributes to the missing usage context rather than the structure itself being at fault.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, single-session data tool with full schema coverage and existing safety annotations, the description is adequate but thin; it omits the required session_key context and any relationship to the laps/pit siblings, leaving integration decisions to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents fields, compound, session_key and driver_number, including the compound enum values. The description merely echoes 'tire compound' without adding format or semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('stint data') and enumerates the returned fields (tire compound, stint number, lap counts, tire age). It is distinguishable from siblings like openf1_get_laps and openf1_get_pit, though it never names or contrasts with them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no prerequisites (e.g. that it needs a session_key), and no routing to alternatives such as openf1_get_laps or openf1_get_pit. The agent must infer usage purely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_team_radioopenf1: Get team radioARead-onlyIdempotent
Get team radio message metadata for a session. Returns URLs to audio recordings of driver-engineer communications.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| session_key | Yes | Session identifier (required) | |
| driver_number | No | Filter by driver number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral context by disclosing what is returned — metadata and audio recording URLs rather than transcripts or raw audio — which is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and scope front-loaded; every clause carries information and none is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-parameter tool with no output schema, the description covers what the tool fetches and the shape of the return (audio URLs). It could note the optional driver_number filtering, but the schema handles that adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both session_key and driver_number filters are already documented in the schema. The description only echoes session scoping and adds no syntax or semantics beyond what is structured, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (team radio message metadata) with an explicit scope (for a session), and adds that it returns URLs to audio recordings. This clearly distinguishes it from siblings like openf1_get_car_data or openf1_get_laps without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the session-scoped phrasing, but there is no explicit when-to-use vs alternatives guidance or exclusions relative to other openf1 tools. Adequate but leaves routing largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openf1_get_weatheropenf1: Get weatherBRead-onlyIdempotent
Get weather data for a session: air/track temperature, humidity, pressure, wind speed/direction, rainfall.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| date_gte | No | Start datetime filter (ISO 8601) | |
| date_lte | No | End datetime filter (ISO 8601) | |
| session_key | Yes | Session identifier (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/idempotentHint, so the safety profile is covered. The description adds essentially nothing behavioral beyond the metric list: no note on whether session_key is required, how date filtering behaves, sampling granularity, or return shape. For a read-only weather feed this is thin but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: verb, resource, scope, then the returned metrics. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so enumerating the returned weather metrics is genuinely useful and covers the return surface. However, with no usage context and no mention of the required session_key or date-range filtering semantics, the definition is only minimally complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (fields, date_gte, date_lte, session_key) are already documented in the schema; baseline 3 applies. The description's enumerated metrics loosely correspond to what 'fields' can select, but it adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') plus resource ('weather data for a session') and enumerates the exact metrics returned (air/track temperature, humidity, pressure, wind, rainfall). This clearly distinguishes it from the other openf1_* siblings (laps, positions, car_data, etc.), though it never names a sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives. It implies session-scoped retrieval via the phrasing 'for a session', but an agent gets no help deciding how this differs from openf1_get_sessions or openf1_get_car_data beyond the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_available_leaguesopenliga: Get available leaguesBRead-onlyIdempotent
List all available leagues and seasons in OpenLigaDB.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds only the scope that all available leagues and seasons are returned, but does not mention pagination, response format, or 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.
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 appropriately sized for a simple discovery endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple read-only discovery tool with full schema coverage and no output schema, but it lacks usage context that would help an agent know when to call it instead of other league-listing endpoints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional fields parameter is documented in the schema. The description adds no parameter meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (List) and resource (available leagues and seasons) scoped to OpenLigaDB, which distinguishes it from league-list tools for other providers. It does not explicitly differentiate itself from sibling OpenLigaDB endpoints, but the provider and resource are specific enough for correct selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what it enables, or which sibling tools it should precede. The description is purely a purpose statement with no context, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_current_matchdayopenliga: Get current matchdayARead-onlyIdempotent
Get the matches for the current matchday of a league.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and repeatability profile is covered. The description adds no further behavioral context such as how 'current' is resolved or what happens outside an active season, so it does not go beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Nothing is repeated from the title and every word carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and annotations, the description is barely adequate: it does not define what 'current matchday' means (today, latest played, upcoming) or note the fields projection. No output schema exists, so the description could have clarified the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (league_shortcut, fields) are documented in the schema itself. The description mentions only the league context and adds no format or filtering detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Get) and resource (matches for the current matchday of a league), which is specific enough to distinguish a 'current' lookup from the generic sibling openliga_get_matches_by_matchday. It stops short of naming that sibling or explaining how 'current' is derived, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'current' implies when to reach for this tool (no season/matchday arguments needed), but there is no explicit when-to-use guidance or reference to the alternative openliga_get_matches_by_matchday. Usage must be inferred from the name and the single required parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_last_match_by_teamopenliga: Get last match by teamARead-onlyIdempotent
Get the last completed match for a team. Use get_teams to find team IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | The numeric team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), lowering the bar. The description's only added behavioral detail is the 'completed' qualifier, indicating unplayed matches are skipped; it says nothing about return shape or edge cases such as a team with no completed matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and the helper pointer second. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only single-record lookup with full schema coverage and annotations carrying the safety profile, this is nearly complete. The absence of an output schema means the description could say slightly more about what the returned match contains, but nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters ('team_id' and 'fields') are already documented in the schema. The description adds no syntax, format, or field-selection meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the last completed match for a team'), and the 'completed'/'last' qualifier implicitly separates it from the sibling openliga_get_next_match_by_team. It stops short of naming that sibling outright, so the distinction must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one actionable prerequisite ('Use get_teams to find team IDs'), which is genuinely helpful. However it gives no explicit guidance on when to choose this over openliga_get_next_match_by_team or openliga_get_matches_by_league_season; the distinction is only implied by 'last completed'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_match_dataopenliga: Get match dataARead-onlyIdempotent
Get detailed data for a specific match by its ID, including goals, results, and location.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| match_id | Yes | The numeric match ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful scope about what the payload contains (goals, results, location), but says nothing about behavior for an invalid or unknown match_id, which matters for an openWorld lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the selector first and then the returned content, with no filler. It is efficient, though it is minimalist for a tool whose return shape is undocumented.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple read-only lookup whose annotations cover safety and whose parameters are fully described by the schema. With no output schema the description partially compensates by listing the main payload sections, which is adequate for a single-ID fetch, though a note on missing/unknown matches would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so both match_id and the 'fields' projection parameter are already documented in the schema. The description restates the ID lookup but adds no format, range, or projection syntax beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get detailed data for a specific match by its ID') and enumerates the payload ('goals, results, and location'), which cleanly separates it from the sibling list tools such as openliga_get_matches_by_league_season or openliga_get_matches_by_matchday. It stops short of naming those siblings explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implies the caller must already hold a match ID, which hints at a prerequisite, but there is no explicit when-to-use guidance and no routing to the tools that produce match IDs. Usage is inferable but not documented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_matches_by_league_seasonopenliga: Get matches by league seasonARead-onlyIdempotent
Get all matches for a league and season. Known league shortcuts: bl1 (1. Bundesliga), bl2 (2. Bundesliga), bl3 (3. Liga), dfb (DFB-Pokal), ucl (Champions League).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. '2023' for 2023/24 | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description earns credit for adding genuinely new context beyond those hints: it enumerates the accepted league shortcuts (bl1, bl2, bl3, dfb, ucl), which is not present elsewhere. It stops short of describing what happens on an unknown shortcut or how results are ordered or paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero padding: the purpose is front-loaded and the shortcut enumeration follows as directly actionable supporting detail. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent query tool with no output schema and full schema coverage, the description supplies the one piece of domain knowledge an agent actually needs (the shortcut vocabulary). It is slightly thin on result shape and invalid-input behavior, but the safety semantics are already carried by the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description goes beyond the schema's single 'bl1' example by listing five valid league shortcuts with human-readable names, which meaningfully constrains the league_shortcut parameter. The 'fields' and 'season' parameters get no additional description beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get all matches') scoped by 'league and season', which clearly separates it from the matchday-based sibling by virtue of its scoping dimension. It never names openliga_get_matches_by_matchday or openliga_get_current_matchday explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope ('by league and season') implies when this tool applies versus matchday-scoped or team-scoped siblings, but there is no explicit when-to-use statement, no exclusion of the matchday alternative, and no note about prerequisites or valid season ranges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_matches_by_matchdayopenliga: Get matches by matchdayARead-onlyIdempotent
Get matches for a specific matchday in a league and season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. '2023' | |
| matchday | Yes | Matchday number, e.g. 15 | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, covering the safety and idempotency profile. The description adds only the scoping constraint and nothing about return format, result size, or the fact that this hits an external (open-world) source. Adequate but thin given the annotations already carry the main behavioral load.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler that states the resource and its scoping dimensions. Nothing is wasted and the key information comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with full schema coverage and no output schema, the definition is minimally complete. The notable gap is the absence of any differentiation from openliga_get_matches_by_league_season, which an agent needs to route correctly between two closely overlapping tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including examples ('bl1', '2023', 15) and the exclusiveMinimum on matchday. The description adds no parameter-level detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('matches') scoped to a matchday in a league and season, which is clear. However, it does not explicitly distinguish itself from the near-identical sibling openliga_get_matches_by_league_season, leaving the agent to infer the difference from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the required league+season+matchday scoping, but there is no explicit when-to-use guidance or statement of when to prefer this over openliga_get_matches_by_league_season or openliga_get_current_matchday. The agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_next_match_by_teamopenliga: Get next match by teamARead-onlyIdempotent
Get the next upcoming match for a team. Use get_teams to find team IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | The numeric team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is fully covered by structured data. The description adds little beyond that — it doesn't say what happens when a team has no upcoming fixture, nor anything about the returned match shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the one piece of routing the schema can't express. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with no output schema, the description covers the essentials an agent needs to call it: what it returns and how to obtain the required ID. The missing edge case (no upcoming match) is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both team_id and the fields projection. The description reinforces where team_id comes from ('get_teams') but adds no format or syntax detail beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (next upcoming match for a team), and the scope word 'next upcoming' implicitly separates it from the sibling openliga_get_last_match_by_team. However it never names that sibling, so differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete prerequisite — 'Use get_teams to find team IDs' — which is genuinely useful routing. But it offers no guidance on when to prefer this over openliga_get_last_match_by_team or the matches_by_league_season/matchday tools, so usage is only partially framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_tableopenliga: Get tableCRead-onlyIdempotent
Get the league table / standings for a league and season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. '2023' | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered, but the description adds nothing on top: no note on required league shortcut validity, season format handling, standings ordering, or what happens on an unknown league/season.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource front-loaded and no filler. It is arguably too terse given the unresolved gaps, but as a conciseness measure it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with full schema coverage and annotations carrying the safety profile, a one-liner is close to adequate. However, with no output schema and no mention of the fields parameter or season formatting, an agent lacks the context needed to invoke it optimally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (league_shortcut, season, fields) are documented in the schema itself, so the baseline of 3 applies. The description only restates 'league and season' and adds no extra semantics, notably omitting the optional fields projection parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the league table / standings') and scopes it to a league and season. An agent can distinguish it from siblings like openliga_get_matches_by_league_season or openliga_get_top_scorers, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as sportsdb_get_standings or sportsrc_get_table, which occupy the same functional niche. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_teamsopenliga: Get teamsARead-onlyIdempotent
Get the list of teams participating in a league for a given season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. '2023' | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the league/season scoping constraint and nothing about return shape, list size, or whether teams are league-season specific.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The resource and its scope are stated up front and every clause is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full schema coverage and safety annotations, the definition is minimum-viable. It omits what the returned team objects contain and whether results differ per season, which an agent might reasonably want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so league_shortcut, season and fields are each documented in the schema. The description restates the league and season concepts but adds no format or syntax detail (e.g. 'bl1', '2023') beyond what the schema already provides. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the list of teams') plus scope ('participating in a league for a given season'). Clear and distinguishable from the openliga match/table/scorer siblings, though it never names an alternative to contrast against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for a given season' — an agent knows to call it when it has a league and season. There is no explicit when-to-use, when-not-to-use, or pointer to siblings like openliga_get_available_leagues to discover valid league shortcuts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openliga_get_top_scorersopenliga: Get top scorersCRead-onlyIdempotent
Get the top goal scorers for a league and season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. '2023' | |
| league_shortcut | Yes | League shortcut, e.g. 'bl1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. However, the description adds nothing about the most behaviorally important trait for a 'top scorers' tool: how many scorers are returned, whether they are ranked, and how ties are handled. Only a restatement of the purpose is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero padding. It is efficiently written, though its brevity comes at the cost of leaving out useful detail rather than being expansive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully documented by the schema, so the input side is complete. With no output schema, the description carries the burden of explaining the return shape, and it omits the count and ordering of the returned scorers, which is the key semantic for a 'top N' list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents league_shortcut, season and fields with examples. The description merely restates league and season and says nothing about the fields projection parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get the top goal scorers') scoped to a league and season. It is easily separable from siblings like openliga_get_table or openliga_get_matches_by_league_season, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the many sibling stats/standings tools, nor any prerequisites (e.g. needing a valid league_shortcut from openliga_get_available_leagues). Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_draft_pickssleeper: Get draft picksARead-onlyIdempotent
Get all picks for a draft (round, pick number, roster, player_id, metadata). Get a draft_id from sleeper_get_league (draft_id) or the league's drafts.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| draft_id | Yes | Draft id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds value beyond them by disclosing the shape of the returned pick records, which matters because there is no output schema. It says nothing about pagination, historical vs live drafts, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core action and returned fields come first, followed by the input-sourcing hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description covers purpose, returned fields, and how to obtain the required ID. It omits whether picks reflect completed or in-progress drafts and any ordering guarantees, which are minor but real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds provenance semantics for draft_id (where to obtain it) that the schema does not provide, plus context on the pick fields returned, lifting it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get all picks for a draft') and enumerates the returned fields (round, pick number, roster, player_id, metadata). No sibling tool retrieves draft picks, so there is nothing to differentiate from, and the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent exactly where the required draft_id comes from ('from sleeper_get_league (draft_id) or the league's drafts'), which is real usage context rather than a restatement. It does not cover when-not-to-use this tool or alternative paths, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_leaguesleeper: Get leagueARead-onlyIdempotent
Get details for a Sleeper league (settings, scoring, roster positions, status).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league_id | Yes | League id (from sleeper_get_user_leagues) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and repeatability are covered. The description adds the useful detail that the payload includes settings, scoring, roster positions, and status, but says nothing about response shape, auth requirements, or rate limits — acceptable given annotation coverage but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, resource, and returned content; no filler sentences, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's enumeration of returned content areas does necessary work by telling the agent what a call yields. Combined with the 100%-covered input schema, an agent has enough to invoke it correctly, though it lacks any statement of scope limits or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are documented in the schema, including the provenance of league_id. The description adds no syntax or format detail for the 'fields' key-filtering parameter, so this is baseline territory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get details for a Sleeper league') and enumerates the content areas (settings, scoring, roster positions, status), which distinguishes it from roster/user/matchup siblings. It does not explicitly name or contrast with the closest siblings (sleeper_get_league_rosters, sleeper_get_league_users), so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description itself gives no when-to-use or when-not-to-use guidance. The only usage signal is indirect: the league_id schema description points to sleeper_get_user_leagues as the source of the id, which implies the intended workflow without stating it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_league_matchupssleeper: Get league matchupsBRead-onlyIdempotent
Get the matchups for a league in a given week (roster_id, points, starters).
| Name | Required | Description | Default |
|---|---|---|---|
| week | Yes | NFL week number | |
| fields | No | Keys to keep (comma-separated). | |
| league_id | Yes | League id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description contributes the returned fields, but discloses nothing about auth requirements, empty weeks, or scoring semantics. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the returned-field list parenthetical. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description usefully previews the return payload (roster_id, points, starters), which compensates for the absent output schema. Minor gaps remain around what a 'matchup' pairing means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only three parameters, so the schema already documents league_id, week, and fields. The description adds no format or constraint detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (league matchups) scoped to a week, and names the payload fields returned (roster_id, points, starters). This clearly separates it from siblings like sleeper_get_league_rosters and sleeper_get_league_users, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, no exclusions. The required parameters imply a scenario (weekly head-to-head scoring for a fantasy league), but the description never states the context or routing conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_league_rosterssleeper: Get league rostersARead-onlyIdempotent
Get all rosters in a league (owners, player_ids, wins/losses, points).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league_id | Yes | League id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered by structured data. The description adds useful context by listing the data shape returned (owners, player_ids, wins/losses, points), but discloses nothing about auth, rate limits, or how partial/empty leagues behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the operation and immediately qualifies the returned fields. Nothing is wasted and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-required-param read tool with annotations covering safety and no output schema, the description is nearly complete; it compensates for the missing output schema by naming the return fields. It falls short only on usage routing relative to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (league_id, fields) are already documented in the schema. The description adds no syntax or format detail for league_id or the fields projection, leaving the schema to do the heavy lifting - the correct baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (league rosters), and enumerates the returned content (owners, player_ids, wins/losses, points), so the agent knows exactly what it fetches. It does not, however, explicitly distinguish itself from near siblings like sleeper_get_league_users or sleeper_get_league_matchups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name and the description's mention of 'in a league'; there is no explicit when-to-use statement, no exclusions, and no routing to alternatives such as get_league_users or get_league_matchups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_league_userssleeper: Get league usersARead-onlyIdempotent
Get all users (managers) in a league with display names and team names.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league_id | Yes | League id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeat-call behavior are covered. The description adds the return payload shape (display names, team names), which is useful, but says nothing about pagination, ordering, or empty/missing leagues. Adequate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler; the resource and the returned data are front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and annotations, the description covers the essentials and states what comes back. Missing only edge-case behavior (empty league, pagination) and explicit sibling routing, neither of which is critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (league_id, fields) are already documented and the baseline is 3. The description hints at which fields exist, but adds no syntax or format detail beyond the schema's 'comma-separated' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Get) plus resource (all users/managers) and scope (in a league), and it even names the returned fields (display names, team names). The parenthetical '(managers)' disambiguates 'users' against the sibling sleeper_get_user, which returns a single user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement, no prerequisites, and no routing to alternatives. An agent must infer from the name alone whether to prefer this over sleeper_get_user_leagues or sleeper_get_league_rosters, which likely also expose manager/team names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_nfl_statesleeper: Get nfl stateARead-onlyIdempotent
Get the current NFL season, week, and season type (pre/regular/post/off) as tracked by Sleeper.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so safety is covered. The description adds value by disclosing the returned content (season, week, season type tracked by Sleeper), which matters since there is no output schema. It does not mention refresh cadence or staleness, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core resource leads and the clarifying enum parenthetical trails appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial read-only state getter with one optional param and no output schema, the description covers the essentials by naming what is returned. It is nearly complete, though noting it is the canonical source for season/week context in sibling queries would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional 'fields' parameter, so the schema already documents it fully. The description adds nothing about projecting fields or the comma-separated syntax, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb ('Get') and resource ('NFL season, week, and season type') and even enumerates the return values with an enum-like gloss (pre/regular/post/off). The purpose is unambiguous because no sibling tool retrieves NFL state, but the description does not explicitly contrast itself with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the reference for the current season/week used to scope other queries, but the description never says when to call it or what it is a prerequisite for. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_trending_playerssleeper: Get trending playersARead-onlyIdempotent
Get the most-added or most-dropped NFL players over a lookback window, enriched with names/teams/positions. Doubles as a crude buzz signal.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | 'add' (most added) or 'drop' (most dropped) | |
| limit | No | Max results (default 25) | |
| fields | No | Keys to keep (comma-separated). | |
| lookback_hours | No | Lookback window in hours (default 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds that results are 'enriched with names/teams/positions', which is useful context about what comes back, but says nothing about ordering, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the operation front-loaded and no filler. The second sentence adds a genuinely different angle (trend/buzz signal) rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries some burden to describe the return, and 'enriched with names/teams/positions' partially discharges that. With annotations covering safety and 100% schema coverage on all four params, only the exact return shape/ordering is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so type, limit, fields, and lookback_hours are all documented in the schema itself. The description's 'most-added or most-dropped' and 'lookback window' merely restate what the schema already conveys, adding no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Get the most-added or most-dropped NFL players') plus the scoping qualifier ('over a lookback window'), which is inherently distinct from sibling tools like sleeper_search_players. It is clear what the tool does, though it never explicitly names an alternative sibling to route against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the lookback window and the phrase 'Doubles as a crude buzz signal' hint at when this is useful (trend detection rather than lookup), but there is no explicit when-to-use, when-not-to-use, or named alternative such as sleeper_search_players.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_usersleeper: Get userBRead-onlyIdempotent
Get a Sleeper user (profile, user_id, display name) by username or numeric user id.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| username_or_id | Yes | Sleeper username or numeric user id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the shape of the returned record, which is useful but thin given the lower bar set by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient and readable, though it spends words on the return payload instead of the use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with full schema coverage, no output schema, and annotations that carry the safety semantics, the description supplies enough for correct invocation. Only the missing routing/usage context keeps it below the top score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description essentially restates the username_or_id parameter while ignoring the fields projection parameter. With the schema doing the heavy lifting, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a Sleeper user') and even enumerates the returned payload ('profile, user_id, display name'), so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from nearby siblings such as sleeper_get_user_leagues, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by username or numeric user id' hints at the keying strategy but there is no when-to-use guidance, no mention of prerequisites, and no routing versus alternatives like sleeper_search_players or sleeper_get_user_leagues. An agent gets no decision support for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_get_user_leaguessleeper: Get user leaguesARead-onlyIdempotent
List the NFL leagues a user belongs to for a given season. Use the user_id from sleeper_get_user.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season year, e.g. "2025" | |
| user_id | Yes | Numeric user id (from sleeper_get_user) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeatability are covered. The description adds only the season-scoping notion, which the schema also conveys; no detail on return shape, empty results, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and the input-provenance hint second. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with full schema coverage and annotations covering behavior, the description is sufficient to call it correctly. Only minor gaps remain (e.g., what a returned league entry looks like), and no output schema exists to require more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the user_id provenance note the description repeats, so the baseline is 3. The description adds no format or constraint detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: listing the NFL leagues a user belongs to for a given season. An agent can distinguish this directionally from siblings like sleeper_get_league (league by id) and sleeper_get_league_users (users in a league), though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent where the required user_id comes from (sleeper_get_user), which is actionable context for chaining calls. However it gives no when-not guidance or alternatives for other lookup directions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sleeper_search_playerssleeper: Search playersARead-onlyIdempotent
Search the Sleeper NFL player database by name (and optionally team/position). Returns slim records with injury status, depth-chart order, team and position. The full player set is cached for 24h.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Filter by team abbreviation (e.g. KC, BUF) | |
| limit | No | Max results (default 25) | |
| query | Yes | Name (full or partial), case-insensitive | |
| fields | No | Keys to keep (comma-separated). | |
| position | No | Filter by position (e.g. QB, RB, WR, TE) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety bar is met elsewhere. The description still adds real behavioral value: it discloses the return shape ('slim records with injury status, depth-chart order, team and position') and the 24h cache TTL, which tells the agent results may be stale. No mutation, auth, or rate-limit details are given, but none are needed for a read-only search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the search purpose and optional filters are front-loaded before the return/cache details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by naming the fields returned, and it flags cache freshness. It is close to complete; only pagination/limit behavior is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the name/team/position filters that the schema already documents and does not mention the 'fields' or 'limit' parameters, so it adds little beyond the structured field definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Search'), the exact resource ('Sleeper NFL player database'), and the search key ('by name (and optionally team/position)'). The 'Sleeper NFL' qualifier cleanly separates it from the sibling player searches (sportsdb_search_players, mlb_search_players, opendota_search_players) and from sleeper_get_user/sleeper_get_trending_players.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'search ... by name', but there is no explicit guidance on when to reach for this over siblings such as sleeper_get_trending_players or the league/roster tools, and no stated exclusions or prerequisites. Adequate but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_event_detailssportsdb: Get event detailsARead-onlyIdempotent
Get full details for a specific event by its TheSportsDB ID. Includes scores, venue, thumbnails, and video highlights.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| event_id | Yes | TheSportsDB event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, open-world), lowering the bar. The description goes beyond annotations by disclosing the returned payload ('scores, venue, thumbnails, and video highlights'), which is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero waste; the operation and its scoping key are front-loaded before the return-content clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-event lookup whose safety profile is fully carried by annotations and whose parameters are fully covered by the schema, the description supplies the critical missing piece: what the response contains. Only minor gaps (no explicit alternative routing) remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both the required event_id and the optional fields parameter are already documented in the schema. The description only restates that lookup is by ID and adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('full details for a specific event'), scoped by a TheSportsDB ID. It clearly distinguishes itself from generic list tools by requiring a single event ID, but it does not explicitly differentiate from the close sibling sportsdb_get_event_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this when you already have an event ID and want its details. There is no explicit when-to-use/when-not guidance nor any named alternative such as sportsdb_get_event_results or sportsdb_get_events_by_date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_event_resultssportsdb: Get event resultsBRead-onlyIdempotent
Get past event results for a specific round of a league season.
| Name | Required | Description | Default |
|---|---|---|---|
| round | Yes | Round number (e.g. '1', '38') | |
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season string (e.g. '2023-2024' or '2024') | |
| league_id | Yes | TheSportsDB league ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the temporal constraint that only PAST results are returned (not upcoming fixtures), which is genuine usable context, but says nothing about pagination, result volume, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource and its scoping constraint front-loaded and zero filler. It is arguably too terse for the tool's complexity, but nothing wasteful is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could usefully say what a 'result' row contains (scoreline, teams, status) and whether multiple events per round are returned. As written it covers the call contract but leaves the return shape and multiplicity implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so league_id, round, season and fields are all documented in the input schema. The description only restates that results are keyed to a round of a league season, adding no format or syntax detail beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('past event results') scoped to a round of a league season. The scope is precise enough to separate it from sportsdb_get_event_details (single event) and sportsdb_get_last_events (recent events), though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the scope phrase 'for a specific round of a league season' — an agent can infer it needs round/season/league_id. No explicit when-to-use, when-not-to-use, or alternatives (e.g., sportsdb_get_events_by_date, sportsdb_get_last_events) are given despite a crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_events_by_datesportsdb: Get events by dateARead-onlyIdempotent
Get sporting events on a specific date. Optionally filter by sport or league name.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format | |
| sport | No | Sport name to filter by (e.g. 'Soccer') | |
| fields | No | Keys to keep (comma-separated). | |
| league | No | League name to filter by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeatability are covered without prose. The description adds the optional-filter behavior but says nothing about pagination, result limits, or how empty dates behave, so it contributes only modestly beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core scope ('on a specific date') front-loaded before the optional filters. Nothing can be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, flat-schema read tool with a fully annotated safety profile and no output schema, this is close to sufficient: the caller knows what it returns at a high level and which filters exist. It could note that results are a single day's events rather than a range, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so date, sport, league and fields are all documented in the schema itself, and the description largely restates the two filter parameters. Baseline 3 is appropriate; it adds no format or syntax detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get sporting events') plus the scoping dimension ('on a specific date'), which separates it from sportsdb_get_last_events and sportsdb_get_next_events in the sibling list. It stops short of explicitly naming those siblings, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this when you have a concrete date and want that day's slate. There is no explicit when-not guidance and no mention of the alternative tools (sportsdb_get_last_events / sportsdb_get_next_events) for the case where the caller does not know a date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_last_eventssportsdb: Get last eventsARead-onlyIdempotent
Get the last 15 completed events for a team. Includes scores and results.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | TheSportsDB team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description usefully discloses the fixed '15 events' cap, which is not in the schema or annotations, but says nothing about auth needs, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the operation and its scope front-loaded and the return contents in the trailing clause. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does state that scores and results are included, plus the fixed count of 15. That is sufficient for an agent to call it correctly, though ordering (most recent first?) is left ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so team_id and the optional fields filter are already documented in the schema. The description adds no syntax or format detail beyond what structured data provides, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('last 15 completed events'), and scope ('for a team'), plus what's returned ('scores and results'). It distinguishes itself from siblings like sportsdb_get_next_events by content ('last' vs upcoming), though it never names the alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'last' and 'completed' implies the retrieval context (past results for a given team), so usage is inferable. However, there is no explicit when-to-use guidance and no routing to sportsdb_get_next_events or sportsdb_get_event_results when those are the better fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_league_listsportsdb: Get league listARead-onlyIdempotent
List all leagues, optionally filtered by country and/or sport.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | No | Sport name to filter by (e.g. 'Soccer') | |
| fields | No | Keys to keep (comma-separated). | |
| country | No | Country name to filter by (e.g. 'England') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety and repeatability profile is fully covered by structured data. The description adds nothing behavioral beyond that - no note on result size, pagination, or ordering for what could be a large open-world league catalog. With annotations carrying the burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading the core action and then the optional refinement. Nothing is wasted and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only list tool with full schema coverage and annotations covering behavior, the description is close to sufficient. It stops short of covering the projection parameter or any hint about result volume, but no output schema exists and none of these gaps are severe for this tool class.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description mentions the country and sport filters (redundant with the schema) but never mentions the 'fields' projection parameter, so it adds no meaning beyond structured data. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List all leagues') with the filtering dimensions, so the agent knows exactly what comes back. It does not, however, differentiate this from near-duplicate siblings such as sportsdb_get_sports_list, sportsrc_get_leagues, openliga_get_available_leagues, or footballdata_uk_list_leagues, so an agent choosing between catalog-style tools gets no help here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally filtered by country and/or sport' implies when the filters are useful, which is weak usage guidance. There is no explicit when-to-use statement, no mention of when this is the wrong tool versus the sibling league-listing tools, and no prerequisites described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_next_eventssportsdb: Get next eventsARead-onlyIdempotent
Get the next 15 upcoming events for a team.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | TheSportsDB team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description does add one genuine behavioral fact beyond the structured data: the result is capped at 15 events, which tells the agent it is a bounded, non-paginated preview rather than a full schedule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the most important constraint (15 upcoming) is front-loaded rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema the description could usefully sketch the return shape (event name, date, league, venue) for a next-fixtures query, and it gives no guidance on what to do if fewer than 15 exist. For a simple read tool with 100% schema coverage it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both team_id and fields are already documented in the schema, and the description adds no syntax, format or defaulting detail on top. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (events), scope (for a team) and a hard quantity (next 15 upcoming). This distinguishes it in spirit from sportsdb_get_last_events and sportsdb_get_events_by_date, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer you call this when you want a team's upcoming fixtures. There is no statement of when NOT to use it, no mention of the last-events or by-date alternatives, and no prerequisites such as needing a valid team_id from sportsdb_search_teams.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_player_detailssportsdb: Get player detailsARead-onlyIdempotent
Get full details for a player by their TheSportsDB ID. Includes biography, position, stats, and images.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| player_id | Yes | TheSportsDB player ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world behavior, so the safety profile is covered. The description adds genuinely useful behavioral context by naming the returned payload (biography, position, stats, images), which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the primary action and lookup key front-loaded in the first, and the return contents second. Nothing is wasteful, though the phrasing is terser than it needs to be given the tool's role among many lookups.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and simple flat parameters, the description compensates well by enumerating what the player object contains. It is nearly complete for a read-lookup tool, though it omits any mention of the fields-projection option.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, and the description only restates the player_id key. The 'fields' filter parameter is not mentioned at all, so the description adds no meaning beyond structured data — the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get full details for a player') and the lookup key ('by their TheSportsDB ID'), so the agent knows exactly what it does. However, it does not differentiate itself from near-duplicate siblings like espn_get_athlete, mlb_get_player, or sportsdb_search_players, leaving the agent to infer routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Requiring a 'TheSportsDB ID' implicitly signals that a prior lookup (e.g. sportsdb_search_players) is needed, which is useful. But there is no explicit statement of when to choose this over the sibling player-lookup tools, and no exclusions or prerequisites are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_seasonssportsdb: Get seasonsCRead-onlyIdempotent
List all available seasons for a league.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league_id | Yes | TheSportsDB league ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds almost nothing beyond that: it does not mention ordering, completeness, pagination, or behavior on an unknown league_id, which for a read-only lookup tool is a thin contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler — the scope constraint ('for a league') sits immediately after the verb. It is efficient, though the terseness borders on under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage and annotations, the description is minimally sufficient. It still omits the result shape/ordering and the upstream dependency on a league lookup, which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only 2 parameters, both documented inline ('TheSportsDB league ID', 'Keys to keep (comma-separated)'). The description's 'for a league' merely restates league_id, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'List all available seasons for a league.' An agent can distinguish it from sibling season tools by the sportsdb prefix, but the description itself never differentiates it from f1_get_seasons or motogp_get_seasons beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g., that a league_id must first come from sportsdb_get_league_list), and no exclusions versus alternative season-list tools in sibling namespaces. The agent is left to infer everything about triggering conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_sports_listsportsdb: Get sports listBRead-onlyIdempotent
List all available sports on TheSportsDB.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that—no mention of return shape, pagination, or whether the list is fixed or dynamic—so it earns the baseline 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-required-parameter list endpoint with no output schema and full annotation coverage, the description is sufficient for an agent to invoke it correctly. Minor gap: no hint about the ordering or nature of the returned sports list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single optional 'fields' parameter is already documented in the schema. The description does not mention or explain the projection behavior, so the schema carries the burden and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (sports) with the data source (TheSportsDB), making the purpose unambiguous. It does not explicitly distinguish itself from the sibling sportsdb_get_league_list, but the name/resource makes the distinction reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as sportsdb_get_league_list or sportsdb_search_teams. No prerequisites or context are given; the agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_standingssportsdb: Get standingsBRead-onlyIdempotent
Get league table / standings for a given league and season.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| season | Yes | Season string (e.g. '2023-2024' or '2024') | |
| league_id | Yes | TheSportsDB league ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds nothing beyond that — no note on which leagues/seasons are supported, whether thin data is returned for some leagues, or response shape — so behavioral value is essentially nil.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero waste, and the essential purpose (standings for a league/season) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with full schema coverage and annotations, the description is minimally sufficient. It is nonetheless incomplete on routing: with a dozen-plus standings/table siblings, it should say whose standings it returns and how it differs from them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so league_id, season, and fields are all documented in the schema itself. The description only restates 'league and season' without format syntax or the meaning of 'fields' beyond what the schema already says; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get league table / standings') with scope ('for a given league and season'), so the agent immediately knows what it returns. It does not, however, distinguish this from the many other standings/table tools in the environment (openliga_get_table, sportsrc_get_table, squiggle_get_ladder, nhl_get_standings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites (e.g. league_id must come from sportsdb_get_league_list, or that seasons must be valid TheSportsDB season strings). The agent must infer all routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_get_team_detailssportsdb: Get team detailsBRead-onlyIdempotent
Get full details for a team by its TheSportsDB ID. Includes description, stadium, badges, social links, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_id | Yes | TheSportsDB team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds which classes of data come back (stadium, badges, social links), which is modest extra value, but says nothing about upstream rate limits, missing-team behavior, or how sparse the record can be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, no redundancy. The trailing 'and more' is mild filler but does signal that the field list is not exhaustive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return contents, which is the main thing an agent needs here. A light two-parameter read tool is adequately covered, though the undocumented 'fields' projection leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description reinforces that team_id is a TheSportsDB ID but never mentions the 'fields' projection parameter or its comma-separated syntax, leaving all meaning to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get full details') and resource ('team') and pins the lookup key to a TheSportsDB ID, which implicitly distinguishes it from sportsdb_search_teams. It also enumerates representative content (description, stadium, badges, social links). It stops short of naming siblings explicitly, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no routing to alternatives such as sportsdb_search_teams for ID discovery. The only hint is 'by its TheSportsDB ID', which implies a prerequisite (an ID in hand) but never states it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_search_playerssportsdb: Search playersARead-onlyIdempotent
Search players by name, or list all players on a team. Provide either player_name or team_name (or both).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_name | No | Team name to list players from | |
| player_name | No | Player name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safe-read profile is covered. The description adds the dual-mode behavior (name search vs team listing), but omits pagination, result limits, and whether the two filters combine as AND or OR.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core capability front-loaded and no filler. Every clause carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param, no-output-schema search tool the description is adequate, but the ambiguous '(or both)' leaves an agent unsure whether providing both filters intersects or unions results, and whether an empty call returns everything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; each parameter is already self-documented. The description restates player_name/team_name usage but adds no syntax, format, or matching semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus resource (players) and two modes of operation (by name, or list by team). An agent can distinguish it from sportsdb_get_player_details by the 'search/list' framing, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent to provide either player_name or team_name (or both), which is implied usage guidance, but it never says when to prefer this over sportsdb_get_player_details or what happens with an empty call (0 required params). Alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsdb_search_teamssportsdb: Search teamsARead-onlyIdempotent
Search teams by name. Returns matching teams with basic info, badges, and stadium details.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| team_name | Yes | Team name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, and the description still adds return-content context that no output schema provides ('basic info, badges, and stadium details'). It does not disclose matching behavior (exact vs fuzzy) or result limits, but with annotations carrying safety this is a solid contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action stated first and the return payload second. Nothing here needs trimming and the important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, annotation-covered tool with no output schema, the description covers purpose and rough return shape, which is adequate. It omits sibling routing to sportsdb_get_team_details for full details and says nothing about match behavior or pagination, so it is minimum-viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema and the baseline is 3. The description says nothing extra about team_name format (partial name, aliases, abbreviations) or the fields projection parameter, so it adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search teams by name') and adds what comes back ('basic info, badges, and stadium details'). It is clear on its own, but it never names or contrasts with the obvious sibling sportsdb_get_team_details, leaving the search-vs-fetch distinction to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: a name-based search is understood to be the entry point when you don't already have an identifier, but the description never says when to use this instead of sportsdb_get_team_details or sportsdb_search_players. No exclusions, prerequisites, or result-count guidance are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_leaguessportsrc: Get leaguesARead-onlyIdempotent
List football leagues/competitions supported by SportSRC. Returns league ids you can pass to scores and tables tools.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds value beyond that by disclosing the return shape ('league ids') and their downstream role, though it says nothing about error behavior or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the purpose and followed by the actionable return value. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with no output schema, the description covers what is returned (league ids) and how to use it. It could go further by describing whether league objects include names or country data alongside ids, but it is adequate for a simple lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter ('fields') with 100% schema description coverage, so the schema fully documents it. The description adds no syntax or formatting guidance for the field-selection parameter, making this the expected baseline when structured data carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List football leagues/competitions supported by SportSRC'), so the agent immediately knows what it gets back. It does not, however, explicitly differentiate itself from other league-listing siblings such as sportsrc_get_sports, sportsdb_get_league_list, or footballdata_uk_list_leagues, leaving the agent to infer the boundary from the provider prefix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives clear workflow context: the returned ids are meant to be passed to the scores and tables tools, framing this as a discovery/entry-point call. It stops short of stating when NOT to use it or naming an alternative, so it is strong context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_league_scoressportsrc: Get league scoresBRead-onlyIdempotent
Get scores / recent results for a specific football league.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League id (use sportsrc_get_leagues to list). E.g. "PL", "CL", "BL1". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only a loose hint that results are 'recent', without defining the window or stating whether live/in-progress matches are included—context that matters given sportsrc_get_live exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant or filler text. Nothing needs to be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema and full annotation coverage, this is minimally viable, but the vague 'scores / recent results' leaves the temporal scope and live-match behavior undefined—material for an agent choosing between sportsrc siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: 'league' documents its id format and points to sportsrc_get_leagues, and 'fields' explains the comma-separated projection. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (scores/recent results) scoped to a football league, which is clear on its own. However, it does not differentiate from close siblings like sportsrc_get_matches, sportsrc_get_match, or sportsrc_get_live, all of which could plausibly return league results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no routing to alternatives. It never tells the agent to prefer sportsrc_get_live for in-progress games or sportsrc_get_table for standings, nor when this differs from sportsrc_get_matches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_livesportsrc: Get liveARead-onlyIdempotent
Convenience: get the matches feed for a sport. Filter the returned data array client-side by status for live games.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| category | Yes | Sport id (use sportsrc_get_sports to list). E.g. "football", "basketball", "mma". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world reads, so the safety profile is covered. The description adds genuine behavioral value by revealing that the live filtering is a client-side concern, but it says nothing about pagination, rate limits, or freshness of the feed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose before the filtering note. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does partially address it by naming the `data` array and its `status` field. It still omits the feed's overall shape and whether results are paginated or scoped to a time window, leaving the agent with an incomplete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the pointer to sportsrc_get_sports for the category value. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('get the matches feed for a sport') and labels itself a convenience wrapper. It is distinguishable from sportsrc_get_sports/leagues/table, though it never names its closest sibling sportsrc_get_matches, leaving some overlap ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction to 'filter the returned data array client-side by status for live games' implies the use case and usefully signals that the tool does not server-side filter. However, it never says when to prefer this over sportsrc_get_matches or sportsrc_get_league_scores, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_matchsportsrc: Get matchBRead-onlyIdempotent
Get detailed match information including streams, venue, and lineups.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| category | Yes | Sport id (use sportsrc_get_sports to list). E.g. "football", "basketball", "mma". | |
| match_id | Yes | Match id (from sportsrc_get_matches results) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds a useful disclosure of what the response contains (streams, venue, lineups), but says nothing about freshness, rate limits, or error behavior for a live-sports source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the payload summary is packed into the same clause and nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by enumerating the returned sections, and the annotations carry the safety profile. For a simple two-required-parameter read tool it is essentially complete, though it could name the outlet for live/stream info or its relation to sportsrc_get_matches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (match_id, category, fields) are already documented with sourcing hints and examples. The description adds no parameter-level meaning beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get detailed match information') and even names the payload contents (streams, venue, lineups), so the agent knows what it gets back. It does not, however, differentiate itself from sibling detail-fetchers like sportsdb_get_event_details, opendota_get_match, or openliga_get_match_data beyond its sportsrc namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternative routing is given. The only implicit hint of sequencing lives in the schema descriptions (match_id from sportsrc_get_matches, category from sportsrc_get_sports), not in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_matchessportsrc: Get matchesBRead-onlyIdempotent
List matches for a sport. Returns live, upcoming, and recently finished matches with team info.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| category | Yes | Sport id (use sportsrc_get_sports to list). E.g. "football", "basketball", "mma". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful scope context (the result spans live, upcoming, and finished matches, and includes team info), which it needs to do since there is no output schema, but it says nothing about pagination, ordering, or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action and scope front-loaded before the return contents. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and no output schema, the description gives an adequate sketch of what comes back (live/upcoming/finished matches, team info). Only the absence of any sibling routing guidance keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — 'category' documents the sport id and points to sportsrc_get_sports, and 'fields' documents the keep-list. The description adds no parameter detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (matches) scoped to a sport, and enumerates what the result covers (live, upcoming, recently finished with team info). It does not distinguish itself from sibling readers like sportsrc_get_match, sportsrc_get_live, or sportsrc_get_league_scores, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. In a cluster containing sportsrc_get_match, sportsrc_get_live, and sportsrc_get_league_scores, the agent gets no signal about which to pick; category being required and pointing at sportsrc_get_sports is the only routing hint, and that lives in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_sportssportsrc: Get sportsARead-onlyIdempotent
List sport categories supported by SportSRC. Returns ids you can pass to other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the useful detail that the output is a set of ids consumed by downstream calls, but says nothing about result size, ordering, or caching, so it goes only slightly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scope, with the downstream-use note in second position. No filler or restated title text beyond the necessary resource name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with no output schema, the description covers what is returned (sport categories/ids) and their purpose. It is nearly complete; only the relationship to sibling discovery tools like sportsrc_get_leagues is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single optional 'fields' parameter, so the schema carries the parameter burden. The description never mentions the fields/projection capability, adding no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List sport categories supported by SportSRC') and adds that the result is a set of ids usable elsewhere. It does not explicitly distinguish itself from the sibling sportsrc_get_leagues, which is the main ambiguity for an agent choosing between the two discovery tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the clause 'ids you can pass to other tools' hints that this is a discovery/entry point in the sportsrc family, but there is no explicit when-to-use, when-not-to-use, or named alternative such as sportsrc_get_leagues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sportsrc_get_tablesportsrc: Get tableCRead-onlyIdempotent
Get the standings table for a specific football league.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). | |
| league | Yes | League id (use sportsrc_get_leagues to list). E.g. "PL", "CL", "BL1". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds nothing beyond that — no note on which seasons/competitions are covered, freshness of standings, or failure modes for an invalid league id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words. It is efficient, though it borders on under-specified rather than being fully informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description leaves the shape of the returned table (columns, ranking order, tie handling) unspecified; for a simple read-only lookup it is just adequate. An agent can call it, but cannot predict the return payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, including the league id examples and the fields comma-separated format, so the schema carries this dimension. The description adds no parameter meaning beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (standings table) scoped to a football league, which is clearer than a bare 'get table'. However, it gives no hint of how it differs from the many sibling standings tools (sportsdb_get_standings, openliga_get_table, espn_get_standings, nhl_get_standings), so sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, no named alternative. The only routing help is in the schema (league id via sportsrc_get_leagues), not the description. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_gamessquiggle: Get gamesBRead-onlyIdempotent
Get AFL games with optional filters. Returns home/away teams, scores, completion status, venue, and time.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team id (use squiggle_get_teams to list) | |
| year | No | Season year (e.g. 2024) | |
| round | No | Round number | |
| fields | No | Keys to keep (comma-separated). | |
| complete | No | Completion % filter (100 = finished games only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds only that results are filterable and lists returned fields; it says nothing about pagination, default season behavior when no year is given, or result limits. With annotations carrying safety, the extra value is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste; the filter hint and the field list are front-loaded and immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate but not complete: no output schema exists, yet the description does mention returned fields (teams, scores, completion status, venue, time), which partially compensates. However it omits default behavior for omitted filters (e.g., all seasons) and any ordering/pagination details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented (team id, year range, round, fields keys, completion %). The description only gestures at 'optional filters' without adding format or behavior details beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (AFL games), and enumerates returned fields. It's clear on its own, though it doesn't distinguish itself from squiggle siblings like squiggle_get_ladder or squiggle_get_tips, which is minor given the game-vs-ladder distinction is obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'optional filters' but gives no guidance on when to use this tool versus siblings such as squiggle_get_ladder, squiggle_get_standings, or the many other league game-fetching tools (mlb_get_schedule, nhl_get_schedule, euroleague_get_games). No when-to-use or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_laddersquiggle: Get ladderARead-onlyIdempotent
Get the projected AFL ladder for a given year and round, by prediction model. Each model gives its own projected wins / mean rank.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Season year | |
| round | Yes | Round number | |
| fields | No | Keys to keep (comma-separated). | |
| source | No | Model source id (use squiggle_get_sources) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description adds real behavioral value by explaining the output shape — 'each model gives its own projected wins / mean rank' — which tells the agent this produces per-model projections rather than a single ladder.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the core purpose is front-loaded and the follow-up sentence adds only the output semantics. Nothing redundant or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with full annotation coverage and 100% schema coverage, little is missing. The description even characterizes the return values, which compensates for the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents year, round, fields and source, including the hint to use squiggle_get_sources. The description adds no syntax or default details beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource and scope: 'Get the projected AFL ladder for a given year and round, by prediction model.' The word 'projected' implicitly separates it from squiggle_get_standings, but the description never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the context (a given year and round) and that output is model-based, which implies usage. However it gives no when-not guidance and never points to the closely related squiggle_get_standings or squiggle_get_tips so the agent can choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_sourcessquiggle: Get sourcesARead-onlyIdempotent
List the prediction model sources contributing to Squiggle (Squiggle, MoS, FiveThirtyEight, etc.). Use the returned ids with tips and ladder tools.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds non-obvious behavioral context beyond that: the returned ids are reusable as keys in the tips and ladder tools, which tells the agent this is a lookup/enumeration step rather than a terminal call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first defines the resource and its contents, the second states the downstream usage. Zero filler, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small read-only enumeration with rich annotations and a fully documented schema, the description covers what it lists and how the output is consumed. It omits any note on the optional 'fields' projection or whether the source list is fixed, which are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional 'fields' parameter ('Keys to keep (comma-separated)'), so the schema does the work. The description never mentions projection or the fields parameter, adding nothing on top — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (prediction model sources in Squiggle) and enumerates concrete examples (Squiggle, MoS, FiveThirtyEight). This cleanly separates it from the sibling squiggle_get_teams / get_games / get_ladder tools, which return entirely different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent downstream: 'Use the returned ids with tips and ladder tools,' naming the two sibling tools that consume this output. It gives clear when-to-use context but no when-not or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_standingssquiggle: Get standingsBRead-onlyIdempotent
Get the actual AFL ladder/standings (wins, losses, draws, points, percentage) for a year and round.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Season year | |
| round | No | Round number (defaults to current) | |
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds that it returns actual (rather than predicted) standings and lists the fields, but it does not describe pagination, error behavior, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The parenthetical list of returned statistics is compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only standings tool with full schema coverage and safety annotations, the description is nearly complete. The main remaining gap is that it does not differentiate itself from the very similar squiggle_get_ladder sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents 'year', 'round', and 'fields' fully, including the default for round. The description adds only the high-level phrase 'for a year and round' and no extra syntax or meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('AFL ladder/standings') and even lists the returned statistics (wins, losses, draws, points, percentage). It is clear but does not explicitly distinguish this tool from the similar sibling squiggle_get_ladder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as squiggle_get_ladder, squiggle_get_tips, or the many other standings tools. The phrase 'for a year and round' gives parameter context but does not qualify the tool's selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_teamssquiggle: Get teamsARead-onlyIdempotent
List all AFL teams in the Squiggle database (current and historic), with id, abbreviation, debut/retirement years, and logo path.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Keys to keep (comma-separated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the meaningful scope detail that retired/historic teams are included alongside current ones, which affects result interpretation, but says nothing about ordering, size, or whether the call is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the verb and resource, then the scope, then the payload. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned attributes and clarifies that historic teams are included, which is the key ambiguity for a teams-list endpoint. It could go slightly further on result ordering or typical result count, but it is adequate for a zero-required-parameter read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional 'fields' parameter, so the schema does the documenting and baseline is 3. The description lists concrete keys (id, abbreviation, debut/retirement years, logo path) that plausibly correspond to selectable fields, adding marginal value but not explaining the comma-separated projection syntax or a default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (all AFL teams in the Squiggle database) plus scope qualifiers (current and historic) and the returned attributes. The 'AFL' qualifier distinguishes it from the many other get_teams/constructors siblings for MLB, NCAA, openLiga, Formula E, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the tool for a full team list when no filtering is needed. There is no explicit when-to-use guidance, no when-not-to-use, and no pointer to a sibling alternative (e.g. squiggle_get_ladder for standings).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
squiggle_get_tipssquiggle: Get tipsARead-onlyIdempotent
Get game-level tips/predictions from one or all Squiggle prediction models. Each tip includes margin, confidence, and post-hoc correctness when known.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | Specific game id | |
| year | No | Season year | |
| round | No | Round number | |
| fields | No | Keys to keep (comma-separated). | |
| source | No | Model source id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds that tips include margin, confidence, and post-hoc correctness, which is useful output context, but it discloses no further behavioral traits such as rate limits, auth requirements, or default scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The core purpose is front-loaded and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 optional parameters and no output schema, so the description partially fills the return-value gap by listing tip fields. However, it omits default behavior when filters are absent (e.g., all games, all models), which an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds slight meaning by clarifying that results can come from one or all models (relevant to the source parameter), but this is a minor addition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (game-level tips/predictions) and names the source domain (Squiggle prediction models). It implicitly distinguishes itself from siblings like squiggle_get_games, squiggle_get_teams, and squiggle_get_standings, but does not explicitly compare or name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from one or all Squiggle prediction models' implies the scope of use but gives no explicit when-to-use guidance or alternatives. It does not say when to prefer this over squiggle_get_games or squiggle_get_sources.
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.
165 tool updates
v1.4.1- Changed
chesscom_get_club2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_country_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_leaderboards2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_player2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_player_archives2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_player_clubs2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
chesscom_get_player_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_athlete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_event_summary2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_news3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991
- Changed
espn_get_scoreboard3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991
- Changed
espn_get_seasons2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_team_details2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_team_roster2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_team_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
espn_get_teams3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991
- Changed
euroleague_get_clubs2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
euroleague_get_game_boxscore3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_code / maximumRemoved value: -9007199254740991
- Changed
euroleague_get_game_header3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_code / maximumRemoved value: -9007199254740991
- Changed
euroleague_get_game_playbyplay3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_code / maximumRemoved value: -9007199254740991
- Changed
euroleague_get_games2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
euroleague_get_rounds2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
f1_get_circuits3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_constructor_standings3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_constructors3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_driver_results3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_driver_standings3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_drivers3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_lap_times3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_pit_stops3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_qualifying3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_race_results3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_schedule3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_seasons3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
f1_get_sprint3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991
- Changed
footballdata_uk_get_matches2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
footballdata_uk_list_leagues2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_championships2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_driver_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_race2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_race_results2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_races3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / page / maximumRemoved value: -9007199254740991
- Changed
formulae_get_team_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
formulae_get_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_broadcasts2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_daily_puzzle2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_team2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_top_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_tournaments2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_user2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
lichess_get_users_status2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_divisions2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_game2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_game_boxscore2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_game_linescore2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_game_play_by_play2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_league_leaders2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_player2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_player_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_team_roster2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_get_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
mlb_search_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_categories2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_events2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_riders2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_seasons2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_session_classification2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_sessions2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
motogp_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nascar_get_lap_times3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / race_id / maximumRemoved value: -9007199254740991
- Changed
nascar_get_live2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nascar_get_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_game2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_news2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_rankings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_scoreboard2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
ncaa_get_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_draft2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_game_boxscore4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / game_id / minimumRemoved value: --9007199254740991
- Changed
nhl_get_game_landing4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / game_id / minimumRemoved value: --9007199254740991
- Changed
nhl_get_game_play_by_play4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / game_id / minimumRemoved value: --9007199254740991
- Changed
nhl_get_player4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / player_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / player_id / minimumRemoved value: --9007199254740991
- Changed
nhl_get_player_game_log4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / player_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / player_id / minimumRemoved value: --9007199254740991
- Changed
nhl_get_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_scores2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_stat_leaders2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_team_roster2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_team_schedule2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
nhl_get_team_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_hero_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_heroes2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_match3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / match_id / maximumRemoved value: -9007199254740991
- Changed
opendota_get_player3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / account_id / maximumRemoved value: -9007199254740991 - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_player_heroes3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / account_id / maximumRemoved value: -9007199254740991 - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_player_matches3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / account_id / maximumRemoved value: -9007199254740991 - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_player_win_loss3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / account_id / maximumRemoved value: -9007199254740991 - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_pro_leagues2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_pro_matches2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_get_pro_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
opendota_search_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_car_data2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_drivers2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_intervals2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_laps2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_meetings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_pit2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_positions2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_race_control2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_sessions2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_stints2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_team_radio2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openf1_get_weather2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_available_leagues2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_current_matchday2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_last_match_by_team3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / team_id / maximumRemoved value: -9007199254740991
- Changed
openliga_get_match_data3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / match_id / maximumRemoved value: -9007199254740991
- Changed
openliga_get_matches_by_league_season2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_matches_by_matchday3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / matchday / maximumRemoved value: -9007199254740991
- Changed
openliga_get_next_match_by_team3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / team_id / maximumRemoved value: -9007199254740991
- Changed
openliga_get_table2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
openliga_get_top_scorers2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_draft_picks2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_league2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_league_matchups2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_league_rosters2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_league_users2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_nfl_state2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_trending_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_user2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_get_user_leagues2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sleeper_search_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_event_details2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_event_results2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_events_by_date2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_last_events2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_league_list2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_next_events2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_player_details2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_seasons2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_sports_list2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_standings2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_get_team_details2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_search_players2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsdb_search_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_league_scores2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_leagues2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_live2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_match2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_matches2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_sports2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
sportsrc_get_table2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
squiggle_get_games4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / round / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / team / maximumRemoved value: -9007199254740991
- Changed
squiggle_get_ladder4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / round / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / source / maximumRemoved value: -9007199254740991
- Changed
squiggle_get_sources2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
squiggle_get_standings3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / round / maximumRemoved value: -9007199254740991
- Changed
squiggle_get_teams2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +}
- Changed
squiggle_get_tips5 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / fieldsAdded value: +{ + "description": "Keys to keep (comma-separated).", + "type": "string" +} - removed
Input schema / properties / game / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / round / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / source / maximumRemoved value: -9007199254740991
153 tool updates
v1.3.0- Changed
chesscom_get_club1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
chesscom_get_country_players1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
chesscom_get_player1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
chesscom_get_player_archives1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
chesscom_get_player_clubs1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
chesscom_get_player_stats1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_athlete1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_event_summary1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_news2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / limit / maximumAdded value: +9007199254740991
- Changed
espn_get_scoreboard2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / limit / maximumAdded value: +9007199254740991
- Changed
espn_get_seasons1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_standings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_team_details1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_team_roster1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_team_schedule1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
espn_get_teams2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / limit / maximumAdded value: +9007199254740991
- Added
euroleague_get_clubs - Added
euroleague_get_game_boxscore - Added
euroleague_get_game_header - Added
euroleague_get_game_playbyplay - Added
euroleague_get_games - Added
euroleague_get_rounds - Changed
f1_get_circuits2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_constructor_standings2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_constructors2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_driver_results2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_driver_standings2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_drivers2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_lap_times2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_pit_stops2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_qualifying2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_race_results2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_schedule2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_seasons2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Changed
f1_get_sprint2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / offset / maximumAdded value: +9007199254740991
- Added
footballdata_uk_get_matches - Added
footballdata_uk_list_leagues - Added
formulae_get_championships - Added
formulae_get_driver_standings - Added
formulae_get_race - Added
formulae_get_race_results - Added
formulae_get_races - Added
formulae_get_team_standings - Added
formulae_get_teams - Changed
lichess_get_broadcasts1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
lichess_get_team1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
lichess_get_top_players1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
lichess_get_user1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
lichess_get_users_status1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_game1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_game_boxscore1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_game_linescore1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_game_play_by_play1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_league_leaders1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_player1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_player_stats1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_schedule1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_standings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_team_roster1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_get_teams1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mlb_search_players1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
motogp_get_categories - Added
motogp_get_events - Added
motogp_get_riders - Added
motogp_get_seasons - Added
motogp_get_session_classification - Added
motogp_get_sessions - Added
motogp_get_standings - Added
nascar_get_lap_times - Added
nascar_get_live - Added
nascar_get_schedule - Changed
ncaa_get_game1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_news1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_rankings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_schedule1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_scoreboard1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_standings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_stats1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
ncaa_get_teams1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_game_boxscore3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / game_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / game_id / minimumAdded value: +-9007199254740991
- Changed
nhl_get_game_landing3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / game_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / game_id / minimumAdded value: +-9007199254740991
- Changed
nhl_get_game_play_by_play3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / game_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / game_id / minimumAdded value: +-9007199254740991
- Changed
nhl_get_player3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / player_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / player_id / minimumAdded value: +-9007199254740991
- Changed
nhl_get_player_game_log3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / player_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / player_id / minimumAdded value: +-9007199254740991
- Changed
nhl_get_schedule1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_standings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_stat_leaders1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_team_roster1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_team_schedule1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
nhl_get_team_stats1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
opendota_get_hero_stats - Added
opendota_get_heroes - Added
opendota_get_match - Added
opendota_get_player - Added
opendota_get_player_heroes - Added
opendota_get_player_matches - Added
opendota_get_player_win_loss - Added
opendota_get_pro_leagues - Added
opendota_get_pro_matches - Added
opendota_get_pro_teams - Added
opendota_search_players - Changed
openf1_get_car_data1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_drivers1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_intervals1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_laps1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_meetings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_pit1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_positions1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_race_control1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_sessions1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_stints1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_team_radio1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openf1_get_weather1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openliga_get_current_matchday1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openliga_get_last_match_by_team2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / team_id / maximumAdded value: +9007199254740991
- Changed
openliga_get_match_data2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / match_id / maximumAdded value: +9007199254740991
- Changed
openliga_get_matches_by_league_season1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openliga_get_matches_by_matchday2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / matchday / maximumAdded value: +9007199254740991
- Changed
openliga_get_next_match_by_team2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / team_id / maximumAdded value: +9007199254740991
- Changed
openliga_get_table1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openliga_get_teams1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
openliga_get_top_scorers1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
sleeper_get_draft_picks - Added
sleeper_get_league - Added
sleeper_get_league_matchups - Added
sleeper_get_league_rosters - Added
sleeper_get_league_users - Added
sleeper_get_nfl_state - Added
sleeper_get_trending_players - Added
sleeper_get_user - Added
sleeper_get_user_leagues - Added
sleeper_search_players - Changed
sportsdb_get_event_details1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_event_results1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_events_by_date1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_last_events1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_league_list1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_next_events1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_player_details1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_seasons1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_standings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_get_team_details1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_search_players1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsdb_search_teams1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsrc_get_league_scores1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsrc_get_live1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsrc_get_match1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsrc_get_matches1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
sportsrc_get_table1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
squiggle_get_games3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / round / maximumAdded value: +9007199254740991 - added
Input schema / properties / team / maximumAdded value: +9007199254740991
- Changed
squiggle_get_ladder3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / round / maximumAdded value: +9007199254740991 - added
Input schema / properties / source / maximumAdded value: +9007199254740991
- Changed
squiggle_get_standings2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / round / maximumAdded value: +9007199254740991
- Changed
squiggle_get_tips4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / game / maximumAdded value: +9007199254740991 - added
Input schema / properties / round / maximumAdded value: +9007199254740991 - added
Input schema / properties / source / maximumAdded value: +9007199254740991
119 tool updates
v1.2.0- First observed
chesscom_get_club - First observed
chesscom_get_country_players - First observed
chesscom_get_leaderboards - First observed
chesscom_get_player - First observed
chesscom_get_player_archives - First observed
chesscom_get_player_clubs - First observed
chesscom_get_player_stats - First observed
espn_get_athlete - First observed
espn_get_event_summary - First observed
espn_get_news - First observed
espn_get_scoreboard - First observed
espn_get_seasons - First observed
espn_get_standings - First observed
espn_get_team_details - First observed
espn_get_team_roster - First observed
espn_get_team_schedule - First observed
espn_get_teams - First observed
f1_get_circuits - First observed
f1_get_constructor_standings - First observed
f1_get_constructors - First observed
f1_get_driver_results - First observed
f1_get_driver_standings - First observed
f1_get_drivers - First observed
f1_get_lap_times - First observed
f1_get_pit_stops - First observed
f1_get_qualifying - First observed
f1_get_race_results - First observed
f1_get_schedule - First observed
f1_get_seasons - First observed
f1_get_sprint - First observed
lichess_get_broadcasts - First observed
lichess_get_daily_puzzle - First observed
lichess_get_team - First observed
lichess_get_top_players - First observed
lichess_get_tournaments - First observed
lichess_get_user - First observed
lichess_get_users_status - First observed
mlb_get_divisions - First observed
mlb_get_game - First observed
mlb_get_game_boxscore - First observed
mlb_get_game_linescore - First observed
mlb_get_game_play_by_play - First observed
mlb_get_league_leaders - First observed
mlb_get_player - First observed
mlb_get_player_stats - First observed
mlb_get_schedule - First observed
mlb_get_standings - First observed
mlb_get_team_roster - First observed
mlb_get_teams - First observed
mlb_search_players - First observed
ncaa_get_game - First observed
ncaa_get_news - First observed
ncaa_get_rankings - First observed
ncaa_get_schedule - First observed
ncaa_get_scoreboard - First observed
ncaa_get_standings - First observed
ncaa_get_stats - First observed
ncaa_get_teams - First observed
nhl_get_draft - First observed
nhl_get_game_boxscore - First observed
nhl_get_game_landing - First observed
nhl_get_game_play_by_play - First observed
nhl_get_player - First observed
nhl_get_player_game_log - First observed
nhl_get_schedule - First observed
nhl_get_scores - First observed
nhl_get_standings - First observed
nhl_get_stat_leaders - First observed
nhl_get_team_roster - First observed
nhl_get_team_schedule - First observed
nhl_get_team_stats - First observed
openf1_get_car_data - First observed
openf1_get_drivers - First observed
openf1_get_intervals - First observed
openf1_get_laps - First observed
openf1_get_meetings - First observed
openf1_get_pit - First observed
openf1_get_positions - First observed
openf1_get_race_control - First observed
openf1_get_sessions - First observed
openf1_get_stints - First observed
openf1_get_team_radio - First observed
openf1_get_weather - First observed
openliga_get_available_leagues - First observed
openliga_get_current_matchday - First observed
openliga_get_last_match_by_team - First observed
openliga_get_match_data - First observed
openliga_get_matches_by_league_season - First observed
openliga_get_matches_by_matchday - First observed
openliga_get_next_match_by_team - First observed
openliga_get_table - First observed
openliga_get_teams - First observed
openliga_get_top_scorers - First observed
sportsdb_get_event_details - First observed
sportsdb_get_event_results - First observed
sportsdb_get_events_by_date - First observed
sportsdb_get_last_events - First observed
sportsdb_get_league_list - First observed
sportsdb_get_next_events - First observed
sportsdb_get_player_details - First observed
sportsdb_get_seasons - First observed
sportsdb_get_sports_list - First observed
sportsdb_get_standings - First observed
sportsdb_get_team_details - First observed
sportsdb_search_players - First observed
sportsdb_search_teams - First observed
sportsrc_get_league_scores - First observed
sportsrc_get_leagues - First observed
sportsrc_get_live - First observed
sportsrc_get_match - First observed
sportsrc_get_matches - First observed
sportsrc_get_sports - First observed
sportsrc_get_table - First observed
squiggle_get_games - First observed
squiggle_get_ladder - First observed
squiggle_get_sources - First observed
squiggle_get_standings - First observed
squiggle_get_teams - First observed
squiggle_get_tips
TDQS
Scored across 165 tools
Many tools across different providers deliver overlapping data (e.g., multiple standings tools from mlb, nhl, espn, sportsdb, sportsrc, squiggle; multiple scoreboard tools from espn, ncaa, nhl, sportsdb). While descriptions clarify the provider, an agent may struggle to choose the right source for a common request, leading to misselection. Some within-provider overlaps (e.g., f1_get_lap_times vs openf1_get_laps) further blur boundaries.
Nearly all tools follow a provider_verb_noun snake_case pattern (e.g., mlb_get_schedule, nhl_get_standings, lichess_get_user), with minor deviations like list_ instead of get_ for some listing tools (footballdata_uk_list_leagues) or missing noun (sportsrc_get_live). Overall predictable and readable.
165 tools is an extreme mismatch for a single MCP server; far beyond the typical 3-15 well-scoped range. It likely overwhelms the agent's selection process and suggests an unbounded aggregator rather than a focused toolset.
The surface comprehensively covers schedules, standings, rosters, player stats, play-by-play, news, and specialized data across dozens of leagues and sports, with generic providers filling gaps. Some niche operations (e.g., dedicated season stats for every league) may be missing, but agents can often work around them via ESPN or SportsDB generic tools.
Maintenance
Related MCP Connectors
The Odds API MCP — sportsbook odds across 70+ books, 30+ leagues
One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
- APIVerveOAuthcom.apiverve
380+ live data, validation and utility APIs in one MCP server: IP, DNS, email, FX, weather and more.
BetsAPI MCP — wraps BetsAPI (betsapi.com) sports events + odds.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP-compatible server that gives AI agents access to alternative sports data across 30+ leagues — odds, events, probabilities, settlement, and futures for prediction markets, DFS platforms, and sportsbooks.2917 npm24 PyPIMIT
- AlicenseBqualityAmaintenanceAn MCP server that exposes sports-data APIs from multiple providers (AFL, Sportsbet, Entain, NRL) as interchangeable tools, enabling cross-provider odds and stats comparison.500114 PyPI29MIT
- FlicenseNot gradedqualityDmaintenanceMCP server providing tools to query live scores, schedules, standings, and game stats from the SportRadar API for multiple sports including NFL, NBA, NHL, NCAAMB, soccer, and tennis.-
- FlicenseBqualityDmaintenanceA unified MCP server that combines The Odds API and SportMonks Football API v3 to provide 28 tools for sports data like odds, scores, fixtures, standings, and predictions, enabling Claude to interact with a wide range of sports information.281-