Skip to main content
Glama

Server Details

Should I start X or Y? NFL fantasy compares, rankings, byes, matchups, schedule strength, checks

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
evanatpizzarobot/draftcall-mcp
GitHub Stars
1
Server Listing
DraftCall-MCP

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct purposes: get_rankings, get_positional_scarcity, get_adp_market_gaps, get_strength_of_schedule, and get_weekly_matchup are all separable, and get_player/search_players/verify_claim are unambiguous. The main risk is compare_players, which sounds like a comparison tool but only returns app download links, creating a decoy that could mislead an agent into a dead end.

Naming Consistency5/5

Every tool follows a clean snake_case verb_noun pattern (get_player, search_players, verify_claim, get_adp_market_gaps, etc.). The convention is applied uniformly across all ten tools with no mixing of styles.

Tool Count5/5

Ten tools is well-scoped for a fantasy football draft-prep assistant, with each tool covering a distinct facet (rankings, player facts, schedules, ADP, byes, verification). No bloat and no thinness.

Completeness3/5

The surface covers rankings, player profiles, search, ADP gaps, bye conflicts, SOS, weekly matchups, scarcity, and claim verification well. However, the head-to-head comparison / start-sit capability is deliberately absent (compare_players is a non-functional ad stub), leaving a notable gap for a draft assistant, and there is no roster/league-context tool.

Available Tools

10 tools
compare_playersPlayer comparisons are in the DraftCall appA
Read-onlyIdempotent
Inspect

Returns NO comparison. Head-to-head player comparisons and start or sit verdicts are available only in the free DraftCall app for iPhone and Android, and this tool answers every call with the download links and nothing else: no stats, no higher scorer, no pick. For facts about one player, use get_player.

NameRequiredDescriptionDefault
player_aNoIgnored. Kept so older clients still validate.
player_bNoIgnored. Kept so older clients still validate.
scoring_formatNoIgnored.

Output Schema

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
messageYes
availableYesAlways false. This server does not compare players.
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
app_store_urlYes
google_play_urlYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real behavioral value beyond them: it discloses that parameters are inert and that the response body contains only download links, with no stats or scoring. It does not restate anything the annotations contradict.

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

Conciseness5/5

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

