Skip to main content
Glama

sportiq-mcp

CI PyPI Python License: MIT MCP Registry

MCP server that turns any AI assistant into a sports analyst across FIFA World Cup 2026 football, Formula 1, and IPL cricket — 44 AI-callable tools.

SportIQ demo — Claude calling football_simulate_bracket for World Cup 2026 title probabilities

SportIQ running live in Claude — Monte Carlo World Cup bracket, F1 pit strategy, and Dream11 optimisation, each a visible MCP tool call. (1-min demo)

Every tool is free to use — the three flagships and everything in the INTEL columns below have no SportIQ paywall or account requirement. Live/provider-backed data still depends on the keys and quota available to the host or local operator. If SportIQ is useful to you, sponsor the project to support ongoing development.

What it does

Raw-data tools are table stakes; the intelligence layer is the product. Three flagships:

  • football_simulate_bracket — Monte Carlo with Poisson xG over the 48-team WC 2026 format → per-team round + title probabilities.

  • f1_predict_pit_strategy — tyre-degradation model on OpenF1 telemetry → optimal stop laps + compound sequence.

  • cricket_build_dream11_team — PuLP constraint solver → a valid fantasy XI under credit/role/team caps.

Tools (44 total)

Sport

RAW data

INTEL

Football (WC 2026)

groups, fixtures, standings, squad, match stats, top scorers, odds

xg_model, match_predictor, simulate_group, simulate_bracket, knockout_path, form_trends, find_value_bets, build_accumulator

F1

sessions, drivers, lap_times, standings, race_results, weather

tyre_degradation, undercut_window, head_to_head_pace, weather_strategy_impact, qualifying_analysis, race_pace_compare, predict_pit_strategy

Cricket (IPL)

live_matches, scorecard, points_table, schedule, squad, live_odds

build_dream11_team, captain_recommendation, differential_picks, player_form_index, pitch_report, head_to_head, player_matchup, find_value_bets

Cross-sport

build_accumulator

Plus sportiq_health (included in the 44; cache backend + per-adapter status and remaining API quota).

Data sources (per chain, with keyless fallbacks): football → API-Footballfootball-data.org → bundled wc2026.json. F1 → OpenF1Jolpicafastf1. Cricket → CricAPI + static seeds (NDTV/Cricbuzz scrapers opt-in).

Related MCP server: oraclaw-mcp-server

Where it works

Anywhere that speaks MCP — Claude (Desktop + web), ChatGPT, Cursor, and any MCP client. Two ways to run it:

  • Hosted (no install): add a custom connector — works in claude.ai web & ChatGPT.

  • Local (uvx/Desktop config/IDEs): install from PyPI.

How it works

Hosted — no install

A public instance runs on the home server behind Cloudflare. Add this as a custom connector with No authentication:

https://sportiq.utkarshgupta.org/mcp

Hosting history (GCP Cloud Run → home server): docs/wiki/findings/product-hosting-arc.md. Old *.run.app connector URLs are gone.

  • claude.ai (web): Settings → Connectors → Add custom connector → paste URL → Save.

  • ChatGPT: Settings → Apps & Connectors → enable Developer mode → Create app (MCP) → paste URL → No authentication → Connect.

All 44 tools register on the plain URL. Whether a live/provider-backed call can return current data depends on the credentials, quota, and fallbacks available to the hosted operator; the repository does not claim the public instance's current key inventory.

Mode

What is available

Hosted

All tools register; live/provider-backed results depend on the host's current keys, quota, and fallbacks.

Local, keyless

All tools register; bundled seeds and keyless sources work where supported, while credential-only live sources are skipped.

Local, BYO keys

The same tools can use the configured providers for fresher/live data, subject to provider quota.

The hosted HTTP boundary rejects request bodies over 1 MiB, limits traffic to 60 requests per client and 300 total requests per minute, and permits at most two concurrent expensive model/solver calls. These counters are per process, so the home-server Compose stack runs one replica (always-on idle; no scale-to-zero).

Local install

uvx sportiq-mcp                       # from PyPI
# or from source:
git clone https://github.com/Ninjabeam20/SportIQ-MCP && cd sportiq-mcp
uv sync --extra dev --extra analytics && uv run python -m sportiq.server

Claude Desktop config:

{
  "mcpServers": {
    "sportiq": {
      "command": "uvx",
      "args": ["sportiq-mcp"],
      "env": {
        "CRICAPI_KEY": "your_cricapi_key",
        "APIFOOTBALL_KEY": "your_apifootball_key",
        "THEODDS_KEY": "your_theodds_key"
      }
    }
  }
}

The server boots and registers every tool without keys. Seed/keyless fallbacks and the intelligence layer work where their required inputs are available; provider keys add fresher/live sources and quota rather than unlocking a separate paid tool tier.

Var

Unlocks

Free tier

APIFOOTBALL_KEY

Live football fixtures / standings / squads / scorers

100 req/day

THEODDS_KEY

Market odds (football + cricket probability tools)

500 req/month

FOOTBALLDATA_KEY

football-data.org fallback (token optional)

10 req/min

CRICAPI_KEY

Live cricket scores / scorecards / schedules / squads

100 req/day

RAPIDAPI_KEY

Paid Cricbuzz fallback (player career stats)

plan-dependent

SPORTIQ_ENABLE_NDTV / SPORTIQ_ENABLE_CRICBUZZ

Opt-in cricket scrapers (off by default — ToS)

REDIS_URL

Shared cache backend (defaults to local diskcache)

SPORTIQ_TRANSPORT

stdio (default, local) or http (remote / home server)

macOS arm64: the Dream11 solver needs CBC — brew install cbc (the binary bundled with PuLP is x86-only).

Self-host

Set SPORTIQ_TRANSPORT=http and the server serves the MCP endpoint at /mcp (binds 0.0.0.0:$PORT). A ready-to-build Dockerfile and home-server docker-compose.yml are included. cloud.md is the old Cloud Run runbook (historical). With your own keys set, the live-score and odds tools come online too.

Support SportIQ

Every tool is free and open source — the raw-data tools, sportiq_health, and the full intelligence layer (the three flagships + everything in the INTEL columns). SportIQ has no paid feature gate; provider-backed data can still require operator credentials and quota.

If SportIQ saves you time, sponsor the project at github.com/sponsors/Ninjabeam20 to help fund hosting and ongoing development. It's a voluntary donation — you get the same fully-unlocked server either way.

Is it safe?

  • Open source, MIT licensed, published on PyPI with signed build attestations — read the code before you connect it.

  • Read-only. Tools only fetch and analyse public sports data — no write, delete, payment, email, or file-system tools.

  • Limited operational telemetry. HTTP mode logs client software name/version, User-Agent, tool name, outcome, latency, selected source, and staleness. The public host (Dell) can persist tool_call / mcp_request lines to a local JSONL volume. Local stdio emits local logs but sends no telemetry to a SportIQ-hosted service.

  • Hosted abuse controls. HTTP POST bodies are capped at 1 MiB; requests are limited to 60/client/minute and 300/process/minute; the five expensive simulation/strategy/solver tools share a concurrency limit of two.

  • Credential-aware. A hosted operator may configure provider credentials; the repository does not claim the public instance's current key inventory. Keys are redacted from application logs and envelopes.

  • Historical automated AI code-review results are documented in SECURITY.md; they are not a current third-party certification.

Every response carries a meta.is_stale flag + data age, so the AI tells you how fresh each answer is. Live scores refresh ~30s, F1 telemetry ~10s, standings ~10min, fixtures ~6h.

Develop

uv sync --extra dev --extra analytics   # always both extras: dev = pytest/ruff, analytics = the dashboard's GCP libs
uv run pytest
uv run ruff check .
npx @modelcontextprotocol/inspector uv run python -m sportiq.server

Analytics dashboard (read-only local usage view — Dell JSONL / archived GCP / PyPI / GitHub). Same setup as above, then just run it:

uv run python scripts/dashboard.py     # writes dashboard.html and opens it; GITHUB_TOKEN optional (Sponsors panel)

Note: the dashboard's HTML template (scripts/dashboard_template.html) is currently local-only maintainer tooling, so a fresh clone can't render it yet.

Repository layout: src/ is the MCP server (published to PyPI, hosted on the Dell at https://sportiq.utkarshgupta.org/mcp); website/ is the Next.js marketing site deployed to Vercel. The two ship independently — website/ is excluded from the Python package and the backend container.

See CLAUDE.md for collaboration rules and docs/index.md for the wiki entry point.

Data sources & credits

SportIQ derives some model constants offline from open datasets. Raw datasets are never shipped or fetched at runtime — only small derived seeds (circuits.json, venues.json, elo_seed.json) are committed.

License & author

Created and maintained by Utkarsh Gupta (@Ninjabeam20). Licensed under the MIT License — © 2026 Utkarsh Gupta. Canonical package: sportiq-mcp on PyPI / io.github.Ninjabeam20/sportiq-mcp in the official MCP registry.

Available Tools

44 tools
cricket_build_dream11_teamA
Read-onlyIdempotent
Inspect

Recommend an optimal fantasy XI + captain + vice-captain for one fixture.

Args: match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically. team_a: First team code/name (e.g. MI). Required if match_id is absent. team_b: Second team code/name (e.g. CSK). Required if match_id is absent. venue: Venue key/name (e.g. wankhede). Required if match_id is absent. strategy: "balanced" only in Phase 2; future variants reserved.

Returns: data.players: 11 picked players with name/role/credits/team/projected_points. data.captain: name of the chosen captain. data.vice_captain: name of the chosen VC. data.total_credits: sum of credits used (<= 100). data.total_projected_points: fantasy points including C x2 and VC x1.5 boosts. meta.estimated: true — projections are model output, not a fantasy oracle.

Example: cricket_build_dream11_team(team_a="MI", team_b="CSK", venue="wankhede") cricket_build_dream11_team(match_id="abc123")

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNoVenue key/name (e.g. ``wankhede``). Required if match_id is absent.
team_aNoFirst team code/name (e.g. ``MI``). Required if match_id is absent.
team_bNoSecond team code/name (e.g. ``CSK``). Required if match_id is absent.
match_idNoCricAPI match identifier; resolves team_a/team_b/venue automatically.
strategyNo``"balanced"`` only in Phase 2; future variants reserved.balanced

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnly, idempotent, non-destructive), the description reveals that results are estimated model output ('meta.estimated: true — projections are model output, not a fantasy oracle'), constrained to <=100 credits, and apply C x2 / VC x1.5 scoring boosts. 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.

Conciseness5/5

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

The description is well-structured with Args, Returns, and Example sections, and every line carries useful information. The main purpose is front-loaded before implementation details.

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

Completeness5/5

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

For a five-parameter tool with an output schema, the description is complete: it documents both identification modes, the strategy restriction, expected response fields, scoring assumptions, and result reliability. An agent has everything needed to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds relational meaning by explaining that match_id resolves team/venue automatically and team_a/team_b/venue are required 'if match_id is absent', plus concrete examples. This goes beyond the schema's per-field descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Recommend an optimal fantasy XI + captain + vice-captain for one fixture.' This clearly distinguishes it from siblings like cricket_captain_recommendation (captain only) and cricket_differential_picks.

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

Usage Guidelines4/5

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

