Skip to main content
Glama

Server Details

NFL player props by sportsbook since 2023, plus play-by-play with EPA, stats and odds. REST and MCP.

Ownership verified
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
noahowsh/endzoneapi-mcp
GitHub Stars
0
Server Listing
EndzoneAPI

TDQS

A4.1/5.0

Scored across 20 tools

Disambiguation4/5

Tools are well-differentiated by resource and action. The main potential overlap is among the five odds-related tools (get_odds, get_alt_lines, get_line_movement, get_player_props, get_prop_history) and between get_games and get_schedule, but descriptions clearly delineate their distinct purposes.

Naming Consistency5/5

All 20 tools follow a consistent snake_case verb_noun pattern (get_, list_, search_). No naming inconsistencies.

Tool Count4/5

20 tools is slightly above the ideal 3-15 range, but each covers a distinct NFL data domain (stats, odds, players, teams, games, etc.) with no obvious redundancy, making the set appropriate for a comprehensive API.

Completeness4/5

Core NFL data retrieval is well-covered: games, schedules, stats, odds, players, teams, standings, injuries, depth charts, and play-by-play. Minor gaps include a dedicated roster/transactions endpoint and futures odds, but these are workaroundable.

Available Tools

20 tools
get_advanced_statsAdvanced statsA
Read-only
Inspect

Use for tracking and advanced metrics the box score does not carry. Next Gen Stats (2016+): time to throw, air yards, completion percentage above expectation, separation, cushion, rush yards over expected. Pro Football Reference advanced (2018+): pressures, hurries, blitzes, drops, bad throws, missed tackles, coverage yards allowed. Pick a source, then filter by season, week, player or team. Costs 5 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam code
weekNoWeek. NGS also publishes week 0 as the season aggregate.
limitNoMax rows (default 50)
seasonNoSeason year. Defaults to current. NGS from 2016, PFR from 2018.
sourceYesWhich dataset: ngs_passing, ngs_rushing, ngs_receiving, pfr_passing, pfr_rushing, pfr_receiving, pfr_defense
player_idNoGSIS id for an ngs_* source, PFR id for a pfr_* source; both are on search_players

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
statsYes
seasonYes
sourceYes
metric_keysYes
player_id_kindYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely non-annotation context: a 5-credit cost and per-source year availability (NGS 2016+, PFR 2018+), which affect whether the call is worth making. It stops short of return format or rate-limit behavior, so this is a modest add on top of annotations.

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

Conciseness4/5

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

Front-loaded with the use case, then the source/metric breakdown, then the filter workflow and cost. The two long metric enumerations are dense but each item is load-bearing for source selection; nothing is redundant.

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 7-value enum tool with an output schema, the description covers source choice, metric coverage per source, valid time ranges, filterable dimensions, and credit cost. Nothing an agent needs before calling is missing, and return values are correctly left to 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value by mapping each source family to what it returns (ngs_* vs pfr_* metric lists) and restating the year floors that gate valid season values. That helps an agent pick the right enum value, not just the right syntax.

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?

States a specific verb+resource — advanced metrics the box score does not carry — and enumerates the exact metric families available (time to throw, air yards, CPOE, pressures, missed tackles, etc.). The phrase 'the box score does not carry' implicitly separates it from get_player_stats/get_team_stats, so an agent can route correctly without opening a schema.

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

Usage Guidelines4/5

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

Gives clear usage context ('Use for tracking and advanced metrics the box score does not carry') and a concrete workflow ('Pick a source, then filter by season, week, player or team'). It does not name the sibling it substitutes for or state exclusions, so it falls short of an explicit when-not.

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

get_alt_linesAlt linesA
Read-only
Inspect

Use for alternate spreads and totals by sportsbook: every point on each book's ladder with its price (e.g. KC -10.5 at +260, over 51.5 at +140), for one game, from the 2023 to 2025 seasons (6 books: FanDuel, DraftKings, BetMGM, Bovada, Pinnacle, ESPN BET). Returns each book's closing ladder by default (the last before kickoff) or its opening one. side is home or away for spreads (point is that side's spread) and over or under for totals. 10 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoOne market (default both).
game_idYesGame id, e.g. 2025_01_KC_LAC.
bookmakerNoBookmaker key: fanduel, draftkings, betmgm, bovada, pinnacle, espnbet.
snapshot_typeNoclosing (default): each book's last ladder before kickoff. opening: its first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
linesYes
game_idYes
snapshot_typeYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive, closed-world), and the description adds material context they cannot: a 10-credit cost, the closing-by-default vs opening behavior, the 2023-2025/6-book data boundary, and a compliance rule against computing stakes, payouts or recommending bets. That last constraint is genuinely decision-relevant and unobtainable from structured fields.

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

Conciseness4/5

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

Front-loaded with the 'Use for...' clause, then layers coverage, defaults, parameter semantics and the compliance caveat in a dense but readable block. The inline price examples ('KC -10.5 at +260') are illustrative but add length; nothing is outright wasted.

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 an output schema exists, the description need not explain return shapes. It still covers market scope, snapshot default, book coverage, credit cost and the market-information caveat, which is everything an agent needs to invoke this 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%, including defaults for snapshot_type and market, so the baseline is 3. The description mostly restates those defaults ('closing... last before kickoff') and then discusses 'side' (home/away, over/under) and 'point', which are not parameters in the schema at all — useful for interpreting results but not a parameter contribution.

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?

States a precise verb+resource+scope: alternate spreads and totals per sportsbook, down to 'every point on each book's ladder with its price'. The word 'alternate' implicitly separates it from main-line odds tools like get_odds or get_line_movement, so an agent can route without opening a schema.

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

Usage Guidelines4/5

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

'Use for alternate spreads and totals by sportsbook' plus the game/season/book coverage gives clear context for when this tool applies. It does not, however, name the sibling to use for main lines (get_odds) or state exclusions, so it stops short of full when/when-not guidance.

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

