DraftCall
Server Details
Should I start X or Y? NFL fantasy compares, rankings, byes, matchups, schedule strength, checks
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- evanatpizzarobot/draftcall-mcp
- GitHub Stars
- 0
- Server Listing
- DraftCall-MCP
TDQS
Scored across 10 tools
Each tool targets a distinct query type: single-player lookup, two-player comparison, rankings, scarcity, ADP gaps, schedule, bye conflicts, weekly matchup, search, and claim verification. Even related tools like compare_players and get_player have clearly separated purposes that an agent can reliably distinguish.
Seven tools follow the get_ noun pattern, while search_players, compare_players, and verify_claim use verb_noun without get. The convention is still highly readable and predictable, with only minor deviations.
Ten tools is well-scoped for a fantasy football data server. Each tool covers a meaningful slice of draft, in-season, and fact-checking workflows without unnecessary overlap or bloat.
The set covers player lookup, head-to-head comparison, rankings, scarcity, schedule, bye conflicts, weekly matchups, and stat verification. A direct standalone ADP lookup and projections are missing, but agents can work around those gaps using the provided tools.
Available Tools
10 toolscompare_playersCompare two NFL playersARead-onlyIdempotentInspect
Compare any two NFL players head to head for fantasy football: points per game in the requested scoring format, volume stats, bye weeks, and which one produced more. Use this for start/sit, draft, and trade questions about two specific players.
| Name | Required | Description | Default |
|---|---|---|---|
| player_a | Yes | First player name, e.g. "Bijan Robinson". | |
| player_b | Yes | Second player name, e.g. "Jahmyr Gibbs". | |
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| tier_a | No | The tier this player sits in at his position, or null when he is outside the ranked pool. |
| tier_b | No | The tier this player sits in at his position, or null when he is outside the ranked pool. |
| player_a | Yes | |
| player_b | Yes | |
| same_tier | Yes | True only when both play the same position and land in the same tier. |
| higher_ppg | Yes | Name of the higher scorer, or null when the two are level. |
| ppg_margin | Yes | |
| shared_bye | Yes | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| scoring_format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive behavior, so the description's job is lighter. It adds useful behavioral detail by enumerating what the comparison reveals: points per game, volume stats, bye weeks, and the higher producer. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states what the tool does and what it returns, the second states when to use it. The core behavior is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only tool with a fully described schema and an output schema present, this description covers all essential guidance: what is compared, which formats are supported, and the decision scenarios it serves. Nothing material is missing for an agent to select and invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents player_a, player_b, and scoring_format with examples and defaults. The description's mention of 'requested scoring format' adds only light reinforcement and no meaningful new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('compare') with a clear resource ('any two NFL players head to head') and lists concrete outputs: points per game, volume stats, bye weeks, and the player who produced more. It clearly distinguishes itself from single-player tools like get_player and from rankings-based siblings like get_rankings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it for 'start/sit, draft, and trade questions about two specific players,' giving clear when-to-use context. It does not explicitly mention when not to use it or name alternative tools, but the qualifying phrase 'about two specific players' helps the agent avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_adp_market_gapsWhere the draft room disagrees with productionARead-onlyIdempotentInspect
Players whose consensus average draft position disagrees most with their actual production ranking. A player taken EARLIER than his production is being drafted on expectation (a rookie, a new situation, a bounce-back); one taken LATER is being drafted on doubt. Use this for draft-prep questions about who the room may be mispricing. This is a disagreement, NOT a recommendation: production is last season's, while ADP already prices in injuries, trades and rookies with no NFL snaps.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| position | No | Restrict to one position. Omit for all four. | |
| direction | No | earlier_than_production: the room drafts him sooner than his production ranks him. later_than_production: the room waits longer. Omit for both. | |
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| count | Yes | |
| players | Yes | |
| position | No | |
| direction | No | |
| adp_season | No | The season the draft board is for. |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| drafts_sampled | No | How many real drafts the consensus averages over. |
| scoring_format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral nuance by explaining that production is from last season and ADP already prices in injuries, trades, and rookies, preventing misinterpretation of the gap. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences carry definition, directional interpretation, intended usage, and a caveat with zero repetition. The core concept is front-loaded and every sentence adds meaning. This is an efficiently structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition, interpretation of both directions, use case, and key data caveats are all present, and the output schema covers return structure. For a read-only tool with four optional parameters, nothing critical is missing for an agent to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with limit lacking a description. The tool description helps by explaining what earlier/later than production means, reinforcing the direction enum semantics, and the schema itself documents position and scoring_format well. The limit parameter remains undocumented in both schema and description, a minor residual gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise definition: players whose consensus ADP disagrees most with production ranking. It distinguishes itself from raw rankings by explicitly declaring 'This is a disagreement, NOT a recommendation,' and the earlier/later explanation grounds the directional semantics. This clearly differentiates the tool from siblings like get_rankings or compare_players.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case: 'Use this for draft-prep questions about who the room may be mispricing.' It also provides a clear when-not-to-use signal by stating the output is not a recommendation. However, it does not name alternative sibling tools or state when to prefer them, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bye_conflictsFind bye-week conflicts on a rosterARead-onlyIdempotentInspect
Given a list of players, report which bye weeks two or more of them share. Use this for roster planning and draft questions about stacking byes.
| Name | Required | Description | Default |
|---|---|---|---|
| players | Yes | Player names, two or more. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| season | Yes | The season these bye weeks belong to. |
| conflicts | Yes | One entry per week where two or more of the named players are out together. Empty when there are none. |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds that conflicts are reported only when two or more players share a bye week, which is useful but does not disclose additional behavioral details such as output ordering or handling of unmatched players.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences deliver the core behavior and intended use with no filler. The operation is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one well-documented parameter, strong annotations, and an output schema. The description covers what the tool does, how to use it, and when to use it, leaving no meaningful gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the players parameter already described as 'Player names, two or more.' The description's phrase 'Given a list of players' adds no new semantic detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: given a list of players, report shared bye weeks. It clearly distinguishes itself from sibling tools like get_player and compare_players by focusing on bye-week conflict aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives the intended use: roster planning and draft questions about stacking byes. It does not name alternative tools or exclusions, but the use case is clear enough for an agent to select this over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playerGet one NFL playerARead-onlyIdempotentInspect
A single player's fantasy profile: positional rank, points per game in all three scoring formats, season stats, games played, and bye week.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Player name, e.g. "Puka Nacua". |
Output Schema
| Name | Required | Description |
|---|---|---|
| adp | No | Consensus draft position in the requested format, or null when the board does not have him. |
| ppg | Yes | Points per game in each scoring format. |
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| name | Yes | |
| rank | Yes | Rank within the position, by points per game. |
| slug | No | URL segment for this player on draftcall.io. |
| team | Yes | Team abbreviation. |
| tier | No | The tier this player sits in at his position, or null when he is outside the ranked pool. |
| stats | No | Season totals for the fields that apply to the position. |
| byeWeek | No | |
| position | Yes | QB, RB, WR, TE, K or DEF. |
| efficiency | No | Per-game and per-target rates. Each is null where its inputs do not apply. |
| gamesPlayed | Yes | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that the tool is read-only, idempotent, and non-destructive, so the description does not need to repeat those traits. The description adds useful context about what data the profile contains, but it does not disclose additional behavioral constraints such as authentication, rate limits, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core scope and then lists the specific profile attributes. There is no wasted wording, and the structure makes the tool's purpose immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with a full input schema, an output schema, and strong read-only annotations, the description provides enough information for an agent to call it appropriately. The included list of return fields covers what an agent would likely need to know about the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the single 'name' parameter, including an example value. The description does not add meaning beyond the schema, but with full schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's scope as a single player's fantasy profile and enumerates the specific stats returned, such as positional rank, points per game, and bye week. It distinguishes itself from compare_players and search_players through the word 'single', but it does not name a sibling or use an explicit action verb like 'gets' or 'retrieves'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool should be used when you need a detailed profile for one known player, especially compared to search or comparison tools. However, it provides no explicit guidance about when not to use it or which sibling tool would be a better fit for related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positional_scarcityCompare positional scarcityARead-onlyIdempotentInspect
How steep the fantasy dropoff is at each position in a given scoring format, measured from the top player to replacement level. Use this for draft-strategy questions like whether to take a running back or a wide receiver first.
| Name | Required | Description | Default |
|---|---|---|---|
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| positions | Yes | One row per position, steepest dropoff first. |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| scoring_format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond those: it explains the measurement method ('dropoff from top player to replacement level') and indicates dependence on scoring format. This is consistent with the annotations and adds useful nuance about what the tool computes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both purposeful and front-loaded. The first defines the metric and its measurement basis; the second gives a concrete use case. No filler or repetition of schema details. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the core concept and typical use. It does not describe what positions are included or how the output is structured, but the output schema handles the latter, and the tool is conceptually straightforward. A minor gap: it doesn't mention that the default scoring_format is half_ppr, but the schema covers that. Overall, sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the single parameter scoring_format, including descriptions of each enum value and its default. The tool description does not add any parameter-specific details beyond mentioning 'in a given scoring format'—which is already implicit. Since the schema handles the semantics fully, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool computes: 'How steep the fantasy dropoff is at each position in a given scoring format, measured from the top player to replacement level.' It gives a specific verb ('compare' per title) and resource ('positional scarcity'), and distinguishes it from sibling tools like compare_players by focusing on scarcity rather than direct player comparison. The example use case further pins down its intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this for draft-strategy questions like whether to take a running back or a wide receiver first,' which provides clear when-to-use guidance. It does not mention alternatives or exclusions (e.g., 'for direct player comparison use compare_players'), so it lacks explicit sibling differentiation, but the intended use case is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rankingsGet fantasy position rankingsARead-onlyIdempotentInspect
Fantasy football rankings for a position in a given scoring format, ordered by points per game. Positions: qb, rb, wr, te, flex, k, def. Use this for "who are the best X" and draft board questions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many players to return, newest ranking order. | |
| position | Yes | Position to rank. flex covers RB, WR, and TE together. | |
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| count | Yes | |
| tiers | No | |
| players | Yes | |
| position | Yes | |
| scarcity | No | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| scoring_format | Yes | |
| format_changes_order | Yes | False for positions that record no receptions, where every format gives the same order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, idempotentHint: true, and destructiveHint: false, which lowers the disclosure burden. The description adds useful behavioral detail: rankings are ordered by points per game and cover a specific position set. It does not mention pagination, response shape, or data freshness, but these are less critical given the annotations and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant phrasing. It front-loads the core function, then gives a practical use case. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only rankings tool, the description covers purpose, ordering, positions, and example queries. The output schema exists and parameter descriptions are complete, so the description doesn't need to explain return values. The only minor gap is not mentioning defaults for limit and scoring_format, but those are already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with meaningful parameter descriptions (e.g., flex covers RB, WR, and TE together). The description repeats the position list but does not add meaning beyond the schema. The baseline of 3 is appropriate since the schema carries the parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: returning fantasy football rankings for a position in a given scoring format, ordered by points per game. It enumerates all supported positions and provides concrete example queries ('who are the best X', draft board questions). This distinguishes it from other player-related tools, though siblings are not named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives a usage context: answering 'who are the best X' and helping with draft board questions. However, it does not mention when to avoid this tool in favor of siblings like get_positional_scarcity or get_adp_market_gaps, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strength_of_scheduleStrength of schedule by team and positionARead-onlyIdempotentInspect
How easy or hard a team's schedule is for one fantasy position, over the full season and over the fantasy playoff weeks (14 through 17), measured as the average fantasy points its opponents allowed to that position over the prior completed season. Give a team abbreviation or a player name; give only a position to rank all 32 teams. Use this for rest-of-season stash, trade deadline, and playoff planning questions.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, e.g. "KC". Optional when player is given. | |
| player | No | Player name; resolves the team and position. Optional when team is given. | |
| position | No | Position to grade the schedule for. Required with team, inferred from player, and on its own ranks every team. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| team | No | Null when every team was ranked rather than one graded. |
| teams | No | Every team ranked easiest first. Null when a single team was graded. |
| player | No | |
| playoffs | No | |
| position | Yes | |
| full_season | No | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| playoff_weeks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnly, idempotent, and non-destructive behavior, so the description doesn't need to repeat that. It adds useful context beyond annotations: the metric uses the prior completed season's data and covers weeks 14-17, which clarifies the data source and scope. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with high information density. It front-loads the core computation, then lists usage modes and use cases, with zero wasted words. It is perfectly sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return format is covered. The description fully covers the metric, time windows, input combinations, and intended use cases. It also distinguishes itself from siblings, making it completely self-sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are individually documented. The description adds relational meaning: 'Give a team abbreviation or a player name' and 'give only a position to rank all 32 teams' clarifies the optionality and inference rules between team, player, and position — this is beyond what the schema descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool computes: schedule difficulty for a fantasy position based on opponents' average fantasy points allowed, over full season and playoff weeks. It clearly differentiates from sibling tools like get_rankings or get_weekly_matchup by focusing on schedule strength rather than player performance or matchups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when-to-use guidance: 'Use this for rest-of-season stash, trade deadline, and playoff planning questions.' It also explains the three invocation modes (team abbreviation, player name, or position alone to rank all teams), leaving no ambiguity about how to call it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weekly_matchupLook up a player matchup for one weekARead-onlyIdempotentInspect
Who a player faces in a given week of the 2026 season, whether it is home or away, and how generous that opponent has been to that position. Use this for in-season start or sit questions that name a week, which the season-long tools cannot answer.
| Name | Required | Description | Default |
|---|---|---|---|
| week | Yes | Regular-season week, 1 through 18. | |
| player | Yes | Player name, e.g. "Puka Nacua". | |
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| home | No | |
| team | Yes | |
| week | Yes | |
| on_bye | Yes | True when the team has no game that week, in which case the opponent fields are null. |
| player | Yes | |
| season | Yes | |
| gameday | No | |
| opponent | No | |
| position | Yes | |
| player_ppg | Yes | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| scoring_format | Yes | |
| opponent_allowed_of | No | |
| opponent_allowed_ppg | No | Fantasy points this opponent allowed per game to the position over the completed season. |
| opponent_allowed_rank | No | Rank among teams, where 1 allowed the MOST and is therefore the softest matchup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds useful behavioral context beyond annotations: the data is tied to the 2026 season, and the tool returns venue (home/away) plus opponent-tier generosity for the position. No annotation contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence front-loads the core lookup result, and the second explains the intended use case and limitation of alternatives. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with full schema coverage, rich annotations, and a present output schema, the description is complete. It covers the temporal scope, the key result dimensions, and the exact scenario in which an agent should choose this tool. Nothing essential for selecting or invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents player, week, and scoring_format clearly. The description adds some context about what the week/player pair resolves to, but it does not materially extend parameter meaning beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reports who a player faces in a given week, home/away status, and opponent generosity to that position. It also distinguishes itself from season-long tools by scoping to weekly in-season questions, so an agent can tell it apart from sibling tools like get_rankings or get_strength_of_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this for 'in-season start or sit questions that name a week' and notes that 'season-long tools cannot answer' those questions. This gives a clear when-to-use signal and an implicit when-not-to-use condition, but it does not name specific alternative sibling tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_playersSearch NFL playersARead-onlyIdempotentInspect
Find players by partial name, team abbreviation, or position. Use this when a name is ambiguous or only partly known before calling the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Partial name, team abbreviation (e.g. "KC"), or position. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| count | Yes | |
| query | Yes | |
| players | Yes | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds little behavioral context beyond the search intent; it does not mention result ordering, pagination, or matching behavior. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the functional purpose and followed by a usage cue. No wasted words or repetitive schema restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters, an output schema is present, and annotations cover safety. The description gives enough context for selecting the tool, though it could briefly clarify the limit parameter's role. Overall, it is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, because the limit parameter has no schema description. The description mostly restates the query parameter's meaning and does not explain limit behavior, defaults, or constraints, leaving the undocumented parameter uncompensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: find players by partial name, team abbreviation, or position. It also positions the tool as a pre-step before using other player tools, which distinguishes it from sibling tools, though it does not name a specific alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this when a name is ambiguous or only partly known before calling the other tools, giving a clear context. It does not list explicit when-not-to-use conditions or name specific sibling alternatives, but the guidance is still actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_claimCheck a stated figure against DraftCall dataARead-onlyIdempotentInspect
Check a number you are about to state, or one a user has stated, against DraftCall data for one player: points per game, games played, bye week, positional rank, or any season stat such as rushingYards or receptions. Returns whether the figure matches and the actual value when it does not. Use this before quoting a figure from memory, and whenever a user asserts a stat.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | The figure being checked. | |
| metric | Yes | Which figure to check. ppg is points per game in scoring_format; rank is positional rank; the rest are season totals. | |
| player | Yes | Player name, e.g. "Puka Nacua". | |
| scoring_format | No | Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting. | half_ppr |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The draftcall.io page these figures came from. This is the citation to use. |
| team | Yes | |
| actual | Yes | The real figure, or null when DraftCall holds none. |
| metric | Yes | |
| player | Yes | |
| claimed | Yes | The figure that was submitted for checking. |
| verdict | Yes | unknown means the claim could be neither confirmed nor corrected, not that it was wrong. |
| position | Yes | |
| refreshed_at | Yes | When this dataset was last refreshed, as an ISO 8601 timestamp. |
| stats_season | Yes | The completed NFL season every figure in this result describes. |
| scoring_format | No | The format the figure was checked in, or null for metrics that do not vary by format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it returns a match verdict and the actual value when the figure does not match, and it scopes the check to one player. It does not specify matching tolerance/precision, a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose+scope, return behavior, and usage rule. The core action is front-loaded and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is an output schema, so return details need not be re-explained, and the annotations carry the safety profile. The description covers scope, metrics, and when to invoke the tool. The one meaningful gap is the lack of precision semantics (does 'matches' mean exact equality or tolerant rounding?), which matters for a verification tool but is not disabling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful framing beyond the schema by categorizing the metric choices into logical groups (per-game stats, schedule items like bye week, positional rank, and season totals) and by framing 'value' as a figure to verify rather than merely look up. This helps an agent reason about which metric enum value fits the user's request.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb ('Check'), a specific resource ('DraftCall data for one player'), and a concrete scope ('points per game, games played, bye week, positional rank, or any season stat'). It also reveals the output behavior (matches vs. actual value), making it unmistakably a verification tool. It is clearly distinct from all siblings such as compare_players, get_rankings, or get_player.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage timing is given: 'Use this before quoting a figure from memory, and whenever a user asserts a stat.' This covers both proactive and reactive scenarios. It does not explicitly name alternatives or exclusions, but the tool's verification niche is so distinct from the siblings that the guidance is sufficient.
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.
10 tool updates
- First observed
compare_players - First observed
get_adp_market_gaps - First observed
get_bye_conflicts - First observed
get_player - First observed
get_positional_scarcity - First observed
get_rankings - First observed
get_strength_of_schedule - First observed
get_weekly_matchup - First observed
search_players - First observed
verify_claim
Related MCP Connectors
Read-only fantasy analysis for ESPN, Yahoo, and Sleeper leagues via MCP
- NFL MCPOAuthcom.nflmcp
NFL analytics tools for AI agents: stats, fantasy, injuries, schedules, and advanced analysis.
Live NFL, MLB, and NBA sports intelligence: injury signals, identity resolution, projections.
Read-only ESPN, Sleeper, and Fantrax fantasy leagues for Claude, ChatGPT, and other AI tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceManages ESPN fantasy football teams post-draft, enabling lineup optimization, waiver/free agent recommendations, injury tracking, trade analysis, and playoff odds via read-only tools.MIT
- AlicenseNot gradedqualityAmaintenanceProvides verified NFL stats (2016–2025) and Sleeper league context through an MCP server, with tools for querying metrics, comparing entities, verifying claims, and accessing league data.MIT
- FlicenseBqualityDmaintenanceProvides NFL player statistics from 2015-2024, enabling player lookups, comparisons, and position leaderboards via natural language.4-
- AlicenseNot gradedqualityCmaintenanceAI-powered Yahoo Fantasy Football assistant for lineup optimization, draft strategy, and league management with player enhancement and multi-league support.82MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.