It states a clear context: full fantasy team building for one fixture, and gives two input modes (match_id or team/venue). It does not explicitly name alternatives or say when not to use it, but the purpose is specific enough to route usage.

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

cricket_captain_recommendationA
Read-onlyIdempotent
Inspect

Return the top-3 captain candidates ranked by projected points.

Args: match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically. team_a: First team code/name. Required if match_id is absent. team_b: Second team code/name. Required if match_id is absent. venue: Venue key/name. Required if match_id is absent.

Returns: data.candidates: list of 3 dicts with name/role/team/projected_points. meta.source: model:captain_score. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNoVenue key/name. Required if match_id is absent.
team_aNoFirst team code/name. Required if match_id is absent.
team_bNoSecond team code/name. Required if match_id is absent.
match_idNoCricAPI match identifier; resolves team_a/team_b/venue automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive, so the bar is lower. The description adds useful behavioral context: results are estimates (meta.estimated: true), backed by a captain_score model, and match_id auto-resolves team/venue.

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

Conciseness4/5

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

The key one-line purpose is front-loaded, and the Args/Returns structure makes details scannable. Minor redundancy: the Args section mostly repeats the input schema descriptions.

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

Completeness4/5

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

Given the annotations, output schema presence, and clear parameter dependency, the description covers what an agent needs to call the tool correctly. It could be more explicit about precedence when both match_id and team/venue are supplied, but this is not a critical gap.

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

Parameters3/5

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

Schema coverage is 100% and the schema descriptions repeat the same parameter semantics. The description clarifies that match_id resolves the other three arguments and that team_a/team_b/venue are required only when match_id is absent, but this is also in the schema, so the added value is minimal.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Return the top-3 captain candidates ranked by projected points.' This clearly differentiates the tool from cricket siblings like differential_picks or player_form_index by naming captain selection and projected-point ranking.

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

Usage Guidelines4/5

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

The description gives a clear functional context—when you need captain recommendations for a match—and specifies the input path (match_id or manual team/venue). It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to choose it over siblings.

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

cricket_differential_picksA
Read-onlyIdempotent
Inspect

Suggest low-ownership picks with positive projected upside.

Ownership is estimated — proxied by credit weight (lower-credit players tend to have lower ownership), not real ownership data. Flagged estimated: true in the response.

Args: match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically. team_a: First team code/name. Required if match_id is absent. team_b: Second team code/name. Required if match_id is absent. venue: Venue key/name. Required if match_id is absent. ownership_threshold: percent ownership cap; affects estimated label.

Returns: data.picks: list of {name, role, team, credits, projected_points, estimated_ownership_pct}. meta.source: model:captain_score (filtered). meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNoVenue key/name. Required if match_id is absent.
team_aNoFirst team code/name. Required if match_id is absent.
team_bNoSecond team code/name. Required if match_id is absent.
match_idNoCricAPI match identifier; resolves team_a/team_b/venue automatically.
ownership_thresholdNopercent ownership cap; affects estimated label.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond that: ownership is an estimated proxy based on credit weight, not real ownership data, and this is flagged as 'estimated: true' in the response. It also discloses that match_id auto-resolves team_a/team_b/venue and names the model source. 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.

Conciseness4/5

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

The description is well organized with a front-loaded purpose sentence, an important estimation caveat, and clearly separated Args and Returns sections. Every section adds value without excessive verbosity. Minor redundancy with schema descriptions is acceptable and aids agent readability.

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

Completeness4/5

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

For a read-only prediction tool with five optional parameters and an output schema, the description covers purpose, parameter dependencies, the estimation caveat, and the return shape. It does not discuss error cases or validation failures, but the annotations and schema provide enough structural safety that no critical calling context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without extra parameter detail. The description largely restates the schema's parameter semantics, including the match_id resolution and ownership_threshold behavior. It adds little beyond the structured schema, though the return-field explanation does help clarify what the parameters produce.

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

Purpose4/5

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

The description states a clear purpose: 'Suggest low-ownership picks with positive projected upside,' naming the resource and the specific selection criterion. The caveat about estimated ownership further clarifies what the tool actually returns. It does not explicitly name a sibling alternative, but the low-ownership focus distinguishes it from value-bet and captain-recommendation tools.

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

Usage Guidelines2/5

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

No explicit guidance is given for when to use this tool versus alternatives like cricket_find_value_bets or cricket_captain_recommendation. The parameter dependency notes (match_id vs team_a/team_b/venue) are invocation rules, not selection guidance. The intended use is only implied by the first sentence.

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

cricket_find_value_betsA
Read-onlyIdempotent
Inspect

Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.

NOTE: cricket has no calibrated team-strength model wired yet (unlike the football Elo/Poisson path), so this tool currently returns an EMPTY value_bets list — scoring an edge against a neutral 50/50 prior would flag every market underdog, which would be misleading. It still reports how many events were screened so callers know odds were available. For raw de-vigged prices use cricket_get_live_odds. Real edge detection lands when a cricket win model is wired (see cricket_head_to_head).

Args: team: Optional team name to filter events (case-insensitive substring). Omit to scan every IPL odds event. min_edge: Minimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05. Currently informational only (no bets emitted).

Returns: data.value_bets: always [] until a cricket model is wired. data.events_analysed: count of events screened (both teams present). data.model: "neutral_baseline". data.note: why no bets are emitted. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoOptional team name to filter events (case-insensitive substring). Omit to scan every IPL odds event.
min_edgeNoMinimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05. Currently informational only (no bets emitted).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the major behavioral caveat: the tool always returns an empty value_bets list because no calibrated cricket model exists. It further explains why a neutral baseline would be misleading, describes the exact return fields (value_bets, events_analysed, model, note, meta.estimated), and reveals the auth requirement. 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.

Conciseness5/5

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

The description is longer than average, but every section earns its place: the caveat is essential to prevent misuse, the alternative routing prevents wasted calls, and the Args/Returns breakdown is compact and scannable. The structure front-loads the most critical behavioral warning before details.

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

Completeness5/5

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

For a tool with a major behavioral caveat, the description is complete: it covers prerequisites, current stub behavior, why the behavior exists, what callers can rely on, and where to go for alternatives. Even with an output schema present, the explicit description of value_bets always being [] is necessary and provided.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description largely repeats the schema text for team and min_edge, adding no genuinely new semantic detail beyond what is already in the parameter descriptions. It is adequate but does not elevate understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's intent ('Compare model probabilities against market-implied IPL odds') and immediately corrects the expectation by noting the tool currently returns an empty value_bets list. This distinguishes it from siblings like cricket_get_live_odds and football_find_value_bets, and makes its actual role as an odds-screening stub unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit guidance: raw prices belong in cricket_get_live_odds, real edge detection will come via cricket_head_to_head once a model is wired, and callers should use the events_analysed count to confirm odds availability. It also notes the THEODDS_KEY prerequisite and explains why the tool should not be relied on for actual bets.

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

cricket_get_live_matchesA
Read-onlyIdempotent
Inspect

Return all currently live cricket matches across all series.

Returns: data.matches: list of live match objects (team names, score, status). meta.source: which adapter served the response. meta.is_stale: true if data is from stale cache.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior, so the description does not need to repeat those. It adds useful behavioral context by documenting meta.source (adapter provenance) and meta.is_stale (stale cache indication), which are not visible from annotations or schema alone.

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

Conciseness5/5

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

The description is compact and front-loaded with the primary purpose. The Returns section is clearly structured and provides just enough detail about the response shape without unnecessary fluff. Every sentence earns its place.

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

Completeness5/5

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

For a zero-parameter, read-only live-matches listing tool, this description is complete. It explains what data is returned (matches array with teams, score, status) and includes metadata fields that could affect interpretation (source, staleness). The annotations cover safety semantics, and the output schema is available, so no further detail is needed.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100%, so there is no parameter ambiguity. The description correctly notes that it returns live matches 'across all series', implying no filtering is needed. A baseline of 4 is appropriate for a no-parameter tool.

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

Purpose5/5

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

The description states a specific verb and resource: 'Return all currently live cricket matches across all series.' It clearly distinguishes this from sibling tools like schedule, scorecard, and points table by focusing on live matches. The scope is unambiguous.

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

Usage Guidelines3/5

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

The intended use is implied by the phrase 'currently live cricket matches' — an agent would know to call this when live match data is needed. However, there is no explicit guidance about when not to use it or which sibling tool would be a better alternative for scheduled, completed, or match-detail queries.

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

cricket_get_live_oddsA
Read-onlyIdempotent
Inspect

Return live market head-to-head odds for upcoming/live IPL matches.

Sourced from The Odds API (requires THEODDS_KEY). Without a key the call returns a clean ALL_SOURCES_FAILED envelope rather than crashing.

Args: team: Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every IPL event. The Odds API uses its own opaque event ids, so a CricAPI match_id cannot be resolved to an event yet — filtering is by team name.

Returns: data.events: list of {event_id, home, away, commence_time, bookmakers: [{name, home, away}]} with decimal h2h prices per bookmaker. meta.source: adapter that served the data (theodds / cache:stale).

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoOptional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every IPL event. The Odds API uses its own opaque event ids, so a CricAPI match_id cannot be resolved to an event yet — filtering is by team name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the strong annotations, the description discloses critical runtime behavior: it requires THEODDS_KEY, returns a clean ALL_SOURCES_FAILED envelope instead of crashing when the key is missing, and exposes meta.source to indicate the odds adapter or cache:stale. This is exactly the kind of behavioral context an agent needs beyond readOnly/idempotent hints.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by essential dependency/error behavior, then parameter and return details in clear sections. Every sentence earns its place, and the formatting makes it easy for an agent to parse quickly.

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

Completeness5/5

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

With an output schema available, the description still takes care to explain the return shape (events with bookmakers and decimal h2h prices) and the meta.source field. It also covers the prerequisite key, failure envelope, and filtering caveats, leaving no important operational gap for an agent invoking this tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's Args section essentially repeats the schema's team parameter explanation. Since the schema already fully documents the parameter, the description adds no additional semantic value beyond what's already structured, giving the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Return live market head-to-head odds for upcoming/live IPL matches.' This clearly distinguishes the tool from the many sibling tools, such as football_get_odds or cricket_find_value_bets, by scope (IPL) and data type (h2h odds).

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

Usage Guidelines4/5

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

The description gives clear context: it is for IPL live/upcoming h2h odds, with optional team filtering and a note about The Odds API's opaque event ids. It does not explicitly name sibling alternatives or state when not to use them, but the intended use is clear enough for an agent to select it correctly.

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

cricket_get_pitch_reportA
Read-onlyIdempotent
Inspect

Summarise pitch characteristics for a venue.

Args: venue: Venue key (e.g. wankhede), official name, or city.

Returns: data: {batting_friendly 0..1, expected_first_inn, recommendation, venue, pitch_type}. meta.source: which adapter served the venue record.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueYesVenue key (e.g. ``wankhede``), official name, or city.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail about the return shape: batting_friendly score scale 0..1, expected_first_inn, recommendation, venue, pitch_type, and meta.source. This goes 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.

Conciseness5/5

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

The description is compact and well-structured with a one-sentence summary followed by clear Args and Returns sections. Every line earns its place, and the most important information is front-loaded. There is no unnecessary prose.

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

Completeness5/5

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