get_depth_chartDepth chartA
Read-only
Inspect

Use for a team's depth chart by week: formation, position, depth rank, player. Defaults to the latest week available. Costs 2 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam code
weekNoWeek. Defaults to latest.
seasonNoSeason year. Defaults to current.
formationNoFilter by formation/unit, e.g. Offense, Defense, Special Teams

Output Schema

ParametersJSON Schema
NameRequiredDescription
teamYes
weekYes
countYes
seasonYes
depth_chartYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the read-only, non-destructive safety profile, so the description's main contribution is the 'Costs 2 credits' disclosure, which is real behavioral information an agent cannot get from structured fields. It omits any note on response shape, but the output schema covers that.

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

Conciseness5/5

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

A single compact sentence front-loads the purpose, then the field list, then the default, then the cost. Every clause carries information and nothing is padded.

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, return values need no explanation, and the description covers scope, defaults, and credit cost. The only gap is a lack of guidance on when to prefer this over adjacent tools like get_snap_counts or get_player_stats, which is minor for a low-complexity read 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 all four parameters (team, week, season, formation) are already documented in the schema, including the week default. The description restates the week default and 'by week' scope but adds no format or syntax detail beyond the schema, so baseline 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?

States a specific verb ('get/use for') and resource ('a team's depth chart by week') and enumerates the returned fields (formation, position, depth rank, player), which is unusually concrete. It doesn't explicitly contrast with siblings, but the resource is distinctive enough within the sports-stats family that disambiguation is not needed.

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?

'Use for a team's depth chart by week' plus 'Defaults to the latest week available' gives an implied usage context and default behavior, but names no alternatives or when-not-to-use conditions (e.g. versus get_snap_counts or get_team_stats).

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

get_game_detailGame detailA
Read-only
Inspect

Use when you need everything about one game: both teams, full team box-score stats (EPA, success, drives), consensus closing line, per-bookmaker opening/closing/latest odds, weather, surface, and officials. Requires a game id from get_games or get_schedule. Costs 10 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYesGame id, e.g. 2025_01_KC_BUF

Output Schema

ParametersJSON Schema
NameRequiredDescription
gameYes
oddsYes
away_teamYes
home_teamYes
officialsYes
team_statsYes
consensus_closingYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context beyond annotations: a 10-credit cost per call and a hard usage constraint that prices are market information and must not be used for stake/payout/profit calculations or sportsbook referrals.

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?

Four dense sentences: use case and payload first, then prerequisite, then cost, then the market-information constraint. No filler, no restating the title, and the most decision-relevant information is front-loaded.

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

Completeness5/5

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

An output schema exists, so return-format explanation is unnecessary. The description still covers the payload inventory, the required prerequisite and its source, the credit cost, and the policy constraint — everything an agent needs to invoke this correctly and responsibly.

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

Parameters4/5

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

With one parameter and 100% schema description coverage (schema shows the exact game_id format, e.g. 2025_01_KC_BUF), the baseline is 3. The description goes beyond this by citing the source tools for the id, adding provenance the schema does not carry.

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?

States a specific verb+resource ('everything about one game') and enumerates the payload precisely: team box-score stats, consensus closing line, per-bookmaker odds, weather, surface, officials. An agent can distinguish this from get_odds, get_team_stats, or get_games without opening a schema.

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

Usage Guidelines4/5

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

'Use when you need everything about one game' gives clear usage context and 'Requires a game id from get_games or get_schedule' names the upstream tools that supply the prerequisite. It stops short of explicit when-not guidance (e.g. use get_odds if you only need prices), so a 4 rather than 5.

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

get_gamesGamesA
Read-only
Inspect

Use when querying past or future games with filters: season, week, team, date range, game type, status. Returns scores, kickoff (UTC), venue, rest days, starting QBs, coaches, referee, and the consensus closing spread, total, and moneylines. For upcoming-only games prefer get_schedule (2 cr). Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam code (home or away)
weekNoWeek number (1-18 regular season; 19+ postseason)
limitNoMax results (default 100)
seasonNoSeason year (e.g. 2025)
statusNoGame status
date_toNoEnd date YYYY-MM-DD
date_fromNoStart date YYYY-MM-DD
game_typeNoREG, WC, DIV, CON, SB, or POST for any playoff game

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
gamesYes
filtersYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the read-only/safe profile, and the description goes beyond them by disclosing the credit cost (5 cr vs 2 cr) and a hard usage policy limiting market-price interpretation. It also enumerates the returned fields, so the agent knows what behavior to expect from a call.

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?

Front-loads the use-when clause, then the return set, the alternative, the cost, and the policy constraint in a tight sequence. Every sentence carries distinct information with no filler.

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 present and 100% parameter coverage, the description only needs to add routing, cost, and policy context – all of which it provides. Nothing an agent needs to call this 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%, so all eight parameters including the two enums are already documented. The description recaps the same filter names but adds no syntax, format, or defaulting detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (query games) and enumerates the dimensions it filters on (season, week, team, date range, game type, status) plus what it returns. It explicitly names the sibling get_schedule as the alternative for upcoming-only games, so an agent can separate the two without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit use-when clause, then names the alternative (get_schedule) and the condition that selects it (upcoming-only), and even cites the relative credit cost. This is textbook when/when-not guidance with a named route to the sibling.

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

get_head_to_headHead to headA
Read-only
Inspect

Use to compare two teams' history: recent meetings with scores, the win/loss record between them, and average margin. Filter by season or get all-time. Costs 10 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax games (default 20)
team1YesFirst team code
team2YesSecond team code
seasonNoSeason year. Omit for all-time.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
gamesYes
team1Yes
team2Yes
recordYes
total_gamesYes
avg_margin_team1Yes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds a genuinely useful non-obvious trait: the operation 'Costs 10 credits', which an agent cannot infer from structured fields.

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

Conciseness4/5

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

A single front-loaded sentence that names the purpose first and packs in the return contents and the credit cost with no filler. Slightly dense but every clause earns its place.

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, the description need not explain return values, and annotations carry the safety profile; the credit cost closes the main behavioral gap. An agent has enough to call it correctly, though no sibling-routing guidance is given.

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 team1, team2, limit, and season. The description's 'filter by season or get all-time' restates the season parameter semantics but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (compare) and resource (two teams' history) and enumerates the concrete outputs: recent meetings with scores, win/loss record, average margin. It is clearly distinct from get_games or get_team_stats in intent, but it never names or explicitly rules out a sibling.

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?