The critical fact — 'Returns NO comparison' — is front-loaded, followed by the explanation and the alternative in one compact block. No sentence is wasted; each clause (what it returns, what it doesn't, where the real data lives) earns its place.

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

Completeness5/5

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

With an output schema present and all three parameters documented at 100% coverage, the description needn't explain return values or parameter formats. It fully discharges its remaining duty: telling the agent this tool cannot fulfill comparison requests and where to go instead.

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 every parameter is explicitly marked 'Ignored', so the schema already carries the semantics. The description reinforces this ('answers every call with... nothing else') but adds no format or syntax detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description immediately and unambiguously states what happens on every call: it returns NO comparison and answers with download links only. It distinguishes itself from the sibling get_player by naming it, so an agent knows this tool is a dead end for comparison data and must not expect stats.

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?

It states the condition under which this tool is useful (never, for the actual data) and explicitly routes the agent to an alternative: 'For facts about one player, use get_player.' The exclusion is explicit rather than inferred, which is exactly the routing an agent needs.

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 productionA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNo
positionNoRestrict to one position. Omit for all four.
directionNoearlier_than_production: the room drafts him sooner than his production ranks him. later_than_production: the room waits longer. Omit for both.
scoring_formatNoScoring 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

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
countYes
playersYes
positionNo
directionNo
adp_seasonNoThe season the draft board is for.
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
drafts_sampledNoHow many real drafts the consensus averages over.
scoring_formatYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 rosterA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
playersYesPlayer names, two or more.

Output Schema

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
seasonYesThe season these bye weeks belong to.
conflictsYesOne entry per week where two or more of the named players are out together. Empty when there are none.
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb and resource: 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.

Usage Guidelines4/5

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 playerA
Read-onlyIdempotent
Inspect

A single player's fantasy profile: positional rank, points per game in all three scoring formats, season stats, games played, and bye week.

NameRequiredDescriptionDefault
nameYesPlayer name, e.g. "Puka Nacua".

Output Schema

NameRequiredDescription
adpNoConsensus draft position in the requested format, or null when the board does not have him.
ppgYesPoints per game in each scoring format.
urlYesThe draftcall.io page these figures came from. This is the citation to use.
nameYes
rankYesRank within the position, by points per game.
slugNoURL segment for this player on draftcall.io.
teamYesTeam abbreviation.
tierNoThe tier this player sits in at his position, or null when he is outside the ranked pool.
statsNoSeason totals for the fields that apply to the position.
byeWeekNo
positionYesQB, RB, WR, TE, K or DEF.
efficiencyNoPer-game and per-target rates. Each is null where its inputs do not apply.
gamesPlayedYes
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 scarcityA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
scoring_formatNoScoring 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

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
positionsYesOne row per position, steepest dropoff first.
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
scoring_formatYes

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, 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 rankingsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoHow many players to return, newest ranking order.
positionYesPosition to rank. flex covers RB, WR, and TE together.
scoring_formatNoScoring 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

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
countYes
tiersNo
playersYes
positionYes
scarcityNo
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
scoring_formatYes
format_changes_orderYesFalse for positions that record no receptions, where every format gives the same order.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint: true, idempotentHint: true, and destructiveHint: false, 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 positionA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
teamNoTeam abbreviation, e.g. "KC". Optional when player is given.
playerNoPlayer name; resolves the team and position. Optional when team is given.
positionNoPosition to grade the schedule for. Required with team, inferred from player, and on its own ranks every team.

Output Schema

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
teamNoNull when every team was ranked rather than one graded.
teamsNoEvery team ranked easiest first. Null when a single team was graded.
playerNo
playoffsNo
positionYes
full_seasonNo
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
playoff_weeksYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

The tool has an output schema, 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 weekA
Read-onlyIdempotent
Inspect

Who a player faces in a given week of the 2026 season, whether it is home or away, the game date, and how many fantasy points that opponent allowed to his position. A schedule lookup for one player; it does not compare players or make a start or sit call.

NameRequiredDescriptionDefault
weekYesRegular-season week, 1 through 18.
playerYesPlayer name, e.g. "Puka Nacua".
scoring_formatNoScoring 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

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
homeNo
teamYes
weekYes
on_byeYesTrue when the team has no game that week, in which case the opponent fields are null.
playerYes
seasonYes
gamedayNo
opponentNo
positionYes
player_ppgYes
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
scoring_formatYes
opponent_allowed_ofNo
opponent_allowed_ppgNoFantasy points this opponent allowed per game to the position over the completed season.
opponent_allowed_rankNoRank among teams, where 1 allowed the MOST and is therefore the softest matchup.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine non-annotation context: this is a single-player schedule lookup with a fixed response shape (opponent, home/away, date, points allowed) and a hard scope boundary against comparison or start/sit reasoning.

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 sentences, both earning their place. The response contents are front-loaded and the scope exclusion is packed into the second sentence 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, return values need no explanation, and the annotations carry the safety profile. The description supplies purpose, scope, and exclusions—everything an agent needs to select and call this single-player lookup correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents week (1-18), player name format, and the scoring_format enum with its default—so the schema does the heavy lifting. The description's mention of "fantasy points that opponent allowed" loosely ties to scoring_format but adds no syntax or format detail beyond the schema.

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

Purpose5/5

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

The description names a specific resource (a player's weekly opponent) and enumerates what is returned: home/away, game date, and fantasy points allowed to his position. It also names what it is not (compare players, start/sit), which cleanly separates it from siblings like compare_players and 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.

Usage Guidelines4/5

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

It explicitly states the negative scope: "it does not compare players or make a start or sit call," steering the agent away from compare_players and any advice-style tool. It stops short of naming the alternative tool by name, but the exclusion is concrete enough to route correctly.

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

search_playersSearch NFL playersA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNo
queryYesPartial name, team abbreviation (e.g. "KC"), or position.

Output Schema

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
countYes
queryYes
playersYes
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 dataA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
valueYesThe figure being checked.
metricYesWhich figure to check. ppg is points per game in scoring_format; rank is positional rank; the rest are season totals.
playerYesPlayer name, e.g. "Puka Nacua".
scoring_formatNoScoring 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

NameRequiredDescription
urlYesThe draftcall.io page these figures came from. This is the citation to use.
teamYes
actualYesThe real figure, or null when DraftCall holds none.
metricYes
playerYes
claimedYesThe figure that was submitted for checking.
verdictYesunknown means the claim could be neither confirmed nor corrected, not that it was wrong.
positionYes
refreshed_atYesWhen this dataset was last refreshed, as an ISO 8601 timestamp.
stats_seasonYesThe completed NFL season every figure in this result describes.
scoring_formatNoThe format the figure was checked in, or null for metrics that do not vary by format.

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, 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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

The first sentence states a specific verb ('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.

Usage Guidelines4/5

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.

  1. 1 tool update
    • Changedcompare_players20 fields changed
      • changedInput schema / properties / player_a / description
        Previous value: -"First player name, e.g. \"Bijan Robinson\"."New value: +"Ignored. Kept so older clients still validate."
      • changedInput schema / properties / player_b / description
        Previous value: -"Second player name, e.g. \"Jahmyr Gibbs\"."New value: +"Ignored. Kept so older clients still validate."
      • removedInput schema / properties / scoring_format / default
        Removed value: -"half_ppr"
      • changedInput schema / properties / scoring_format / description
        Previous value: -"Scoring format. ppr awards 1 point per reception, half_ppr 0.5, standard 0. Defaults to half_ppr, the most common league setting."New value: +"Ignored."
      • removedInput schema / properties / scoring_format / enum
        Removed value: -[
        -  "ppr",
        -  "half_ppr",
        -  "standard"
        -]
      • removedInput schema / required
        Removed value: -[
        -  "player_a",
        -  "player_b"
        -]
      • addedOutput schema / properties / app_store_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / available
        Added value: +{
        +  "description": "Always false. This server does not compare players.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / google_play_url
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / higher_ppg
        Removed value: -{
        -  "description": "Name of the higher scorer, or null when the two are level.",
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / message
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / player_a
        Removed value: -{
        -  "properties": {
        -    "byeWeek": {
        -      "type": [
        -        "integer",
        -        "null"
        -      ]
        -    },
        -    "efficiency": {
        -      "description": "Per-game and per-target rates. Each is null where its inputs do not apply.",
        -      "type": "object"
        -    },
        -    "gamesPlayed": {
        -      "type": "integer"
        -    },
        -    "name": {
        -      "type": "string"
        -    },
        -    "position": {
        -      "description": "QB, RB, WR, TE, K or DEF.",
        -      "type": "string"
        -    },
        -    "ppg": {
        -      "description": "Points per game in each scoring format.",
        -      "properties": {
        -        "half_ppr": {
        -          "type": "number"
        -        },
        -        "ppr": {
        -          "type": "number"
        -        },
        -        "standard": {
        -          "type": "number"
        -        }
        -      },
        -      "required": [
        -        "ppr",
        -        "half_ppr",
        -        "standard"
        -      ],
        -      "type": "object"
        -    },
        -    "rank": {
        -      "description": "Rank within the position, by points per game.",
        -      "type": "integer"
        -    },
        -    "slug": {
        -      "description": "URL segment for this player on draftcall.io.",
        -      "type": "string"
        -    },
        -    "stats": {
        -      "description": "Season totals for the fields that apply to the position.",
        -      "type": "object"
        -    },
        -    "team": {
        -      "description": "Team abbreviation.",
        -      "type": "string"
        -    },
        -    "url": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "rank",
        -    "name",
        -    "position",
        -    "team",
        -    "ppg",
        -    "gamesPlayed"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / player_b
        Removed value: -{
        -  "properties": {
        -    "byeWeek": {
        -      "type": [
        -        "integer",
        -        "null"
        -      ]
        -    },
        -    "efficiency": {
        -      "description": "Per-game and per-target rates. Each is null where its inputs do not apply.",
        -      "type": "object"
        -    },
        -    "gamesPlayed": {
        -      "type": "integer"
        -    },
        -    "name": {
        -      "type": "string"
        -    },
        -    "position": {
        -      "description": "QB, RB, WR, TE, K or DEF.",
        -      "type": "string"
        -    },
        -    "ppg": {
        -      "description": "Points per game in each scoring format.",
        -      "properties": {
        -        "half_ppr": {
        -          "type": "number"
        -        },
        -        "ppr": {
        -          "type": "number"
        -        },
        -        "standard": {
        -          "type": "number"
        -        }
        -      },
        -      "required": [
        -        "ppr",
        -        "half_ppr",
        -        "standard"
        -      ],
        -      "type": "object"
        -    },
        -    "rank": {
        -      "description": "Rank within the position, by points per game.",
        -      "type": "integer"
        -    },
        -    "slug": {
        -      "description": "URL segment for this player on draftcall.io.",
        -      "type": "string"
        -    },
        -    "stats": {
        -      "description": "Season totals for the fields that apply to the position.",
        -      "type": "object"
        -    },
        -    "team": {
        -      "description": "Team abbreviation.",
        -      "type": "string"
        -    },
        -    "url": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "rank",
        -    "name",
        -    "position",
        -    "team",
        -    "ppg",
        -    "gamesPlayed"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / ppg_margin
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / same_tier
        Removed value: -{
        -  "description": "True only when both play the same position and land in the same tier.",
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / scoring_format
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / shared_bye
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / tier_a
        Removed value: -{
        -  "description": "The tier this player sits in at his position, or null when he is outside the ranked pool.",
        -  "properties": {
        -    "label": {
        -      "type": "string"
        -    },
        -    "tier": {
        -      "type": "integer"
        -    }
        -  },
        -  "type": [
        -    "object",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / tier_b
        Removed value: -{
        -  "description": "The tier this player sits in at his position, or null when he is outside the ranked pool.",
        -  "properties": {
        -    "label": {
        -      "type": "string"
        -    },
        -    "tier": {
        -      "type": "integer"
        -    }
        -  },
        -  "type": [
        -    "object",
        -    "null"
        -  ]
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "scoring_format",
        -  "player_a",
        -  "player_b",
        -  "higher_ppg",
        -  "ppg_margin",
        -  "shared_bye",
        -  "same_tier",
        -  "url",
        -  "stats_season",
        -  "refreshed_at"
        -]New value: +[
        +  "available",
        +  "message",
        +  "app_store_url",
        +  "google_play_url",
        +  "url",
        +  "stats_season",
        +  "refreshed_at"
        +]
  2. 10 tool updates
    • First observedcompare_players
    • First observedget_adp_market_gaps
    • First observedget_bye_conflicts
    • First observedget_player
    • First observedget_positional_scarcity
    • First observedget_rankings
    • First observedget_strength_of_schedule
    • First observedget_weekly_matchup
    • First observedsearch_players
    • First observedverify_claim

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time and historical financial market data from Yahoo Finance, including stock prices, options chains, and company news. It also enables technical analysis calculations like moving averages and RSI for comparing or analyzing stock performance.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    What ChatGPT, Claude, Gemini & Grok agree is the best product, tool, or service for any "best X for Y" need — continuously re-polled rankings with a dated verdict and a public poll audit trail. Excludes medical, financial, and legal advice.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.