For a simple single-parameter read-only reporting tool, the description is complete: it explains the input, the output fields, and the meaning of score ranges. The output schema presence plus the documented return structure leaves little ambiguity for an agent selecting or invoking this tool. No critical information is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter 'venue' is described identically in both the schema and tool description. The description adds no meaning beyond what the schema already provides, such as disambiguation rules or formatting constraints. Baseline 3 is appropriate given the high schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Summarise') and resource ('pitch characteristics for a venue'), making the tool's function immediately clear. It is clearly distinct from sibling cricket tools like scores, squads, or odds. The one-line summary is not a tautology and accurately names the domain.

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

Usage Guidelines3/5

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

The description implies the tool should be used when pitch-related context for a venue is needed, and the venue parameter guidance is helpful. However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions or sibling tools. Usage is inferred rather than stated.

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

cricket_get_points_tableA
Read-onlyIdempotent
Inspect

Return the points table / standings for a cricket series.

Args: series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).

Returns: data: points table rows with team, P, W, L, NRR, Points. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idYesThe series identifier (e.g. IPL 2026 series ID from CricAPI).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already communicate read-only, idempotent, non-destructive behavior. The description adds value by describing the return contract: rows with team, P, W, L, NRR, Points, and meta.source indicating which adapter served the data. This goes beyond the annotation-only picture without contradicting it.

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

Conciseness4/5

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

The core statement is concise and front-loaded, and the Returns section adds useful behavioral detail. The Args section is somewhat redundant with the schema, but the overall length and structure remain clean and scannable.

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

Completeness5/5

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

For a one-parameter, read-only tool with full schema coverage and an output schema, the description is complete enough. It explains what data the caller receives and which adapter produced it. Nothing essential for selecting and invoking the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's Args section merely restates the schema's series_id description. It adds no additional parameter-level insight beyond what the schema already provides, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description opens with 'Return the points table / standings for a cricket series,' which states a specific verb and resource. It also distinguishes itself from sibling standings tools like football_get_standings and f1_get_standings by specifying 'cricket' and 'series.'

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

Usage Guidelines4/5

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

The description clearly establishes when to use it: when a cricket series points table is needed, with a series_id provided. It does not explicitly discuss exclusions or alternatives, but among the cricket sibling tools there is no overlapping standings tool, so the practical ambiguity is low.

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

cricket_get_scheduleA
Read-onlyIdempotent
Inspect

Return the upcoming match schedule, optionally filtered by series.

Args: series_id: Optional. Filter to a specific series. If omitted, returns all upcoming fixtures across all active series. limit: Max matches to return, 1..200 (default 50). offset: Number of matches to skip for paging (default 0).

Returns: data.matches: page of upcoming matches with teams, date, venue. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax matches to return, 1..200 (default 50).
offsetNoNumber of matches to skip for paging (default 0).
series_idNoOptional. Filter to a specific series. If omitted, returns all upcoming fixtures across all active series.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable behavioral detail beyond annotations: pagination semantics, default limit and offset, return shape for matches and pagination, and the meta.source adapter field. This is rich, non-obvious behavior disclosed clearly.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose. The Args and Returns sections are compact, each line carries needed information, and there is no filler or repetition beyond what is useful.

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

Completeness5/5

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

For a read-only tool with zero required parameters, the description is complete enough: it explains filtering, paging, defaults, and what the response contains. The output schema is noted as present, and the description reinforces the key return fields without unnecessary detail.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters and their default/range semantics. The description repeats this information rather than adding new meaning. It clarifies the 'all active series' behavior for series_id, but this is also in the schema.

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

Purpose5/5

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

The description states a specific action ('Return') and a specific resource ('the upcoming match schedule'), with an optional series filter. It clearly distinguishes itself from siblings like cricket_get_live_matches and cricket_get_scorecard by focusing on future fixtures.

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

Usage Guidelines4/5

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

The description gives clear context: it returns upcoming fixtures, optionally filtered by series, and explains the default behavior when series_id is omitted. It does not explicitly name alternatives or say when not to use it, but the purpose is unambiguous.

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

cricket_get_scorecardA
Read-onlyIdempotent
Inspect

Return the full scorecard for a specific match.

Args: match_id: The match identifier (e.g. from cricket_get_live_matches).

Returns: data: full scorecard with innings, partnerships, bowling figures. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
match_idYesThe match identifier (e.g. from cricket_get_live_matches).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, lowering the burden. The description adds useful context about the scope of 'full scorecard' and the meta.source adapter field, but does not go deeper into data freshness or error behavior. This is on par with the calibrated baseline for annotation-carrying tools.

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

Conciseness5/5

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

The description is concise and well-structured with clear Args and Returns sections. The core purpose is front-loaded in a single sentence, and every listed item adds useful information without filler or redundancy.

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

Completeness5/5

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

The tool takes a single required parameter, has 100% schema coverage, an output schema, and strong safety annotations. The description supplies the only missing workflow detail—how to source the match_id—making it fully complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the tool description repeats the same match_id explanation (including the reference to cricket_get_live_matches). The description does not add any semantic detail beyond what the input schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

Description opens with 'Return the full scorecard for a specific match', a specific verb and resource, and the Returns section details exactly what a scorecard contains (innings, partnerships, bowling figures). This clearly distinguishes it from siblings like cricket_get_live_matches, cricket_get_squad, and cricket_get_pitch_report.

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

Usage Guidelines4/5

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

The description provides a clear prerequisite by noting the match_id is obtained from cricket_get_live_matches, which establishes when this tool is appropriate. It does not explicitly name alternatives or exclusion cases, but the narrow scope of 'scorecard for a specific match' makes those unnecessary.

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

cricket_get_squadA
Read-onlyIdempotent
Inspect

Return the squad roster for a cricket team, optionally for a specific series.

Args: team: Team code or name (e.g. "MI", "CSK", "IND", "AUS"). series_id: Optional. Series ID to pull the tournament-specific squad. If omitted, falls back to static seed data.

Returns: data.players: list of players with name, role, and credits. meta.source: adapter that served the data (cricapi / static_seed).

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam code or name (e.g. "MI", "CSK", "IND", "AUS").
series_idNoOptional. Series ID to pull the tournament-specific squad. If omitted, falls back to static seed data.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations by disclosing the fallback to static seed data and the meta.source adapter behavior, which helps the agent understand possible data provenance.

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

Conciseness5/5

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

The description is concise and well-structured with a clear one-line purpose, Args section, and Returns section. Every sentence provides useful information, and the most important statement is front-loaded. There is no redundant or filler content.

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

Completeness5/5

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

For a simple two-parameter, read-only tool with full schema coverage, an output schema, and rich annotations, the description is fully sufficient. It explains the optional behavior, fallback source, and return fields, leaving no important operational gap for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description repeats the examples and fallback explanation without adding significant new meaning beyond the schema. This matches the baseline of 3 for fully covered parameters.

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

Purpose5/5

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

The description opens with a clear, specific verb and resource: 'Return the squad roster for a cricket team'. It clearly differentiates this tool from the many other cricket and football tools by naming the exact data domain. The optional series scoping is also stated immediately.

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

Usage Guidelines4/5

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

The description provides clear context for when to supply series_id and what happens when it is omitted, falling back to static seed data. It does not explicitly name alternatives or exclusions, but the purpose and optional parameter behavior are clear enough for an agent to decide when to invoke it.

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

cricket_head_to_headA
Read-onlyIdempotent
Inspect

Compare two cricket teams head-to-head using squad form and player stats.

Args: team_a: First team code or name (e.g. "MI", "India"). team_b: Second team code or name (e.g. "CSK", "Australia").

Returns: data: {team_a, team_b, team_a_edge_count, team_b_edge_count, key_players_a, key_players_b, h2h_win_rate_a, h2h_win_rate_b, win_prob_a, win_prob_b}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_aYesFirst team code or name (e.g. "MI", "India").
team_bYesSecond team code or name (e.g. "CSK", "Australia").

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by stating that results are estimates via 'meta.estimated: true' and by listing the computed output fields such as edge counts and win probabilities.

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

Conciseness4/5

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

The description is well-structured with a front-loaded purpose statement, followed by Args and Returns sections. It is reasonably concise, though the Args section is redundant with the input schema and could be trimmed.

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

Completeness5/5

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

Given the simple two-parameter interface, read-only annotations, and output schema availability, the description is complete. It explains what the tool does, what inputs are needed, and what outputs to expect, including the estimated-result flag.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are already documented with examples in the input schema. The description's Args section duplicates that information without adding extra semantics like accepted code formats, case sensitivity, or ordering constraints.

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

Purpose5/5

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

The description clearly states the tool's verb and resource: 'Compare two cricket teams head-to-head'. It is specific to cricket team comparison, which distinguishes it from player-level, football, and F1 sibling tools.

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

Usage Guidelines4/5

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

The first sentence gives clear context for when to use the tool: comparing two cricket teams using squad form and player stats. However, it does not explicitly mention alternative tools or state when not to use it, so it falls short of a perfect score.

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

cricket_player_form_indexA
Read-onlyIdempotent
Inspect

Report a 0-100 form score for a player using the player_stats chain.

Args: player_id: Upstream player identifier (CricAPI/Cricbuzz id).

Returns: data.form_score: 0..100 indicator. data.trend: "rising" / "stable" / "falling". data.samples: how many recent innings were available. meta.source: which adapter served the underlying stats. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
player_idYesUpstream player identifier (CricAPI/Cricbuzz id).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, non-destructive, and idempotent behavior. The description adds meaningful behavioral context: the result is estimated (meta.estimated true), the score range is 0-100, and it reveals the underlying player_stats chain and adapter sourcing.

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

Conciseness4/5

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

The structure is clear and front-loaded with the core purpose, followed by concise Args and Returns sections. It is slightly repetitive of the schema, but every included detail serves a purpose and there is no fluff.

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

Completeness4/5

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

For a single-parameter, read-only tool with an output schema, the description is sufficiently complete. It covers the score, trend direction, sample size, source adapter, and estimation flag, giving an agent enough context to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description's Args section duplicates the schema's player_id description rather than adding new meaning such as examples, formats, or acceptable identifier variants.

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

Purpose5/5

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

The description clearly states the tool's purpose: reporting a 0-100 form score for a player. It names the resource ('player') and the specific output ('form score'), which distinguishes it from other cricket tools focused on scorecards, matchups, or recommendations.

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

Usage Guidelines3/5

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

The usage context is implied: call this tool when a numeric player form score or trend is needed. However, it does not explicitly contrast itself with sibling tools like cricket_player_matchup or football_form_trends, nor provide when-not-to-use guidance.

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

cricket_player_matchupA
Read-onlyIdempotent
Inspect

Analyse the head-to-head matchup between two cricket players based on role and career stats.

Args: player_a: Player ID or name for the first player. player_b: Player ID or name for the second player.

Returns: data: {matchup_type, edge_holder, edge_reason, signals, role_a, role_b}. meta.estimated: true — heuristic model, not ball-by-ball H2H data.

ParametersJSON Schema
NameRequiredDescriptionDefault
player_aYesPlayer ID or name for the first player.
player_bYesPlayer ID or name for the second player.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description openly discloses that this is a heuristic model, not ball-by-ball H2H data, and clarifies that results are estimated (meta.estimated: true). It also reveals the return shape including edge_holder and edge_reason, adding meaningful behavioral context.

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