'Filter by season or get all-time' gives a usage hint for one parameter but does not say when to prefer this tool over get_games, get_team_stats, or get_game_detail. Usage is implied rather than stated.

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

get_injuriesInjuriesA
Read-only
Inspect

Use for the official injury report: game status (Out, Doubtful, Questionable) and practice participation with the injury named, by team and week. Defaults to the latest reported week of the current season. Costs 2 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam code
weekNoWeek. Defaults to the latest week with a report.
seasonNoSeason year. Defaults to current.
statusNoFilter by game status: Out, Doubtful, Questionable

Output Schema

ParametersJSON Schema
NameRequiredDescription
weekYes
countYes
seasonYes
injuriesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds two things annotations cannot: the 2-credit cost and the default-resolution behavior for week/season, which matters for an agent budgeting calls.

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?

Three tight sentences with the payload description front-loaded, then defaults, then cost. No filler or tautology. Slightly dense in enumerating return fields, but every clause carries information.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description supplies the domain scope, defaults, and credit cost. The only omission is guidance on when the default week may be empty or how filtering interacts with team, which is minor for a zero-required-parameter read.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (team, week, season, status) are already documented in the schema, including the week default and the Out/Doubtful/Questionable values. The description repeats the status vocabulary and defaults without adding syntax or format detail, so baseline 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?

States a specific resource (official injury report), the exact payload (game status values plus practice participation with the injury named), and the grouping dimensions (by team and week). No sibling tool covers injuries, so an agent can immediately tell this apart from get_depth_chart or get_player_stats.

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?

"Use for the official injury report" sets a clear condition and the default (latest reported week of the current season) tells the agent it can call with no arguments. It does not name an alternative or a when-not condition, but no sibling overlaps this domain.

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

get_line_movementLine movementA
Read-only
Inspect

Use to see how a game's lines moved: each bookmaker's hourly snapshots where a line changed, plus the latest (all_snapshots for every capture). Most expensive tool (25 cr); use get_odds (10 cr) if you only need opening, closing, or current lines. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
game_idYesGame id
bookmakerNoBookmaker key filter
all_snapshotsNoEvery hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.

Output Schema

ParametersJSON Schema
NameRequiredDescription
game_idYes
kickoffYes
movementYes
away_teamYes
home_teamYes
snapshotsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds material context beyond them: relative cost (25 cr), the alternative's cost, and a compliance boundary (no stake/payout math, no bet recommendations, no sportsbook referrals). It does not describe auth or rate-limit behavior, so it stops short of a 5.

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

Conciseness4/5

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

Front-loaded with the core capability, then cost comparison, then the compliance caveat — a sensible ordering. The third sentence is a long policy clause, but every clause carries real constraint value rather than filler, so it stays efficient.

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?

An output schema exists, so return values need no explanation. Between the cost framing, the explicit alternative, the snapshot semantics, and the usage restrictions, an agent has everything needed to decide whether to call this tool and how to interpret the result.

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 all three parameters are already documented, including the non-obvious all_snapshots dedup behavior. The description reinforces that filtering is per bookmaker and that snapshots are hourly, but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('see how a game's lines moved') and immediately scopes the payload (per-bookmaker hourly snapshots plus the latest capture). It explicitly names the sibling get_odds as the alternative, so an agent can distinguish it from the other 20 odds/stats tools without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use rule ('use get_odds (10 cr) if you only need opening, closing, or current lines') and a cost-based selector (25 cr vs 10 cr), which is exactly the kind of routing guidance an agent needs. It also states the standing constraint on how the data may be used.

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

get_oddsOddsA
Read-only
Inspect

Use for betting lines. Pass game_id for one game (10 credits): the consensus closing spread and total (every game since 1999; moneyline every game since 2010) plus each sportsbook's closing line from the 2014 season (4-9 books for 2014-2019, closing only) and per-bookmaker opening, closing and latest lines from the 2020 season (up to 8 books, including Pinnacle). Or pass season (optionally team) for a season of per-book closing lines in one call, with final scores and the consensus close, at 10 credits per game returned, 100 games a page by default (up to 500); each book's line is an array in the order given by columns. Each line says its source: espn (2014-2019 closing lines) or the_odds_api (from 2020); a season answer lists each game's sources. For consensus closing lines only, get_games returns a whole season for 5 credits. Set estimate_only to get the price without being charged. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoWith season: only this team's games (e.g. KC).
limitNoWith season: games per page (default 100, max 500).
offsetNoWith season: page offset; use next_offset from the previous page.
seasonNoSeason year for a whole season of per-book lines, e.g. 2026. Used when game_id is not set.
game_idNoGame id, e.g. 2026_01_KC_BUF. Omit and pass season for a whole season.
bookmakerNoBookmaker key (draftkings, fanduel, betmgm, espnbet, pinnacle, bovada, betonlineag, mybookieag; for 2014-2019 also westgate, caesars, wynn, unibet, 5dimes, sportsbettingag and others)
estimate_onlyNoReturn what this call would cost, without charging or running it.
snapshot_typeNoSingle game: one snapshot type (default all). Season: opening or closing (default closing).

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
toolNo
booksNo
countNo
gamesNo
seasonNo
columnsNo
creditsNo
game_idNo
kickoffNo
away_teamNo
home_teamNo
next_offsetNo
total_gamesNo
estimate_onlyNo
snapshot_typeNo
bookmaker_countNo
credits_per_gameNo
consensus_closingNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, non-destructive), so the description adds substantial unseen context: credit costs (10/game, 10 per game returned), pagination (100 per page, up to 500), data-source attribution (espn 2014-2019 vs the_odds_api from 2020), and an explicit policy constraint against computing stakes or recommending bets.

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?

Front-loaded with 'Use for betting lines' and packed with actionable detail, but the single dense paragraph mixes pricing, coverage eras, sourcing and policy into long run-on sentences that are harder to scan than the content warrants.

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 high-complexity, 8-parameter tool with an output schema, the description supplies everything the agent needs to call it correctly: mode selection, credits, pagination, source labeling, era-dependent coverage, and the estimate_only escape hatch.

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, but the description goes further by tying parameters to cost and output shape (credits per game returned, array ordering 'given by columns', snapshot defaults differing between single-game and season modes). These are meaningful additions beyond the schema text.

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?

States a specific resource (betting lines/odds) and resolves the two operating modes — single game via game_id vs. whole season via season — so an agent can distinguish this from siblings like get_games and get_line_movement. It also names get_games explicitly for the consensus-closing-only case.

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?

Explicit routing: 'Pass game_id for one game' or 'pass season (optionally team) for a season', plus 'For consensus closing lines only, get_games returns a whole season for 5 credits'. It also tells the agent when to use estimate_only and when moneyline/book coverage is unavailable by era.

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

get_player_leadersPlayer leadersA
Read-only
Inspect

Use to rank players on any weekly stat over a season: passing_yards, passing_tds, rushing_yards, receiving_yards, receptions, targets, def_sacks, def_interceptions, fantasy_points_ppr, passing_epa, rushing_epa, receiving_epa, and ~130 more. Counting stats are summed, rate stats averaged. Filter by position, team, minimum games. Costs 5 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
statYesWeekly stat column to rank by (e.g. passing_yards, receiving_epa, def_sacks)
teamNoTeam code filter
limitNoMax results (default 20)
seasonNoSeason year. Defaults to current.
positionNoPosition filter, e.g. QB, RB, WR, TE
min_gamesNoMinimum games with a stat line (default 1)
season_typeNoRegular season (default) or postseason

Output Schema

ParametersJSON Schema
NameRequiredDescription
statYes
countYes
seasonYes
leadersYes
aggregationYes
season_typeYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/destructiveHint/openWorldHint, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond the annotations: counting stats are summed while rate stats are averaged, and each call costs 5 credits — both material to how an agent plans usage.

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?

Front-loaded with the use case, then the stat vocabulary, then aggregation rule and filters, closing with cost. The long stat enumeration is long but earns its place by preventing schema-opening reconnaissance; only minor trimming is possible.

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, return values need not be described. The description covers the critical caller-facing facts — stat vocabulary, aggregation behavior, filterable dimensions, and credit cost — leaving only minor gaps like pagination/limit semantics, which the schema already documents.

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 exceeds it by expanding the 'stat' parameter from three examples into a large enumerated vocabulary (~130 more) and by explaining the aggregation semantics of the stat value itself; it does not, however, explain limit or season_type defaults beyond what the schema states.

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+resource ('rank players on any weekly stat over a season') and enumerates representative stat columns, so the agent knows exactly what the tool produces. It does not explicitly contrast itself with the closest sibling, get_player_stats, which returns raw stat lines rather than rankings, leaving that distinction to inference.

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

Usage Guidelines3/5

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

The phrase 'Use to rank players' gives implied context, and the filter list (position, team, minimum games) hints at narrowing scenarios. However, there is no when-not guidance and no named alternative for retrieving individual player stats instead of rankings, so the agent must infer the boundary with get_player_stats.

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

get_player_propsPlayer propsA
Read-only
Inspect

Use for player prop lines by sportsbook: over/under on passing yards, passing TDs, rushing yards, receiving yards and receptions, plus anytime TD, from the 2023 season (7 books: DraftKings, FanDuel, BetMGM, ESPN BET, Pinnacle, Bovada, BetOnline). Pass game_id for every player's props in one game (10 credits), or player_id with season for one player across a season (10 credits per game returned). Returns the closing line by default (the last before kickoff) or the opening line. Set estimate_only to get the price without being charged. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoOne market: player_pass_yds (passing yards), player_pass_tds (passing touchdowns), player_rush_yds (rushing yards), player_reception_yds (receiving yards), player_receptions (receptions), player_anytime_td (anytime touchdown (over = scores))
seasonNoSeason year, with player_id.
game_idNoGame id, e.g. 2025_01_KC_LAC.
bookmakerNoBookmaker key, e.g. draftkings, fanduel, pinnacle.
player_idNoGSIS player id (00-00XXXXX) from search_players. With season: that player's props across the season.
estimate_onlyNoReturn what this call would cost, without charging or running it.
snapshot_typeNoclosing (default): the last line before kickoff. opening: the first one captured.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
toolNo
countNo
gamesNo
propsNo
creditsNo
estimate_onlyNo
snapshot_typeNo
credits_per_gameNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the read-only safety profile, yet the description adds real behavioral context: a concrete 10-credit cost model, a free estimate_only path, closing-line-as-default versus opening, and explicit policy constraints on stake/payout advice. This is meaningful disclosure beyond the structured fields.

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

Conciseness5/5

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

It leads with what the tool returns and its scope, then usage modes, cost, default snapshot, and policy limits, with no filler. The single long first sentence is dense but every clause adds a filter or market the agent needs.

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?