Conciseness5/5

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

The description is compact, well-organized with Args and Returns sections, and contains no filler. The core purpose is front-loaded and the heuristic caveat is clearly stated, earning its place.

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

Completeness5/5

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

For a two-parameter read-only tool with a documented output schema, the description is complete. It covers the purpose, input semantics, return fields, and the critical estimation limitation, leaving no meaningful gap for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the description repeats the schema's player_a/player_b semantics without adding extra detail. There is no additional guidance on ID formats, name resolution behavior, or input preprocessing, so it adds no value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool analyzes the head-to-head matchup between two cricket players based on role and career stats, with a specific verb and resource. However, it does not explicitly differentiate this from the sibling tool cricket_head_to_head, leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like cricket_head_to_head or cricket_player_form_index. The description implies pairwise player comparison but does not specify exclusions, routing conditions, or preferred scenarios.

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

cross_sport_build_accumulatorA
Read-onlyIdempotent
Inspect

Model the joint probability of multiple outcomes across football and cricket.

Args: legs: Total legs across both sports (2-8). Default 3. min_edge: Minimum edge per leg. Default 0.05.

Returns: data: same shape as football_build_accumulator, with sport field per leg. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoTotal legs across both sports (2-8). Default 3.
min_edgeNoMinimum edge per leg. Default 0.05.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral context: return data has the same shape as football_build_accumulator with a per-leg sport field, and meta.estimated is true. This goes beyond the annotations and helps the agent understand the output before invoking.

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

Conciseness4/5

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

The description is short and front-loaded with the purpose, followed by a clean Args/Returns structure. The Args section is redundant with the schema, which slightly reduces efficiency, but overall there is no fluff and it remains easy to scan.

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

Completeness4/5

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

With an output schema present and annotations describing the tool as read-only, idempotent, and non-destructive, the description is mostly complete. It clarifies the return shape and the estimated flag, which are not in the annotations. A small gap is that it relies on knowledge of football_build_accumulator's shape, but that is acceptable given the output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters with defaults and constraints. The description's Args section repeats this information without adding new meaning. The parameter semantics are adequately covered by the schema, and the description adds no extra value here.

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

Purpose4/5

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

The description clearly states the tool models joint probability of outcomes across football and cricket, which distinguishes it from single-sport siblings like football_build_accumulator. The verb 'model' is somewhat abstract, but the resource and scope are explicit. It does not explicitly name an alternative, but the cross-sport scope is clear.

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

Usage Guidelines3/5

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

The phrase 'across football and cricket' implies this is for multi-sport accumulators, and referencing football_build_accumulator's shape hints at a relationship. However, it never explicitly says when to use this tool versus a single-sport alternative, nor does it state any exclusions or prerequisites. Usage context is implied, not clearly directed.

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

f1_get_driversA
Read-onlyIdempotent
Inspect

Return driver list for a specific F1 session.

Args: session_key: OpenF1 session identifier.

Returns: data.drivers: list of driver objects with driver_number, full_name, team. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyYesOpenF1 session identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds modest context by documenting the response shape (data.drivers with specific fields, meta.source), but since an output schema exists, this adds limited value beyond the structured data. 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.

Conciseness4/5

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

The description is compact and well-structured with clear Args/Returns sections, and the purpose is front-loaded. One minor deduction: the Args section duplicates the schema exactly, which adds no value beyond the structured field.

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

Completeness4/5

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

For a simple one-parameter, read-only tool with full schema coverage, an output schema, and complete safety annotations, the description is nearly sufficient. The only gap is routing guidance—how to acquire the session_key and when to prefer this tool over sibling tools—which is a minor omission given the simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already fully documents session_key as 'OpenF1 session identifier.' The description merely repeats this verbatim, adding no additional meaning about format, source, or how to obtain a valid value. Baseline 3 is appropriate.

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

Purpose5/5

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

The first sentence states a specific verb ('Return'), a specific resource ('driver list'), and a precise scope ('for a specific F1 session'). Combined with the Returns section listing driver_number, full_name, and team, an agent can unambiguously distinguish this from siblings like f1_get_standings or f1_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.

Usage Guidelines3/5

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

The requirement of a session_key implies the agent must first obtain one (likely from f1_get_sessions), but this is never stated. There is no explicit guidance on when to choose this tool over the many F1 siblings that also return driver-related data, such as f1_get_standings or 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.

f1_get_lap_timesA
Read-onlyIdempotent
Inspect

Return lap times for a driver in a specific F1 session.

Args: session_key: OpenF1 session identifier. driver_number: Driver's race number (e.g. 1 for Verstappen). limit: Max laps to return, 1..200 (default 100 — covers most full races). offset: Number of laps to skip for paging (default 0).

Returns: data.laps: page of lap objects with lap_number and lap_duration. OpenF1 does not put compound/tyre_life here — those live on the stints endpoint. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax laps to return, 1..200 (default 100 — covers most full races).
offsetNoNumber of laps to skip for paging (default 0).
session_keyYesOpenF1 session identifier.
driver_numberYesDriver's race number (e.g. 1 for Verstappen).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable operational behavior: pagination details (has_more, next_offset), response shape, and the data-availability caveat about compound/tyre_life living elsewhere. 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.

Conciseness5/5

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

Well-structured with a one-line purpose, an Args section, and a Returns breakdown. Every sentence earns its place; the description is detailed yet concise, with no redundant repetition of schema descriptions.

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

Completeness5/5

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

For a read-only, paged list endpoint with an output schema, this description is complete: it covers required parameters, defaults, response structure, pagination semantics, source metadata, and a data-availability caveat. Nothing an agent needs 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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds practical semantics beyond the schema: a concrete driver number example ('1 for Verstappen'), why the default limit of 100 covers most races, and how offset enables paging. This enriches parameter understanding.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Return lap times for a driver in a specific F1 session.' This clearly distinguishes it from siblings like f1_get_race_results, f1_get_standings, and f1_get_drivers, leaving no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

Provides clear context on paging and defaults, and explicitly notes that compound/tyre_life are not included and live on the stints endpoint, which helps prevent misuse when tyre data is needed. It does not explicitly name sibling tools as alternatives, but the guidance is sufficient for correct selection.

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

f1_get_race_resultsA
Read-onlyIdempotent
Inspect

Return the final classification for one F1 race, keyed by year and round.

Args: year: Championship year (e.g. 2025). round: Round number within the season (1-based; e.g. 1 for the opener).

Returns: data.results: Ergast/Jolpica RaceTable payload — finishing order, times, grid positions, points, and fastest laps for the race. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesChampionship year (e.g. 2025).
roundYesRound number within the season (1-based; e.g. 1 for the opener).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context about the returned payload: finishing order, times, grid positions, points, fastest laps, and the meta.source adapter. It does not detail rate limits or errors, but it does not contradict any annotation and provides meaningful behavioral detail.

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

Conciseness5/5

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

The description is concise and well-structured: a one-sentence purpose, clear Args, and a Returns section. Every sentence carries useful information with no fluff, and the core purpose is front-loaded.

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

Completeness5/5

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

For a simple two-parameter, read-only tool with full schema coverage and an output schema, the description is complete. It covers what the tool returns, the key parameters, and the data source, leaving no critical gaps for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's Args section essentially mirrors the schema's parameter descriptions. It adds no extra semantic meaning 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.

Purpose5/5

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

The description states a specific verb and resource: 'Return the final classification for one F1 race, keyed by year and round.' It clearly differentiates from sibling tools like f1_get_lap_times, f1_get_sessions, and f1_get_standings by focusing on a single race's final classification.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: when you need the final classification/results of one specific race. It does not explicitly name alternatives or exclusion conditions, but the resource scope ('one F1 race') provides clear context among the F1 sibling tools.

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

f1_get_sessionsA
Read-onlyIdempotent
Inspect

Return F1 sessions for a given year, optionally filtered by country.

Args: year: Championship year (e.g. 2025). country: Optional country name to filter (e.g. "Monaco").

Returns: data.sessions: list of session objects with session_key, session_type, date. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesChampionship year (e.g. 2025).
countryNoOptional country name to filter (e.g. "Monaco").

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds return structure (session_key, session_type, date) and meta.source, but does not disclose additional behavioral details like ordering, timezone handling, or edge cases.

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

Conciseness5/5

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

The description is well-structured and front-loaded with a one-sentence summary, followed by clear Args and Returns sections. Every element carries useful information, with no fluff or redundancy.

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

Completeness4/5

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

For a simple two-parameter read-only tool with an output schema and safety annotations, the description covers the essential contract. It could mention whether the country filter is exact or partial and whether sessions are sorted, but nothing critical blocks correct invocation.

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

Parameters3/5

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

The input schema already fully documents both parameters with descriptions and examples ('2025', 'Monaco'). The description repeats this information without adding extra meaning such as exact-match semantics, required formats, or allowed value ranges.

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

Purpose5/5

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

Description states a specific verb and resource: 'Return F1 sessions for a given year, optionally filtered by country.' The resource is unique among siblings (no other sessions tool), so it is clearly distinguishable from f1_get_drivers, f1_get_race_results, and similar tools.

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

Usage Guidelines3/5

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

The description gives clear scope (year, optional country) but no explicit guidance on when to use this tool versus alternatives or when not to use it. Usage is implied by the tool name and resource rather than stated as a recommendation.

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

f1_get_standingsA
Read-onlyIdempotent
Inspect

Return F1 driver and constructor championship standings for a year.

Args: year: Championship year (e.g. 2025).

Returns: data.driver_standings: driver championship positions and points. data.constructor_standings: constructor championship positions and points. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesChampionship year (e.g. 2025).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description carries a lower burden. It adds a little context about the returned sections and meta.source, but does not disclose any additional behavioral traits such as data freshness, error handling, or how standings are computed mid-season.

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

Conciseness5/5

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

The description is compact, organized with Args/Returns/Meta sections, and every sentence carries useful information. There is no filler or redundant content.

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

Completeness5/5

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

For a simple one-parameter, read-only tool with strong annotations and an output schema, this description is complete. It covers what the tool returns, the required argument, and the source metadata, which is sufficient for an agent to invoke it correctly.

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

Parameters3/5

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

Input schema coverage is 100% and the sole parameter 'year' is already fully described in the schema. The description only repeats the same example and does not add new semantic meaning such as allowed ranges or formatting requirements.

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

Purpose5/5

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

The description states a specific verb ('Return'), a precise resource ('F1 driver and constructor championship standings'), and a scope ('for a year'). It clearly distinguishes this from sibling tools like f1_get_drivers, f1_get_race_results, and football_get_standings.

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

Usage Guidelines3/5

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

The use case is implied: use this tool when F1 championship standings for a given year are needed. However, it does not explicitly say when to prefer this over alternatives or mention exclusions (e.g., race results, individual driver data).

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

f1_get_weatherA
Read-onlyIdempotent
Inspect

Return weather data for a specific F1 session.

Args: session_key: OpenF1 session identifier.

Returns: data.weather: list of weather snapshots with temperature, rainfall, wind. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyYesOpenF1 session identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish this as a safe, read-only, idempotent operation. The description adds meaningful behavioral detail by specifying the return shape: a list of weather snapshots with temperature, rainfall, and wind, plus a meta.source field. This goes beyond the annotation-only baseline without contradicting any hints.

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