An output schema exists, so return values need not be described. Given that, the description covers markets, books, usage patterns, cost, snapshot default, and usage policy comprehensively enough 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?

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining the interplay between game_id and player_id+season and the per-game credit charge, which the schema does not state. It stops short of enumerating every optional filter, so a 4 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 states a specific verb and resource: player prop lines by sportsbook, enumerating six exact markets and naming the seven covered books and the 2023 season. This is far more specific than the name alone. It does not explicitly differentiate itself from close siblings such as get_prop_history or get_odds, so it stops short of a 5.

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

Usage Guidelines4/5

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

It clearly describes the two usage modes: game_id for every player's props in one game, or player_id with season for one player across a season. It also flags estimate_only as the way to preview price without being charged. No alternatives (e.g. get_prop_history) are named, so it lacks the explicit routing a 5 requires.

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

get_player_statsPlayer statsA
Read-only
Inspect

Use for one player: bio, draft, physicals, id crosswalk (PFR, ESPN), summed season totals across passing, rushing, receiving, defense, kicking, returns, and fantasy points, every weekly stat line for the season, and games played per season. Defaults to the player's latest season. Costs 5 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
seasonNoSeason year. Defaults to the player's latest season.
player_idYesGSIS player id from search_players (e.g. 00-0033873)
season_typeNoRegular season (default) or postseason

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
weeksYes
playerYes
seasonYes
seasonsYes
season_typeYes
season_totalsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds genuinely new behavior: a 5-credit cost, the latest-season default when season is omitted, that totals are summed across all stat categories, and that per-week lines are included. It stops short of noting pagination or response size, which matters given the volume implied.

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?

Front-loaded with the scope qualifier and the cost statement is cleanly separated as its own sentence. The middle clause is a long enumeration, but each item is a distinct data category the caller needs, so it earns its length.

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 the description need not spell out return types, and it still usefully previews the payload's breadth plus cost and defaults. The one gap is that it never flags how large a full weekly-lines response will be or any pagination/truncation behavior.

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 player_id's GSIS format, the season default, and the REG/POST enum. The description's season-default statement merely repeats the schema text, adding no syntax or edge-case meaning beyond it; baseline 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?

States a specific verb and resource and enumerates exactly what comes back: bio, draft, physicals, id crosswalk, summed season totals across stat categories, weekly lines, and games played. The 'Use for one player' opener immediately separates it from team-level siblings like get_team_stats and from the narrower get_advanced_stats.

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

Usage Guidelines3/5

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

The 'Use for one player' framing implies the scope and the season default is stated, but no alternative tool is named and no when-not-to-use condition is given (e.g. use get_advanced_stats for deeper metrics, search_players for id lookup). Usage is inferable rather than explicit.

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

get_playsPlaysA
Read-only
Inspect

Use for play-by-play with nflfastR metrics: EPA, WPA, win probability, success, CPOE, air yards, formation flags, and the players involved. Filter by game, or by season plus week/team/player, plus play type, down, quarter, win-probability band, red zone, third down. Returns a per-query EPA and success-rate summary. Paginate with offset. Costs 10 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
downNoDown
weekNoWeek
limitNoMax plays (default 200)
max_wpNoMaximum pre-play win probability
min_wpNoMinimum pre-play win probability for the offense
offsetNoPagination offset
seasonNoSeason year (required when game_id is not set)
defteamNoDefense team code
game_idNoGame id, e.g. 2025_01_KC_BUF
posteamNoOffense team code
quarterNoQuarter (5+ = overtime)
red_zoneNoOnly plays inside the 20
passer_idNoGSIS id of the passer
play_typeNoPlay type
rusher_idNoGSIS id of the rusher
third_downNoOnly third downs
receiver_idNoGSIS id of the receiver

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
playsYes
summaryYes
next_offsetYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior: pagination via offset and a cost of 10 credits per call, plus a per-query EPA/success-rate summary on the return. It does not mention auth requirements or the default limit (schema covers the latter).

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?

Front-loaded with the use case, then filters, then return shape, pagination, and cost in a tight sequence with no filler sentences. The metric enumeration is long but every item earns its place given 17 parameters to advertise.

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?

An output schema exists, so return values need no elaboration, yet the description still calls out the EPA/success-rate summary. Combined with cost, pagination, and filter-combination rules for a 17-param, zero-required tool, an agent has everything needed 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 documents all 17 parameters, making 3 the baseline. The description mostly restates schema field names, though it adds mild semantics by framing min_wp/max_wp as a 'win-probability band' and describing how game vs. season+week/team/player filters combine.

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?

States a specific verb-resource (play-by-play) and enumerates the nflfastR play-level metrics it exposes (EPA, WPA, CPOE, air yards, formation flags), which cleanly separates it from aggregate siblings like get_advanced_stats, get_player_stats, and game-level get_game_detail.

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?

Gives explicit filter recipes: by game, or by season plus week/team/player, plus play type, down, quarter, win-probability band, red zone, third down. It provides clear context for when the tool is the right one but names no alternative or when-not conditions (e.g., when to prefer get_player_stats for aggregates).

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

get_prop_historyProp historyA
Read-only
Inspect