Conciseness4/5

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

The description is reasonably concise, front-loads the core purpose in the first sentence, and uses an Args/Returns structure that is easy to parse. It slightly redundantly repeats the parameter description from the schema, but overall it is efficient and well organized.

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

Completeness4/5

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

For a single-parameter, read-only data retrieval tool with a known output schema, the description covers the essential inputs and return fields. It is complete enough for an agent to call correctly, though it could optionally note that session_key comes from f1_get_sessions. The presence of an output schema reduces the need to document return values in detail.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents session_key as an OpenF1 session identifier. The description repeats the exact same phrase, adding no new semantic meaning. The baseline of 3 is appropriate since the schema fully handles parameter documentation.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Return weather data for a specific F1 session.' It clearly distinguishes from sibling tools like f1_weather_strategy_impact (which analyzes strategy impact) and f1_get_sessions (session metadata), making the tool's function unambiguous.

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

Usage Guidelines2/5

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

The description explains what the tool does but provides no guidance on when to use it versus alternatives. It does not mention that a session_key must first be obtained via f1_get_sessions, nor does it contrast with f1_weather_strategy_impact, which would help an agent choose the right weather-related tool.

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

f1_head_to_head_paceA
Read-onlyIdempotent
Inspect

Compare lap-time pace distribution between two drivers in a session.

Args: session_key: OpenF1 session identifier. driver_a: First driver's race number. driver_b: Second driver's race number.

Returns: data: {driver_a_avg_s, driver_b_avg_s, delta_s, faster_driver}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
driver_aYesFirst driver's race number.
driver_bYesSecond driver's race number.
session_keyYesOpenF1 session identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful context by stating the return shape and the behavioral trait 'meta.estimated: true', signaling that results are estimates rather than exact measurements. No annotation contradictions exist.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and structured into Args/Returns sections. Every line contributes information, and there is no wasted text or redundant elaboration.

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

Completeness3/5

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

With an output schema present and annotations covering safety, the description is mostly sufficient. However, it says 'distribution' yet only returns averages (averages, delta, faster driver), which is a potential mismatch. It also omits any detail on lap selection methodology (e.g., whether pit laps are excluded) and gives no contextual guidance for choosing this over f1_race_pace_compare.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's Args section merely repeats the same information as the schema fields. It adds no deeper meaning about parameter formats, constraints, or how session_key/driver numbers are resolved. A baseline of 3 is appropriate because the schema carries the semantic load.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Compare lap-time pace distribution between two drivers in a session.' This clearly conveys the core operation. However, it does not explicitly differentiate from the closely named sibling f1_race_pace_compare, so the agent must infer the distinction from the 'head-to-head' framing.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives like f1_race_pace_compare or f1_get_lap_times. The description only states what the tool does and its parameters, leaving the selection criteria entirely to the agent's inference.

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

f1_predict_pit_strategyA
Read-onlyIdempotent
Inspect

Predict the optimal pit-stop strategy for a driver in an F1 race session.

Args: session_key: OpenF1 session identifier for a recorded race. driver_number: Driver's race number (e.g. 1 for Verstappen). current_lap: Current lap to project from (default 1 = full race ahead). total_laps: Total race laps. If omitted, inferred from the highest observed lap_number in the fetched laps (correct for Monaco 78 / Spa 44), falling back to 57 when no laps are available. An explicit value always wins.

Returns: data.stop_laps: recommended pit laps. data.compound_sequence: tyre compounds for each stint. data.expected_finish_position: currently always None (not modelled). data.confidence: 0.0-1.0 model confidence. meta.total_laps: race length used (explicit arg, else inferred from laps). meta.estimated: true.

Example: f1_predict_pit_strategy(session_key=9158, driver_number=1) f1_predict_pit_strategy(session_key=9158, driver_number=16, current_lap=20, total_laps=78)

ParametersJSON Schema
NameRequiredDescriptionDefault
total_lapsNoTotal race laps. If omitted, inferred from the highest observed lap_number in the fetched laps (correct for Monaco 78 / Spa 44), falling back to 57 when no laps are available. An explicit value always wins.
current_lapNoCurrent lap to project from (default 1 = full race ahead).
session_keyYesOpenF1 session identifier for a recorded race.
driver_numberYesDriver's race number (e.g. 1 for Verstappen).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses important behavioral details beyond the annotations: expected_finish_position is currently always None, confidence is a 0.0-1.0 model output, meta.estimated is always true, and total_laps has a specific inference/fallback strategy. This prevents the agent from over-relying on unmodelled outputs and clarifies the tool's computational nature.

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

Conciseness4/5

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

The description is well-structured with Args, Returns, and Example sections, and the most important purpose is front-loaded. Some redundancy exists because the Args section repeats the schema descriptions nearly verbatim, but the Returns section and examples add genuine value.

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

Completeness5/5

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

Even though an output schema exists, the description goes further by explaining the shape and semantics of the returned fields, including expected_finish_position limitations, confidence, and total_laps resolution. It also provides two illustrative call examples and documents fallback behavior, making the tool fully actionable for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description's Args section largely duplicates the schema text and adds only marginal value through concrete examples and the 'Monaco 78 / Spa 44' clarification already present in the schema. It does not meaningfully extend parameter semantics beyond what structured data provides.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Predict the optimal pit-stop strategy for a driver in an F1 race session.' This clearly distinguishes it from sibling tools like f1_tyre_degradation or f1_undercut_window, which focus on narrower data rather than full strategy prediction.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: for projecting pit-stop strategy from a current lap in a race session, with examples. However, it does not explicitly tell the agent when not to use it or name related alternatives such as f1_tyre_degradation or f1_undercut_window, so it stops short of full alternative routing.

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

f1_qualifying_analysisA
Read-onlyIdempotent
Inspect

Analyse a qualifying session: best lap per driver, gap to pole, projected grid.

Args: session_key: OpenF1 session identifier for a Qualifying session.

Returns: data.grid: [{position, driver_number, full_name, team_name, best_lap_gap_s}]. data.pole_time_s: pole lap duration in seconds. data.drivers_analysed: count of drivers with valid laps. meta.estimated: true — grid derived from session laps, not official timing.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyYesOpenF1 session identifier for a Qualifying session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations, the description discloses that the returned grid is estimated and derived from session laps, not official timing ('meta.estimated: true — grid derived from session laps'), and defines drivers_analysed as valid laps only. This adds meaningful non-obvious behavior while annotations already cover read-only/idempotent safety.

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

Conciseness5/5

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

The description is compact and front-loaded with a one-line summary, followed by a short Args block and a clearly structured Returns list. Every line earns its place, including the estimated-grid caveat.

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

Completeness5/5

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

For a single-parameter analytical tool with read-only/idempotent annotations and an output schema, this description fully covers input requirements, return fields, and the key estimation caveat. Nothing needed to invoke the tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the single parameter's schema description already provides 'OpenF1 session identifier for a Qualifying session.' The description merely repeats that wording without adding format, source, or examples, so it adds no semantic value beyond the schema.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Analyse a qualifying session', then lists concrete outputs (best lap per driver, gap to pole, projected grid). This clearly distinguishes it from sibling f1_get_* tools, which return raw sessions, laps, or results rather than a derived grid.

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

Usage Guidelines4/5

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

The description states the intended context: use it to analyse a qualifying session, and the schema/Args reinforce that session_key must identify a Qualifying session. It does not explicitly name alternative tools for official timing or race analysis, so it stops short of a 5, but the qualifying-only scope is clear.

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

f1_race_pace_compareA
Read-onlyIdempotent
Inspect

Compare race-pace and tyre degradation between two F1 drivers in a session.

Args: session_key: OpenF1 session identifier. driver_a: First driver's race number. driver_b: Second driver's race number.

Returns: data: {by_compound, overall_faster, compounds_compared}. meta.estimated: true — degradation model fit, not official timing.

ParametersJSON Schema
NameRequiredDescriptionDefault
driver_aYesFirst driver's race number.
driver_bYesSecond driver's race number.
session_keyYesOpenF1 session identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare this a safe, read-only, idempotent operation. The description adds valuable transparency by explicitly stating that the result is a degradation model fit, not official timing (meta.estimated: true). This goes beyond the annotations and informs the agent that output is estimated.

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

Conciseness4/5

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

The description is compact and front-loaded with a clear one-sentence summary. The Args block is redundant with the schema, but the Returns section adds useful structure about the output, making the overall definition efficient and scannable.

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

Completeness4/5

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

Given the rich annotations, 100% schema coverage, and presence of an output schema, the description provides sufficient context for correct invocation. It also highlights the estimated nature of the results. A small gap is the lack of differentiation from f1_head_to_head_pace, but this does not critically impair completeness.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's Args section essentially repeats the schema's parameter descriptions without adding new meaning. It correctly identifies session_key, driver_a, and driver_b, but adds no extra semantic detail, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific action ('Compare race-pace and tyre degradation') and a clear resource scope ('between two F1 drivers in a session'). It is distinguishable from generic F1 tools, though it does not explicitly differentiate itself from the closely related sibling f1_head_to_head_pace.

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

Usage Guidelines3/5

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

The intended use is implied by the first sentence: use this when comparing two drivers' race pace and tyre degradation. However, there is no explicit 'when to use' vs 'when not to use' guidance, nor any mention of alternatives among the many F1 sibling tools.

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

f1_tyre_degradationA
Read-onlyIdempotent
Inspect

Fit a tyre degradation model for a driver + compound in a session.

Args: session_key: OpenF1 session identifier. driver_number: Driver's race number. compound: Tyre compound (SOFT, MEDIUM, HARD, INTER, WET).

Returns: data: {intercept, slope, residual_std, sample_count}. meta.estimated: true — model output, not telemetry oracle.

ParametersJSON Schema
NameRequiredDescriptionDefault
compoundYesTyre compound (SOFT, MEDIUM, HARD, INTER, WET).
session_keyYesOpenF1 session identifier.
driver_numberYesDriver's race number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful context beyond that by explicitly stating the result is estimated model output rather than observed telemetry, and it exposes key return fields like residual_std and sample_count, which signal reliability and uncertainty.

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

Conciseness5/5

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

The description is tightly organized with a one-sentence summary followed by compact Args and Returns sections. Every line provides necessary information, and the key behavioral note about estimated output is prominently placed at the end.

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

Completeness4/5

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

For a three-parameter model-fitting tool with an output schema and clear return fields, the description is largely complete. It covers inputs, output shape, and the estimated nature of the result; a minor gap is the absence of caveats about data sufficiency or when model fitting might fail.

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

Parameters3/5

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

Schema description coverage is 100%, and the description simply restates the same parameter meanings (session key, driver number, compound) without adding new detail such as formats, constraints, or compound-specific behavior. This meets the baseline for schema-covered parameters but adds no extra semantic value.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Fit a tyre degradation model for a driver + compound in a session.' It clearly identifies the exact inputs and the statistical nature of the tool, distinguishing it from raw-telemetry sibling tools like f1_get_lap_times.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance is provided relative to sibling tools. The 'model output, not telemetry oracle' phrase hints at a distinction from raw data tools, but it does not state when an agent should choose this over alternatives like f1_race_pace_compare or f1_predict_pit_strategy.

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

f1_undercut_windowA
Read-onlyIdempotent
Inspect

Estimate whether an undercut is viable for the attacker against the target.

Args: session_key: OpenF1 session identifier. attacker_number: Attacking driver's race number. target_number: Target driver's race number. current_lap: Current lap number in the race.

Returns: data: {laps_to_clear, viable, marginal}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
current_lapYesCurrent lap number in the race.
session_keyYesOpenF1 session identifier.
target_numberYesTarget driver's race number.
attacker_numberYesAttacking driver's race number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context by stating this is an estimate and exposing meta.estimated: true, indicating the result is a model calculation rather than an observed race fact. 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.

Conciseness4/5

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

The description is short, front-loaded with the primary purpose, and closes with a compact Returns summary. However, the Args block duplicates information already present in the input schema, introducing mild redundancy.

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

Completeness4/5

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

Given that an output schema exists and annotations cover safety/idempotence, the description supplies enough calling context: required parameters, expected outputs, and the estimated nature of the result. It does not explain viability thresholds, but that is not necessary for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the Args section merely repeats the schema descriptions without adding constraints, units, edge-case guidance, or formatting rules. The schema carries the parameter documentation burden, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Estimate whether an undercut is viable for the attacker against the target.' It also clarifies the return fields (laps_to_clear, viable, marginal), making the tool's scope unmistakable and distinguishable from broader pit/tyre strategy siblings.

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

Usage Guidelines3/5

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

The purpose clearly implies when to use the tool, but the description does not explicitly state when to prefer it over related alternatives like f1_predict_pit_strategy or f1_tyre_degradation, nor does it mention any exclusions. Usage context 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_weather_strategy_impactA
Read-onlyIdempotent
Inspect

Analyse weather data and recommend compound or pit-window adjustments.

Args: session_key: OpenF1 session identifier.

Returns: data: {has_rain, avg_track_temp_c, compound_recommendation, recommendation}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyYesOpenF1 session identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety behavior is covered. The description adds useful context by listing the returned fields and stating 'meta.estimated: true', which signals the output includes estimates. No contradiction exists between the description and annotations.

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

Conciseness5/5

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

The description is compact and well-structured: a one-sentence purpose statement followed by concise Args and Returns blocks. Every element adds information, and the key action is front-loaded in the first sentence, making the tool's purpose immediately scannable.

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

Completeness4/5

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

For a single-parameter, read-only tool with strong annotations and an explicit return shape, the description is largely complete. It covers what the tool does, the required input, and the output structure. It would be more complete if it clarified when to prefer this over sibling strategy tools, but nothing critical 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.

Parameters3/5

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

Schema description coverage is 100%: the only parameter, session_key, is described in the schema as 'OpenF1 session identifier.' The description repeats this exact meaning without adding further semantic detail such as accepted session types, format, or example values, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description opens with a specific verb ('Analyse'), a clear resource ('weather data'), and an explicit outcome ('recommend compound or pit-window adjustments'). This distinguishes it from raw-data tools like f1_get_weather and makes the tool's function obvious, though it does not explicitly separate it from closely-related strategy tools like f1_predict_pit_strategy or f1_undercut_window.

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

Usage Guidelines3/5

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

The intended use case is implied: call this when you need weather-based compound or pit-window recommendations. However, there is no explicit when-to-use guidance, no mention of when not to use it, and no reference to alternative F1 strategy or weather tools, so an agent must infer the boundary from the name and description.

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

football_build_accumulatorA
Read-onlyIdempotent
Inspect

Model the joint probability of several match outcomes from the top model-vs-market gaps.

Calls football_find_value_bets internally to fetch live odds, then selects the strongest legs and combines them under the joint-probability model.

Args: legs: Number of legs (2-8). Default 3. min_edge: Minimum edge threshold per leg. Default 0.05.

Returns: data: {legs, legs_used, combined_odds, combined_model_prob, combined_edge, risk_flag, independence_warning}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoNumber of legs (2-8). Default 3.
min_edgeNoMinimum edge threshold per leg. Default 0.05.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark it read-only, open-world, and idempotent, and the description adds meaningful context beyond that: it relies on a live internal call to football_find_value_bets, selects the strongest legs, and returns risk_flag and independence_warning alongside meta.estimated=true. This gives an agent a solid model of execution behavior and output caveats without contradicting 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.

Conciseness5/5

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

The description is compact and well-organized: a one-sentence purpose, a two-sentence mechanism, then clearly labeled Args and Returns. Every sentence contributes useful information, and the internal dependency is front-loaded alongside the purpose.

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

Completeness5/5

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

For a read-only combinatorial modeling tool, the description is complete: it explains how legs are sourced, what parameters control the behavior, what the return object contains, and that the result is estimated. The presence of an output schema further reduces the burden, and no critical operational gap remains.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The Args section largely repeats the schema's parameter descriptions ('Number of legs (2-8). Default 3.' and 'Minimum edge threshold per leg. Default 0.05.'), adding no notably deeper semantic context beyond what the structured schema already provides.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Model the joint probability of several match outcomes from the top model-vs-market gaps.' It then clarifies the workflow by stating it calls football_find_value_bets internally and combines selected legs, which clearly distinguishes it from the single-value-bet sibling and the cross-sport accumulator.

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

Usage Guidelines4/5

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

The intended context is clear: build an accumulator from strong model-vs-market edges using live odds fetched via football_find_value_bets. It does not explicitly state when not to use it or name alternatives such as cross_sport_build_accumulator, so it stops short of full exclusion guidance.

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

football_find_value_betsA
Read-onlyIdempotent
Inspect

Surface the largest gaps between the model's win probability and the market.

De-vigs each market's 1X2 decimal odds (removes the margin so implied probabilities sum to 1) and compares them to this server's own match-outcome probabilities — the same Elo/Poisson path football_match_predictor uses. Where the model probability exceeds the de-vigged market probability by at least min_edge, the outcome is flagged with its edge and the model's fair odds.

Args: team: Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to scan every WC 2026 odds event. min_edge: Minimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05 (5 percentage points).

Returns: data.value_bets: list of {event_id, home, away, outcome, model_prob, fair_odds, market_odds, edge, bookmaker}, sorted by edge descending. data.events_analysed: events with both teams rated (model-comparable). meta.estimated: true. meta.is_stale reflects the odds freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoOptional team name to filter events (case-insensitive substring, matched against both sides). Omit to scan every WC 2026 odds event.
min_edgeNoMinimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05 (5 percentage points).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the de-vigging algorithm, the model source (same Elo/Poisson path as football_match_predictor), the limitation that events_analysed only includes model-comparable events, and that meta.estimated is true with meta.is_stale reflecting odds freshness. This gives an agent a realistic picture of the tool's behavior and edge cases. There is no contradiction with 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.

Conciseness5/5

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

The description is front-loaded with a one-sentence purpose, followed by a concise algorithm explanation and structured Args/Returns sections. Every sentence earns its place, covering the key behavioral nuance, filter semantics, and return shape without repetition or padding.

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

Completeness5/5

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

Given the read-only annotations and an output schema, the description provides the essential invocation context: filter semantics, threshold behavior, return fields, sort order, model provenance, and the staleness flag. An agent has enough information to decide whether to call this tool and how to interpret its results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents team and min_edge. The description's Args section largely restates the schema, adding little new parameter-level meaning beyond reinforcing the default and the WC 2026 scope. With the schema doing the heavy lifting, the baseline of 3 is appropriate.

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

Purpose5/5

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

The first sentence states a specific verb and resource: it surfaces gaps between the model's win probability and the market. The rest of the description makes the purpose concrete by defining the de-vigging process, the edge threshold, and the comparison to the server's own probabilities. It also distinguishes itself from football_match_predictor by clarifying it is the market-comparison layer, and its football scope separates it from cricket_find_value_bets.

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

Usage Guidelines4/5

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

The description gives clear context for when to invoke the tool: to find football value bets where model probability exceeds de-vigged market probability by at least min_edge. It explains how to narrow to a team or scan all WC 2026 odds events. It does not explicitly state when-not-to-use it or name alternatives like football_get_odds or football_match_predictor, 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.

football_get_fixturesA
Read-onlyIdempotent
Inspect

Return World Cup 2026 fixtures (live providers, else the group schedule).

Args: limit: Max fixtures to return, 1..200 (default 50). offset: Number of fixtures to skip for paging (default 0).