Use to see how a player did against his prop line over time: for one market (passing, rushing or receiving yards, passing touchdowns, completions, attempts, interceptions, carries, receptions or anytime touchdown), one row per game with the closing line (the median across books, or one book's), the opening line, the prices, what the player actually recorded from our box scores and the result against the line, plus the over rate. Costs 10 credits for up to 200 games. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoGames to return, oldest first (default 50, max 200). next_from_date says where to continue.
marketYesThe market: player_pass_yds (passing yards), player_pass_tds (passing touchdowns), player_pass_completions (pass completions), player_pass_attempts (pass attempts), player_pass_interceptions (interceptions thrown), player_rush_yds (rushing yards), player_rush_attempts (rush attempts), player_receptions (receptions), player_reception_yds (receiving yards), player_anytime_td (anytime touchdown (over = scores))
to_dateNoLast date, YYYY-MM-DD (the game's date).
bookmakerNoOne book's closing line instead of the median across books, e.g. draftkings.
from_dateNoFirst date, YYYY-MM-DD (the game's date).
player_idYesPlayer id (a GSIS id such as 00-0033873) from search_players.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
statYes
toolNo
countYes
gamesYes
marketYes
creditsNo
summaryYes
bookmakerYes
player_idYes
truncatedNo
player_nameYes
estimate_onlyNo
next_from_dateNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), but the description adds real value beyond them: a concrete cost model (10 credits for up to 200 games) and a firm compliance constraint forbidding stake/payout calculations, bet recommendations, or sportsbook referrals. It also discloses what a returned row contains, which is unusually concrete for a read tool.

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?

Front-loaded with the purpose, then the cost and policy caveats, with no filler sentences. The inline enumeration of all ten markets duplicates the enum already in the schema, making the first sentence longer than needed.

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 an output schema exists, the description need not detail return values, yet it voluntarily describes row structure and the over rate. Filters (player, market, dates, bookmaker) are covered by the schema, and cost limits are stated. Pagination is handled only in the schema's limit description, which is adequate but not reinforced here.

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 every parameter, including the plain-language market enum mapping and the bookmaker median-vs-single-book semantics. The description restates the market list and the median/single-book distinction without adding new format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose4/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 — see how a player performed against his prop line over time — and enumerates the markets and the row contents, which makes the historical nature of the tool clear. It stops short of naming a sibling (e.g. get_player_props for current lines), so the agent must infer the distinction from context rather than being told.

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?

"Use to see how a player did against his prop line over time" gives a clear usage context, and the credit cost plus 200-game cap hint at when it is worth calling. No explicit when-not-to-use or named alternative is provided, so routing against get_player_props or get_line_movement is left to inference.

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

get_scheduleScheduleA
Read-only
Inspect

Use to see what is coming up: unplayed games in the next N days (default 7), or a specific week of the current season. Includes consensus lines where posted. Costs 2 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays ahead to look when week is not set (default 7)
teamNoTeam code to filter
weekNoA specific week of the current season (returns all games that week, played or not)

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysYes
weekYes
countYes
seasonYes
upcoming_gamesYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds genuinely new operational context: a 2-credit cost and explicit policy constraints about not computing stakes/payouts or recommending bets. It doesn't cover pagination or result limits, but the added cost and policy disclosure is meaningful beyond the annotations.

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

Conciseness4/5

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

The core purpose is front-loaded in the first clause, and the remaining sentences carry the cost and policy information. The policy sentence is somewhat long but earns its place by constraining agent behavior around betting-related responses.

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?

An output schema exists, so return values need not be explained. The description covers purpose, both invocation modes, cost, and policy constraints; the only minor gap is result limits or ordering, which is arguably the output schema's job.

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 days, team, and week. The description restates the default of 7 days and notes that week returns all games played or not, but adds no syntax or format detail the schema lacks. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb+resource ('see what is coming up: unplayed games') and specifies scope precisely — upcoming N days, or a specific week of the current season. It does not explicitly name or contrast with siblings like get_games or get_game_detail, so it falls short of a 5 despite being clear and specific.

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

Usage Guidelines4/5

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

It gives clear context for when to reach for this tool ('what is coming up') and the two modes of use (days vs. week). It doesn't state when NOT to use it or point to the alternative tools (e.g. get_games for past results), so it stops short of explicit alternatives.

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

get_snap_countsSnap countsA
Read-only
Inspect

Use for playing time: offensive, defensive, and special-teams snaps and snap shares, for one game, one player (PFR id), or a team's season. Costs 5 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam code
weekNoWeek filter
limitNoMax rows (default 200)
seasonNoSeason year (with team or player)
game_idNoGame id, e.g. 2025_01_KC_BUF
player_idNoPFR player id (from search_players pfr_id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
filtersYes
snap_countsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds the credit cost ('Costs 5 credits'), which is real behavioral information the annotations do not carry. It does not disclose pagination behavior, though the output schema and limit param partly cover that.

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

Conciseness5/5

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

Two tight sentences: the capability and supported query shapes come first, the cost note follows. No filler, nothing repeated from the name or title.

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, return values need no explanation, and the description covers all three access patterns for a 6-parameter, zero-required tool. It does not clarify how parameters combine (e.g., whether season is mandatory alongside team/player) or what happens with no filters, which is a modest remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters, including that player_id is a PFR id sourced from search_players. The description's mention of game/player/team-season modes maps to game_id, player_id, and team but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb-and-resource purpose ('playing time: offensive, defensive, and special-teams snaps and snap shares') and enumerates the three query shapes (game, player by PFR id, team season). No sibling tool covers snap counts, and the description makes that scope explicit.

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?

'Use for playing time' plus the three supported query modes gives clear context for when to reach for this tool rather than get_player_stats or get_team_stats. It stops short of naming an explicit alternative or stating exclusions, so it is clear but not fully routing.

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

get_standingsStandingsA
Read-only
Inspect

Use for regular-season standings and playoff seeding: record, win%, points for/against, home/away/division/conference records, streak, division rank, and conference seed. Ranks apply the real NFL tiebreaking procedure and report which step decided each one. Computed from final scores. Defaults to the current season. Costs 2 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
seasonNoSeason year the regular season starts (e.g. 2025). Defaults to current.
divisionNoFilter by division, e.g. 'NFC North'
conferenceNoFilter by conference

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
seasonYes
standingsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's job is added context — and it delivers: tiebreak ranks follow the real NFL procedure and report the deciding step, data is computed from final scores, and the call costs 2 credits. It does not cover error or empty-result behavior, keeping it below a 5.

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

Conciseness5/5

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

Purpose leads, followed by output fields, then behavioral notes (tiebreaking, provenance, default, cost) in short declarative sentences. No filler or repetition of the title.

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?

An output schema exists, so return-value documentation is unnecessary. The description covers scope, all three filter defaults, the tiebreak methodology, data provenance, and cost — everything an agent needs to decide and call 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 documents season, division, and conference including the current-season default. The description's restatement of the default adds no syntax or format detail beyond it; baseline 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?

States a specific resource with enumerated outputs: record, win%, points for/against, home/away/division/conference records, streak, division rank, conference seed. This is clearly distinguishable from siblings like get_team_stats or get_advanced_stats, which cover different stat families.

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?

"Use for regular-season standings and playoff seeding" gives clear conditions for selection, and "Defaults to the current season" sets the default scope. However, it names no alternative (e.g. use get_team_stats for per-team aggregate stats) and states no exclusions, so routing is implied rather than explicit.

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

get_team_statsTeam statsA
Read-only
Inspect

Use for one team's season: totals (passing, rushing, receiving, defense, kicking, penalties), EPA per play, yards per attempt/carry, the standings row, and every weekly stat line. Costs 5 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam code (e.g. KC, BUF, PHI)
seasonNoSeason year (e.g. 2025). Defaults to current.
season_typeNoRegular season (default) or postseason

Output Schema

ParametersJSON Schema
NameRequiredDescription
teamYes
countYes
weeksYes
recordYes
seasonYes
totalsYes
season_typeYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new operational context — "Costs 5 credits" — which an agent cannot get from the structured fields. It does not, however, note rate limits or 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?

A single front-loaded sentence opening with "Use for" and a compact enumeration of the payload. Every clause contributes; the credit cost is tucked at the end where it is 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?

An output schema exists, so return-value documentation is not needed, and the description still summarizes payload breadth plus the credit cost. Required vs optional parameters are handled by the schema. Minor gap: no note on default season behavior in prose, though the schema covers it.

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

Parameters3/5

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

Schema coverage is 100%, and the schema documents team code format, season default, and the REG/POST enum, so the baseline is 3. The description only loosely gestures at season scope ("season", "weekly stat line") and adds no syntax or constraint detail 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?

States a specific resource (one team's season stats) and enumerates exactly what is returned — totals, EPA per play, yards per attempt/carry, standings row, weekly stat lines. This implicitly separates it from get_player_stats and get_standings, though it never names a sibling to sharpen the distinction.

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?

"Use for one team's season" gives an implied scope, but there is no explicit when-not guidance or routing to alternatives such as get_advanced_stats or get_standings, which overlap in content. The agent must infer the boundary itself.

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

list_teamsList teamsA
Read-only
Inspect

Use when you need team codes, or all 32 current teams with conference, division, colours, and logo URLs. Team codes are nflverse spelling (LA for the Rams, WAS for Washington). Cheapest tool at 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionNoFilter by division, e.g. 'AFC East' or 'NFC West'
conferenceNoFilter by conference

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
teamsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds non-annotation value: the credit cost (1 credit, cheapest) and the scope of the dataset (32 current teams, i.e. no historical franchises).

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?

Three short sentences, front-loaded with the use case, then output detail, then cost. Nothing is padded or repeated from the schema or annotations.

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, return values need no explanation, and the description covers scope, spelling conventions and cost. It leaves minor gaps such as whether results are paginated or how current the roster data is, but nothing an agent needs 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% and both filters (division, conference) are already documented with examples and an enum in the schema, so the baseline of 3 applies. The description's nflverse spelling note clarifies output values rather than the parameters themselves.

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?

Names the resource (teams) and precisely enumerates what is returned: team codes plus all 32 current teams with conference, division, colours and logo URLs. The nflverse spelling note (LA, WAS) further pins down the exact output, making it unmistakable against siblings like get_standings or get_team_stats.

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?

"Use when you need team codes" gives a clear triggering condition, and the 1-credit cost note helps an agent pick this over costlier siblings. However, it never names an alternative or states when NOT to use it, so it stops short of explicit routing guidance.

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

search_playersSearch playersA
Read-only
Inspect

Use to find a player by name (partial match). Searches ~25,000 players back to 1999; returns current-season players by default, falling back to all players back to 1999 when none match. Returns the GSIS player id needed by get_player_stats. Costs 2 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoFilter by current team code
limitNoMax results (default 10)
queryYesPlayer name or part of it
activeNoDefault true, but an active-only search that finds nobody automatically falls back to all players and says so. Set false to search everyone outright.
positionNoFilter by position (e.g. QB, RB, WR, TE, OL, DL, LB, DB)

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
playersYes
included_inactiveYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld=false/destructive=false, and the description adds genuinely new behavior: the dataset size and time span, the active-only default with automatic fallback and self-reporting, and a cost signal ('Costs 2 credits'). These are traits an agent could not derive from the structured fields.

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

Conciseness5/5

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

Three sentences, front-loaded with the use case, then scope, then fallback behavior, then cost and the downstream handoff. No filler and nothing repeated from the title.

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?

An output schema exists, so return shape needn't be explained, and the description supplies the remaining decision-critical facts: search scope, fallback logic, credit cost, and the id handoff to get_player_stats. Nothing an agent needs to call this 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 all five parameters (query, team, limit, active, position) are already documented, including the fallback semantics of 'active'. The description restates the default/fallback behavior but adds no syntax or format detail beyond the schema, matching the baseline for a fully-covered 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?

States a specific verb+resource ('find a player by name, partial match') and immediately scopes the corpus ('~25,000 players back to 1999'). It also differentiates itself from the sibling get_player_stats by declaring that its output (the GSIS player id) is what that tool requires.

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?

Gives clear entry context ('Use to find a player by name') and a downstream routing hint ('Returns the GSIS player id needed by get_player_stats'), which tells the agent where this fits in a chain. It does not state when *not* to use it (e.g. versus get_player_leaders or get_player_stats directly), so it falls short of full alternative coverage.

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. 1 tool update
    • Changedget_plays12 fields changed
      • removedInput schema / properties / include_charting
        Removed value: -{
        -  "description": "Attach FTN manual charting to each play (2022+): alignment, motion, play action, screens, RPO, blitzers, drops",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_drop
        Removed value: -{
        -  "description": "Charting filter: charted drop (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_motion
        Removed value: -{
        -  "description": "Charting filter: pre-snap motion (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_no_huddle
        Removed value: -{
        -  "description": "Charting filter: no huddle (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_play_action
        Removed value: -{
        -  "description": "Charting filter: play action (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_qb_out_of_pocket
        Removed value: -{
        -  "description": "Charting filter: quarterback out of the pocket (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_rpo
        Removed value: -{
        -  "description": "Charting filter: run-pass option (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_screen_pass
        Removed value: -{
        -  "description": "Charting filter: screen pass (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_trick_play
        Removed value: -{
        -  "description": "Charting filter: trick play (2022+)",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / min_blitzers
        Removed value: -{
        -  "description": "Charting filter: at least this many blitzers (2022+). FTN counts rushers beyond the base rush, so this is typically 0-3; 5+ is almost never charted.",
        -  "maximum": 11,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / charted_plays
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / plays / items / properties / charting
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": {},
        -      "propertyNames": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
  2. 1 tool update
    • Changedget_line_movement1 field changed
      • addedInput schema / properties / all_snapshots
        Added value: +{
        +  "description": "Every hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.",
        +  "type": "boolean"
        +}
  3. 1 tool update
    • Addedget_prop_history
  4. 3 tool updates
    • Changedget_alt_lines1 field changed
      • addedOutput schema / properties / lines / items / properties / source
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_line_movement1 field changed
      • addedOutput schema / properties / movement / additionalProperties / items / properties / source
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_player_props1 field changed
      • addedOutput schema / properties / props / items / properties / source
        Added value: +{
        +  "type": "string"
        +}
  5. 2 tool updates
    • Addedget_alt_lines
    • Changedget_odds1 field changed
      • changedInput schema / properties / bookmaker / description
        Previous value: -"Bookmaker key (draftkings, fanduel, betmgm, espnbet, pinnacle, bovada, betonlineag, mybookieag)"New value: +"Bookmaker key (draftkings, fanduel, betmgm, espnbet, pinnacle, bovada, betonlineag, mybookieag; for 2014-2019 also westgate, caesars, wynn, unibet, 5dimes, sportsbettingag and others)"
  6. 2 tool updates
    • Changedget_odds1 field changed
      • changedInput schema / properties / bookmaker / description
        Previous value: -"Bookmaker key (draftkings, fanduel, betmgm, espnbet)"New value: +"Bookmaker key (draftkings, fanduel, betmgm, espnbet, pinnacle, bovada, betonlineag, mybookieag)"
    • Addedget_player_props
  7. 1 tool update
    • Changedget_odds20 fields changed
      • changedInput schema / properties / bookmaker / description
        Previous value: -"Bookmaker key (draftkings, fanduel, betmgm, caesars, espnbet)"New value: +"Bookmaker key (draftkings, fanduel, betmgm, espnbet)"
      • addedInput schema / properties / estimate_only
        Added value: +{
        +  "description": "Return what this call would cost, without charging or running it.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / game_id / description
        Previous value: -"Game id, e.g. 2026_01_KC_BUF"New value: +"Game id, e.g. 2026_01_KC_BUF. Omit and pass season for a whole season."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "With season: games per page (default 100, max 500).",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "With season: page offset; use next_offset from the previous page.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / season
        Added value: +{
        +  "description": "Season year for a whole season of per-book lines, e.g. 2026. Used when game_id is not set.",
        +  "type": [
        +    "string",
        +    "number"
        +  ]
        +}
      • changedInput schema / properties / snapshot_type / description
        Previous value: -"Return only one snapshot type. Default returns opening, closing, and latest per book."New value: +"Single game: one snapshot type (default all). Season: opening or closing (default closing)."
      • addedInput schema / properties / team
        Added value: +{
        +  "description": "With season: only this team's games (e.g. KC).",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "game_id"
        -]
      • addedOutput schema / properties / columns
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / credits
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / credits_per_game
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / estimate_only
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / games
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / next_offset
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / season
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / snapshot_type
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / tool
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / total_games
        Added value: +{
        +  "type": "number"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "game_id",
        -  "home_team",
        -  "away_team",
        -  "kickoff",
        -  "consensus_closing",
        -  "books",
        -  "bookmaker_count",
        -  "count"
        -]
  8. 17 tool updates
    • First observedget_advanced_stats
    • First observedget_depth_chart
    • First observedget_game_detail
    • First observedget_games
    • First observedget_head_to_head
    • First observedget_injuries
    • First observedget_line_movement
    • First observedget_odds
    • First observedget_player_leaders
    • First observedget_player_stats
    • First observedget_plays
    • First observedget_schedule
    • First observedget_snap_counts
    • First observedget_standings
    • First observedget_team_stats
    • First observedlist_teams
    • First observedsearch_players

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Live sports betting player props MCP server covering NBA, MLB, NFL, NHL, NCAA, and soccer. Unified from real sportsbooks into one REST API and a real MCP server (Streamable HTTP). Free tier, no card required.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Props-first sports odds API with a hosted MCP server. Live odds and player props (moneyline, spreads, totals) across US sportsbooks, normalized to JSON. Tools: get_odds, get_props, get_events, get_books. API-key auth, free tier.
    MIT No Attribution
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides access to over 12 years of NFL play-by-play data through a local DuckDB database. It enables users to query player performance, team statistics, and situational efficiency metrics like EPA and WPA using natural language.
    25 PyPI
    8
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Live sports betting odds, cross-book +EV, and graded player-prop resolution across 13 books.
    11
    133 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.