Returns: data.fixtures: page of {home, away, date/group, status, home_goals, away_goals}. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that served the data (static_seed = group schedule only).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax fixtures to return, 1..200 (default 50).
offsetNoNumber of fixtures to skip for paging (default 0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the burden is lower. The description adds meaningful behavioral context by disclosing that results may come from a static_seed adapter (group schedule only) when live providers are unavailable, and it outlines the response fields including pagination and meta.source. This goes 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.

Conciseness4/5

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

The description is well-structured with a front-loaded purpose sentence followed by Args and Returns sections. Some redundancy exists because the Args block duplicates the schema and the output schema already documents return values, but overall it remains compact and readable.

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

Completeness5/5

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

For a simple paginated read-only fixture tool, the description is complete: it explains the data source fallback, pagination semantics, and return shape via structured sections. With annotations covering safety and an output schema present, an agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the description repeats the limit and offset documentation almost verbatim. It adds no new meaning beyond what the input 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.

Purpose4/5

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

The description opens with a specific verb and resource: 'Return World Cup 2026 fixtures', which clearly identifies the tool's purpose. The parenthetical 'live providers, else the group schedule' adds useful scoping, though it does not explicitly contrast with sibling tools like football_get_groups or football_get_standings.

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

Usage Guidelines4/5

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

The description gives a clear context for use: it is the fixture-list tool, with the data source conditionally explained as live providers or the group schedule. It does not name alternatives or exclusions, but among the football siblings there is no other direct 'get fixtures' tool, so the intended usage is reasonably clear.

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

football_get_groupsA
Read-onlyIdempotent
Inspect

Return the FIFA World Cup 2026 group draw and advancement format.

Returns: data.groups: {group_letter: [4 team codes]} for all 12 groups. data.format: 48-team / 12-group / top-2 + 8-best-thirds rule. data.teams: team-code -> {name, fifa_code} metadata. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context about the returned data structure and the meta.source adapter, but it does not disclose potential limitations such as data freshness, whether the draw is final, or how the adapter behaves if data is unavailable.

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

Conciseness4/5

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

The description is concise and logically structured with a brief summary followed by a clear Returns breakdown. It is slightly verbose in re-specifying output schema details that the output schema already provides, but every line is informative and no filler exists.

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

Completeness5/5

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

For a zero-parameter, read-only tool with rich annotations and an output schema, the description fully covers what the agent needs: what the tool returns, the exact group structure, the format rule, and team metadata. There is no missing essential context for correct invocation.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so there is no parameter documentation burden on the description. Per the rubric, a zero-parameter tool gets a baseline of 4, and the description confirms the tool takes no input.

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

Purpose5/5

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

The description states a specific verb ('Return') and a specific resource ('FIFA World Cup 2026 group draw and advancement format'). It clearly differentiates this tool from siblings like football_simulate_group or football_get_standings by naming the actual draw and format as the subject.

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

Usage Guidelines3/5

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

The intended use is implied by the tool's scope: an agent needing the actual 2026 World Cup group composition and format should call this. However, the description does not explicitly mention when not to use it or point to alternatives like football_simulate_group for hypothetical scenarios, leaving some routing judgment to the agent.

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

football_get_match_statsA
Read-onlyIdempotent
Inspect

Return a team's aggregate World Cup tournament statistics.

Network-only enrichment: requires a configured API-Football (or football-data.org) key. There is no offline static fallback, so without a key the call returns a clean ALL_SOURCES_FAILED envelope.

Args: team: API-Football numeric team id (not a country code).

Returns: data.team_stats: {team, played, wins, goals_for, goals_against}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesAPI-Football numeric team id (not a country code).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (read-only, idempotent, non-destructive), the description adds substantial behavioral detail: it is network-only with no offline fallback, returns a clean ALL_SOURCES_FAILED envelope when no key is configured, and describes the exact return shape plus the meta.source adapter. This gives an agent full transparency about failure modes and response structure.

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

Conciseness5/5

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

The description is compact and well-structured with clear sections for purpose, network requirements, args, and returns. Every line earns its place, and the primary purpose is front-loaded. No redundant or filler content.

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

Completeness5/5

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

For a single-parameter tool, this description is complete. It explains the data requirement, the failure envelope, the return fields, and the source adapter. Even though an output schema exists, the description's return breakdown adds practical clarity, and nothing an agent needs 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.

Parameters3/5

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

The input schema already covers the single parameter 'team' with a clear description ('API-Football numeric team id (not a country code)') and 100% coverage. The description repeats this information in the Args section without adding any new semantic meaning, so it meets the baseline for high schema coverage.

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

Purpose5/5

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

The description opens with a specific verb ('Return') and an unambiguous resource ('a team's aggregate World Cup tournament statistics'), which clearly distinguishes it from sibling tools that return fixtures, standings, or individual match data. Even though the tool name says 'match_stats', the description clarifies it is aggregate tournament statistics, so an agent knows exactly what it gets.

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

Usage Guidelines3/5

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

The description implies when to use the tool: whenever a team's aggregate World Cup statistics are needed. However, it does not explicitly state when not to use it or name alternatives among the many football sibling tools. It does add a practical usage constraint (requires an API key and only works in network-enabled contexts), which supports usage decisions.

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

football_get_oddsB
Read-onlyIdempotent
Inspect

Return live market head-to-head odds for upcoming World Cup 2026 matches.

Sourced from The Odds API (requires THEODDS_KEY). Without a key the call returns a clean ALL_SOURCES_FAILED envelope rather than crashing.

Args: team: Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every WC event.

Returns: data.events: list of {event_id, home, away, commence_time, bookmakers: [{name, home, draw, away}]} with decimal 1X2 prices per bookmaker. meta.source: adapter that served the data (theodds / cache:stale).

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoOptional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every WC event.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

B3.4/5.0
Behavior1/5

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

The description usefully discloses the THEODDS_KEY requirement, the ALL_SOURCES_FAILED envelope, and cache/stale source metadata. However, it claims 'Omit to return every WC event,' which contradicts the openWorldHint=true annotation that responses may not be exhaustive. This is an annotation contradiction.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections and front-loads the core purpose. It is appropriately sized, though the team parameter text is repeated from the schema, a mild redundancy.

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

Completeness3/5

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

The description covers authentication, failure behavior, parameter use, and return shape, which is generally strong for a simple read-only tool. However, the conflict with openWorldHint=true means it is misleading about completeness, and the description does not acknowledge that the response may not include every World Cup event.

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

Parameters3/5

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

Schema description coverage is 100%: the schema already explains the team parameter as an optional case-insensitive substring matched against both sides. The description's Args section duplicates this rather than adding new semantic 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.

Purpose5/5

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

The description states a specific action, resource, and scope: returning live market head-to-head 1X2 odds for upcoming World Cup 2026 matches. This clearly distinguishes it from sibling tools like football_get_fixtures or football_match_predictor.

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

Usage Guidelines4/5

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

The context is clear: use this tool for live head-to-head odds on World Cup 2026 matches, with an optional team filter. It documents when to omit the team parameter, but it does not explicitly discuss alternatives or when not to use the tool.

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

football_get_squadA
Read-onlyIdempotent
Inspect

Return a national team's World Cup squad.

Args: team: Team code or name (e.g. "ARG"). Without an API-Football key, the static seed serves an empty-but-valid squad (rosters are a follow-up).

Returns: data.squad: list of {name, number, position, age}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam code or name (e.g. "ARG"). Without an API-Football key, the static seed serves an empty-but-valid squad (rosters are a follow-up).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the static-seed fallback behavior, notes that rosters are a follow-up, and documents the meta.source adapter in the return. This adds useful context without contradicting 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.

Conciseness5/5

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

The description is compact and well-organized: a one-line summary, an Args section, and a Returns section. Every sentence earns its place, and the critical static-seed caveat is front-loaded alongside the parameter it affects.

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

Completeness4/5

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

For a one-parameter read-only getter with an output schema and strong annotations, the description covers the return shape and the empty-squad edge case. Minor gaps like enumerating valid team codes are not necessary for correct invocation.

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

Parameters3/5

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

The single team parameter is fully documented in the schema, and the description essentially repeats the same text: team code or name with the same static-seed caveat. Since schema coverage is 100%, the baseline of 3 applies; the description adds no new parameter meaning.

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

Purpose5/5

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

The description uses a specific verb-resource pair: "Return a national team's World Cup squad." This clearly distinguishes it from the many football tools for fixtures, odds, standings, and match stats, and from cricket_get_squad by sport and resource type.

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

Usage Guidelines4/5

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

It provides clear context by warning that without an API-Football key, the static seed serves an empty-but-valid squad, which sets expectations for when the data is real versus a placeholder. However, it does not explicitly name alternatives or when-not-to-use conditions, so it stops short of full routing guidance.

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

football_get_standingsA
Read-onlyIdempotent
Inspect

Return current World Cup 2026 group standings.

Args: limit: Max standing rows to return, 1..200 (default 50). offset: Number of rows to skip for paging (default 0).

Returns: data.standings: page of {rank, team, group, points, played, goals_diff}. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax standing rows to return, 1..200 (default 50).
offsetNoNumber of rows to skip for paging (default 0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value beyond annotations by disclosing pagination behavior, return envelope shape, and the meta.source adapter detail. No contradiction exists.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose. The Args block is redundant given the input schema, but the Returns section justifies its presence. Overall it is concise with no filler, though a bit repetitive.

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

Completeness5/5

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

Given the tool's simplicity, the rich annotations, and the presence of an output schema, the description is complete. It documents the pagination contract, the return fields, and the source metadata. Nothing essential for an agent 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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The Args section simply restates the schema descriptions for limit and offset without adding new semantic detail. The Returns section indirectly clarifies paging behavior but does not enhance parameter meanings beyond what the schema already provides.

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

Purpose5/5

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

The first sentence states a specific verb ('Return'), a precise resource ('World Cup 2026 group standings'), and implicitly distinguishes the tool from siblings like football_get_groups or football_get_fixtures. The resource scope is unambiguous and cannot be confused with any other listed tool.

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

Usage Guidelines4/5

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

The description clearly implies the tool should be used when a caller needs current World Cup 2026 group standings. It provides no explicit exclusion or alternative routing, but the context is strong enough for an agent to select it appropriately among football-related list tools.

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

football_get_top_scorersA
Read-onlyIdempotent
Inspect

Return the World Cup 2026 top scorers.

Returns: data.scorers: list of {name, team, goals, assists}. meta.source: adapter that served the data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already declare the tool read-only, idempotent, open-world, and non-destructive, which covers the safety profile. The description adds return structure details (scorers list, meta.source), which is useful but does not disclose additional behavior such as data freshness, ordering, or limits. This meets the minimum bar without exceeding it.

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

Conciseness5/5

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

The description is compact and front-loaded with the main action. The Returns block is structured clearly and adds useful detail without redundancy or fluff.

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

Completeness4/5

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

For a zero-parameter read-only tool with a full output schema and safety annotations, the description is nearly complete. The only minor gap is not stating how many scorers are included (e.g., top 10 vs. all), but this is unlikely to mislead an agent given the output schema.

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

Parameters4/5

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

The input schema has zero parameters, and the description correctly makes no parameter claims. With 0 params, the baseline is 4, and there are no missing parameter explanations to penalize.

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

Purpose5/5

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

Description states a specific verb ('Return') and a precise resource ('World Cup 2026 top scorers'), and the output shape is explicitly named. The tool's name and description uniquely identify it among siblings like football_get_standings and football_get_groups, leaving no ambiguity.

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

Usage Guidelines4/5

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

The purpose is so specific that the intended usage ('when you need top scorer data') is obvious from the name and description. However, the description does not explicitly mention when not to use it or compare it to another tool, 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.

football_knockout_pathA
Read-onlyIdempotent
Inspect

Round-by-round survival probabilities for one team in the full sim.

Args: team: Team code (e.g. "FRA"). iterations: Number of tournament simulations (clamped to 100..20000). seed: Optional RNG seed.

Returns: data: {team, reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoOptional RNG seed.
teamYesTeam code (e.g. "FRA").
iterationsNoNumber of tournament simulations (clamped to 100..20000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context beyond those annotations: results are estimates (meta.estimated: true), iterations are clamped to a specific range, and the simulation is the 'full sim.' This helps the agent understand the tool's stochastic nature and output characteristics.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections, and the first sentence immediately conveys the core purpose. It is slightly redundant because every parameter description is repeated from the schema, but the overall length is reasonable and the key information is front-loaded.

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

Completeness4/5

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

The output schema exists and documents the return type, while annotations cover the read-only/idempotent safety profile. The description adds sufficient context by naming the exact returned fields and the estimated flag, plus the iteration clamping behavior. It doesn't cover error handling or invalid team codes, but that is not critical for this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's Args section largely restates the schema text (team code, clamped iterations, optional seed) without adding new semantic depth. It provides a concrete example for team ('FRA') but otherwise adds no meaning beyond what the input schema already contains.

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

Purpose5/5

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

The opening phrase 'Round-by-round survival probabilities for one team in the full sim' clearly identifies the specific verb (compute survival probabilities), resource (one team), and scope (full simulation). It also distinguishes itself from sibling tools like football_simulate_bracket and football_simulate_group by focusing on a single team's path rather than a whole tournament or group.

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

Usage Guidelines3/5

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

The description implies when to use this tool—when you need a single team's knockout-stage progression probabilities—but it never explicitly states when not to use it or names alternatives. There is no guidance comparing it to football_simulate_bracket or football_match_predictor, so the agent must infer the appropriate context from the tool name and phrasing.

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

football_match_predictorA
Read-onlyIdempotent
Inspect

Predict a single match: most likely scoreline + outcome probabilities.

Args: home_team: First team code. away_team: Second team code. neutral: True for a neutral venue (World Cup default).

Returns: data: {most_likely_score, home_win, draw, away_win, predicted_winner}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
neutralNoTrue for a neutral venue (World Cup default).
away_teamYesSecond team code.
home_teamYesFirst team code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating outputs include outcome probabilities and that meta.estimated is true, making clear the result is a model estimate rather than an actual match result.

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

Conciseness5/5

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

The description is compact and well-structured: a front-loaded one-line purpose followed by concise Args and Returns sections. It contains no filler, and the structure makes the tool's inputs and outputs easy to scan.

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

Completeness4/5

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

For a 3-parameter tool with high schema coverage and an output schema, the description provides enough information to invoke it correctly: required params, the optional neutral flag, and the return fields. A minor gap is the lack of a team-code example or explicit call scenario, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description largely repeats the schema's parameter descriptions rather than adding new meaning; it does not clarify what valid team codes look like or give examples.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Predict a single match: most likely scoreline + outcome probabilities.' This clearly distinguishes it from sibling tools like football_simulate_group, football_simulate_bracket, and football_xg_model by focusing on a single match and its concrete output.

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

Usage Guidelines3/5

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

The phrase 'single match' implies when to use this tool, but there is no explicit guidance about alternatives or exclusions. It does not say, for example, to use football_xg_model for expected-goal analysis or football_simulate_group for multiple matches.

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

football_simulate_bracketA
Read-onlyIdempotent
Inspect

Monte Carlo the full World Cup 2026 — per-team round + title probabilities.

Simulates all 12 groups, advances the top 2 + 8 best third-placed teams to a 32-team knockout, and plays it to a champion, iterations times.

Args: iterations: Number of tournament simulations (clamped to 100..20000; ~10000 gives stable ±2% probabilities). seed: Optional RNG seed for reproducible output.

Returns: data.teams: {code: {reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}} sorted by win probability descending. data.champion: most likely winner. data.iterations: iterations run. meta.estimated: true. meta.conditioned_matches: completed matches locked in (played group results fixed, decided knockout ties locked).

Example: football_simulate_bracket() football_simulate_bracket(iterations=20000, seed=42)

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoOptional RNG seed for reproducible output.
iterationsNoNumber of tournament simulations (clamped to 100..20000; ~10000 gives stable ±2% probabilities).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: the simulation is stochastic, iterations are clamped, probabilities are estimates, and completed matches are locked in via meta.conditioned_matches. It also explains reproducibility via the RNG seed, which annotations do not convey.

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

Conciseness5/5

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

The description is well-organized with a front-loaded summary, structured Args/Returns sections, and a compact example. Every sentence contributes useful information, and the formatting makes the tool's behavior easy to parse quickly.

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

Completeness5/5

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

For a probabilistic simulation tool, the description covers the tournament structure, parameter constraints, state conditioning, return shape, and example calls. The output schema already exists, and the Returns section adds enough detail for an agent to understand what will come back.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds value with the recommendation that ~10000 iterations gives stable ±2% probabilities and provides concrete usage examples that clarify optionality and seeding.

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

Purpose5/5

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

The description uses a specific verb ('simulates') and a precise resource ('the full World Cup 2026'), and details the full scope: all 12 groups, knockout advancement, and a champion. This clearly differentiates it from siblings like football_simulate_group by covering the entire tournament rather than just one group.

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

Usage Guidelines3/5

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

The intended use is strongly implied by the simulation scope and examples, but the description never explicitly states when to prefer this tool over alternatives such as football_simulate_group or football_knockout_path. It provides clear context but no explicit exclusions or routing guidance.

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

football_simulate_groupA
Read-onlyIdempotent
Inspect

Monte Carlo one group's round-robin -> per-team qualification probabilities.

Args: group: Group letter A-L. iterations: Number of simulations (clamped to 100..20000).

Returns: data.teams: {code: {p_first, p_second, p_third, p_fourth, p_advance, avg_points}}. data.iterations: iterations actually run. meta.estimated: true. meta.conditioned_matches: completed matches locked in.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesGroup letter A-L.
iterationsNoNumber of simulations (clamped to 100..20000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, open-world, idempotent, non-destructive. Description adds that it runs Monte Carlo simulations, clamps iterations, and returns estimated probabilities with conditioned matches locked in. This goes beyond annotations by explaining the algorithm and return characteristics.

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

Conciseness5/5

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

Description is very concise (two paragraphs plus a bulleted return list). Front-loaded with the main purpose. No wasted words or redundancy.

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

Completeness4/5

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

Given the output schema exists (not shown but referenced), the description adequately explains the return structure. It covers inputs, behavior, and outputs. Could mention default iteration value explicitly in the description text, but it's in the schema.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description replicates the schema's arg descriptions ('group: Group letter A-L.', 'iterations: Number of simulations (clamped to 100..20000).'). No additional semantic value beyond schema.

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

Purpose5/5

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

Purpose is clear and specific: 'Monte Carlo one group's round-robin -> per-team qualification probabilities.' It uses a specific verb ('simulate'), resource ('group'), and outcome (qualification probabilities). Distinguishes from siblings like football_simulate_bracket.

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

Usage Guidelines3/5

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

Usage is implied by the tool name and description (for group stage simulation), but no explicit guidance on when to use it vs alternatives like football_simulate_bracket or football_match_predictor. No 'when not to use' or prerequisites mentioned.

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

football_xg_modelA
Read-onlyIdempotent
Inspect

Estimate a match's expected goals and win/draw/loss probabilities.

Args: home_team: First team code (e.g. "ARG"). away_team: Second team code (e.g. "BRA"). neutral: True for a neutral venue (no home advantage). World Cup default.

Returns: data: {expected_home_goals, expected_away_goals, home_win, draw, away_win}. meta.estimated: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
neutralNoTrue for a neutral venue (no home advantage). World Cup default.
away_teamYesSecond team code (e.g. "BRA").
home_teamYesFirst team code (e.g. "ARG").

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safe read-only/idempotent nature. The description adds useful behavioral context by defining the neutral-venue/home-advantage handling and noting that the outputs are estimates via meta.estimated: true. 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.

Conciseness4/5

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

The description is compact, front-loaded with purpose, and clearly separated into Args and Returns. It loses a point because its Args section essentially duplicates the schema descriptions rather than adding new guidance.

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

Completeness5/5

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

For a simple three-parameter, read-only model with a full input schema and output schema, nothing essential is missing: required team codes, the neutral default, the return shape, and the estimated flag are all present.

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

Parameters3/5

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

Input schema coverage is 100%, so the schema already documents all three parameters. The description repeats those same descriptions (team codes, neutral flag) but adds no extra meaning such as accepted code formats, validation rules, or how coordinates are resolved.

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

Purpose4/5

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

The opening line names a specific action ('Estimate') and resource ('a match's expected goals and win/draw/loss probabilities'), matching the tool name. It is clear, but it does not explicitly position itself against the overlapping sibling football_match_predictor.

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

Usage Guidelines3/5

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

The description implies its use case: any time an agent needs pre-match expected goals and probabilities. It gives the World Cup venue default as context, but it never states when to pick this tool instead of football_match_predictor or the simulator siblings.

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

sportiq_healthA
Read-onlyIdempotent
Inspect

Report cache backend, per-adapter healthcheck, and quota status.

Returns: HealthReport-shaped dict with cache_backend, cache_ok, adapters (per-source ok/detail), and quotas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metaNo
errorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context by specifying the report shape and the per-adapter detail, which goes beyond what the annotations alone convey. No contradictions exist.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, then provides a structured return summary. Every sentence adds value and there is no redundant or promotional text.

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

Completeness5/5

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

With zero parameters, a present output schema, and annotations covering safety semantics, the description is complete for invoking this tool correctly. It names the key output fields and the overall report shape, which is sufficient for an agent to know what to expect.

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

Parameters4/5

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

The tool takes zero parameters, and the baseline for no-parameter tools is 4. There is no parameter detail needed, and the description does not need to compensate for undocumented inputs.

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

Purpose5/5

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

The description uses the specific verb 'Report' and names three concrete resources: cache backend, per-adapter healthcheck, and quota status. It is clearly distinct from the sibling sports-data tools, as it targets system health rather than sport-specific content.

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

Usage Guidelines4/5

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

The description clearly establishes that this tool is for health and quota reporting, and no sibling tool competes for that role. It does not explicitly state when not to use it, but the context is unambiguous given the tool's unique purpose.

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

Tool Schema Changelog

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

  1. 44 tool updatesv0.3.1
    • First observedcricket_build_dream11_team
    • First observedcricket_captain_recommendation
    • First observedcricket_differential_picks
    • First observedcricket_find_value_bets
    • First observedcricket_get_live_matches
    • First observedcricket_get_live_odds
    • First observedcricket_get_pitch_report
    • First observedcricket_get_points_table
    • First observedcricket_get_schedule
    • First observedcricket_get_scorecard
    • First observedcricket_get_squad
    • First observedcricket_head_to_head
    • First observedcricket_player_form_index
    • First observedcricket_player_matchup
    • First observedcross_sport_build_accumulator
    • First observedf1_get_drivers
    • First observedf1_get_lap_times
    • First observedf1_get_race_results
    • First observedf1_get_sessions
    • First observedf1_get_standings
    • First observedf1_get_weather
    • First observedf1_head_to_head_pace
    • First observedf1_predict_pit_strategy
    • First observedf1_qualifying_analysis
    • First observedf1_race_pace_compare
    • First observedf1_tyre_degradation
    • First observedf1_undercut_window
    • First observedf1_weather_strategy_impact
    • First observedfootball_build_accumulator
    • First observedfootball_find_value_bets
    • First observedfootball_form_trends
    • First observedfootball_get_fixtures
    • First observedfootball_get_groups
    • First observedfootball_get_match_stats
    • First observedfootball_get_odds
    • First observedfootball_get_squad
    • First observedfootball_get_standings
    • First observedfootball_get_top_scorers
    • First observedfootball_knockout_path
    • First observedfootball_match_predictor
    • First observedfootball_simulate_bracket
    • First observedfootball_simulate_group
    • First observedfootball_xg_model
    • First observedsportiq_health

TDQS

A4.2/5.0

Scored across 44 tools

Disambiguation5/5

Each tool targets a specific function within its sport (e.g., fantasy team building, live odds, match prediction, driver analysis). Despite the large number, descriptions clearly differentiate purposes, and no two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with a sport prefix (e.g., cricket_build_dream11_team, f1_get_drivers, football_find_value_bets). Verb_noun structure is maintained throughout, making the naming predictable.

Tool Count4/5

With 44 tools across three sports plus cross-sport functionality, the count is slightly high but justified by the breadth of coverage. The scope is well-defined for a multi-sport analytics server, and each tool serves a distinct purpose without overwhelming redundancy.

Completeness5/5

The tool set covers the major aspects of each sport: cricket (fantasy, odds, match data, player stats), F1 (drivers, sessions, race analysis, weather, strategy), and football (match prediction, tournament simulation, odds, standings). No obvious gaps are present for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for FIFA World Cup 2026 data: matches, teams, venues, city guides, fan zones, visa info, injuries, odds, standings, bracket, and historical matchups. 18 tools, zero external API dependencies.
    18
    935 npm
    34
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    17 decision intelligence algorithms as MCP tools for AI agents. Bandits (UCB1, Thompson), LP/MIP solver (HiGHS), Monte Carlo simulation, Bayesian inference, graph analytics (PageRank, Louvain), genetic algorithms, CMA-ES, anomaly detection, time series forecasting, and more. All under 25ms, deterministic, zero LLM cost.
    17
    13
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server for prediction markets — search and compare live odds across Polymarket, Kalshi, and Limitless from Claude, ChatGPT, or Gemini. Six read-only tools, free tier available.
    6
    MIT