io.github.dachhack/stathead-mcp
NPM · STATHEAD-MCP
Fantasy football analytics: stats, dynasty, projections, prospects, Sleeper leagues, Excel I/O
Available components
Last scanned (16 hours ago)
Scores higher than 94% of npm servers
Category Entertainment and Games
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to dachhack/stathead). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 28 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 23260 tokens (~422/item across 55 items; 55 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "clear_overrides" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 0
- Security disclosure: unverified → fail ▼ functional
- 3 Nov 26 0
- Security disclosure: fail → unverified ▼ functional
- 19 Oct 26 +1
- Stability: 0.97 → pass security
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Oct 26 +39
- Injection markers: unverified → pass ▲ security
- Security disclosure: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- Stability: unverified → 0.83 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- 13 Oct 26 0
- Security disclosure: fail → unverified ▼ functional
- Package version: 1.0.112 → 1.0.113 functional
- 11 Oct 26 −40
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 1.0.112 → 1.0.113 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed npm/stathead-mcp@1.0.113
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | dachhack/stathead |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/dachhack/stathead/.github/workflows/publish-mcp.yml@refs/heads/claude/nfl-fantasy-workbench-6D1yd |
| Rekor log index | 3114141518 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:0f1b08d74611b63fcacc124b582661fffa1d6a0402469a1c695649d7b660b1ff80200b411e043ce395ef59a512308af817b6f4ece2dc2bf164b4ba5d3 |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
clear_overrides ~72
Remove custom projections/rankings overrides previously saved via import_excel, so analysis tools revert to StatHead's own model. Optionally clear just one kind. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Which overrides to clear. Default: all. |
No output schema declared.
No examples provided.
export_excel ~268
Export StatHead projections, rankings, or rookie rankings to a styled .xlsx workbook on the local disk — the same boards the website lets you download. Edit the highlighted columns in Excel/Sheets (Proj PPG for projections; My Rank for rankings/rookies), then feed the file back with import_excel so YOUR numbers drive every later analysis. Returns the absolute path of the written file. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | – | – | Draft class for rookie_rankings (2026 or 2027). Default 2026. |
| kind | string | yes | Which board to export. projections = StatHead season PPG (edit Proj PPG). rankings = redraft ECR board (edit My Rank). rookie_rankings = prospect grades/board (edit My Rank). by_team = first-party by… |
| limit | number | – | Max rows to write (default 300). |
| path | string | – | Output file path or directory. If a directory (or omitted), a dated filename is generated there. Default dir: $STATHEAD_DIR or the current working directory. |
| position | string | – | Filter to one position (QB, RB, WR, TE). |
No output schema declared.
No examples provided.
get_adp ~264
Get StatHead ADP: StatHead's blend of the draft markets (FantasyPros expert consensus, Sleeper draft ADP, FantasyFootballCalculator), each weighted by freshness and confidence, for players priced by at least two of them. Third-party rankings and ADP are inputs only: no single source's number is returned. Includes a disagreement spread (max minus min across sources) and the number of sources. Use for draft value analysis. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Filter to a position; adds adp_pos_rank (positional draft rank). |
| season | number | – | Season year. Defaults to the current draft season. Past seasons blend the archived Sleeper and FantasyFootballCalculator boards (2020 onward). |
No output schema declared.
No examples provided.
get_adp_with_results ~342
Join preseason StatHead ADP (StatHead's blend of the archived Sleeper and FantasyFootballCalculator draft boards; players on both) to actual season-end fantasy production in one call — find draft-day values and busts without joining ADP and stats yourself. For a season, returns each drafted skill player's StatHead ADP alongside their actual PPR points, positional ADP rank, positional PPR finish (among drafted players), and value = adp_pos_rank − finish_pos_rank (positive = beat draft slot). Skill positions (QB/RB/WR/TE). Coverage 2020–present. No single source's ADP is shown. Note: value is a single-season residual — a relative bust/value ranking, not a predictive probability; average multiple seasons before relying on it. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max players (default 60) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Filter to a position |
| season | number | yes | Season (2020–present) |
| sort_by | string | – | Sort column. value/ppr descending; adp/adp_pos_rank/finish_pos_rank ascending. Default: value (biggest values first). |
No output schema declared.
No examples provided.
get_advanced_stats ~238
Get PFR advanced stats: passing (pressure rate, drop rate, bad throws), rushing (yards before/after contact, broken tackles), receiving (drops, YAC). Use for efficiency and process metrics beyond box score. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 40) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| season | number | yes | NFL season year. Coverage: 2018–present. |
| season_totals | boolean | – | Return one row per player of PFR season totals (default true). Set false for per-game rows. |
| stat_type | string | yes | Type of advanced stats |
No output schema declared.
No examples provided.
get_coach_tendencies ~391
Head-coach scheme + usage tendencies and a coach×player reunion lookup — so you don't have to hand-reconstruct what a coach does or how he used a player. Per coach (career + last-3-season averages): neutral-script pass rate, pass rate, plays/game (pace), shotgun rate, RZ TD rate, PPG, target concentration (HHI), and WR1 / RB / TE target share (the WR1's name per season). Pass a coach by name, or a team+season to resolve that team's coach. Add player_name to see that player's target share / PPG / games UNDER this coach (the reunion signal, e.g. A.J. Brown under Mike Vrabel), or player_name alone for the player's full coaching history. Coverage: 2016–present (head coach = nflverse credited game coach, a play-caller proxy). Note: this is descriptive data; it is not (yet) wired into the share-model projection. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| coach | string | – | Head coach name (case-insensitive partial match). |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Show this player's usage under the resolved coach; or, alone, the player's coaching history. |
| season | number | – | Season — with team, resolves that team's head coach (also scopes the reunion lookup). |
| team | string | – | Team abbreviation — with season, resolves that team's head coach. |
No output schema declared.
No examples provided.
get_college_qbr ~248
Get ESPN college QBR ratings for quarterback prospects. Includes total QBR, points added, EPA, and breakdown by pass/run/sack. Coverage: 2004–2020 only (historical; the upstream source is not updated for recent seasons — use get_college_stats for current college production). Use for evaluating college QB efficiency, comparing draft prospect QBs across classes. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 30) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| season | number | – | Filter to specific college season (2004+) |
| sort_by | string | – | Sort by: total_qbr, points_added, total_epa |
No output schema declared.
No examples provided.
get_college_stats ~384
Get college football statistics for individual players OR a whole class/cohort. Counting stats (passing, rushing, receiving, tackles, sacks, INTs, etc.) by season. Source: CollegeFootballData (CFBD); coverage 2005–present. For one player, pass player_name. For a cohort (e.g. "all 2023 RBs"), omit player_name and pass season (optionally position/school) and sort_by to rank. Use for evaluating college production, dominator rating, market share analysis. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max player-seasons (default 100) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter to one player. Omit for a class/cohort query (then season and/or school is required). |
| position | string | – | Filter by position abbreviation (e.g. RB, WR, QB) |
| school | string | – | Filter by school name/abbreviation |
| season | number | – | College season. Required for cohort queries (when player_name is omitted). |
| sort_by | string | – | Stat column to rank a cohort by, descending (e.g. "Rushing Yards", "Receiving Yards", "Receptions", "Passing Yards"). Case- and spacing-insensitive, so "rushing_yards" also works. Unknown values retu… |
No output schema declared.
No examples provided.
get_combine_results ~255
Get NFL Combine athletic testing results. Includes 40-yard dash, bench press, vertical jump, broad jump, 3-cone drill, shuttle, height, weight, draft position. Use for athletic profile analysis, draft capital evaluation. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 30) |
| max_season | number | – | Latest draft year to include |
| min_season | number | – | Earliest draft year to include |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position (QB, RB, WR, TE, etc.) |
| sort_by | string | – | Sort by: forty, bench, vertical, broad_jump, cone, shuttle, wt |
No output schema declared.
No examples provided.
get_contracts ~232
Get NFL player contract details from OverTheCap. Includes total value, APY, guaranteed money, cap percentage, inflation-adjusted values. Use for salary analysis, team cap situations, player investment vs production. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| active_only | boolean | – | Only show active contracts (default true) |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 40) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position |
| sort_by | string | – | Sort by: value, apy, guaranteed, apy_cap_pct |
| team | string | – | Filter by team |
No output schema declared.
No examples provided.
get_depth_charts ~220
Get NFL team depth charts showing starter/backup designations. Shows position rank (1=starter, 2=backup, 3=third string). Use for projecting snap shares, identifying handcuffs, roster battles. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 60) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position abbreviation (e.g., RB, WR, QB) |
| season | number | yes | NFL season year |
| team | string | – | Filter by team abbreviation |
No output schema declared.
No examples provided.
get_devy_player ~346
One devy (college) player's card: his StatHead devy numbers (composite value and rank, value-model price, NFL career projection, dynasty value / pick equivalent, estimated age, breakout age), his college season stat lines (the last five seasons plus the current season to date) and the current season's game log (week, opponent, result and his passing / rushing / receiving line). Covers every player on the devy board (get_devy_rankings, ~6,100). College stats from CollegeFootballData.com; the season to date and game log run through the last completed week (refreshed weekly in season). If the name matches several players, the matches are listed: narrow with school, position or draft_year. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | number | – | Disambiguate by draft class. |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| format | string | – | League format for the StatHead values: sf = superflex / 2QB (default), 1qb = single QB. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | yes | Player name (partial match). |
| position | string | – | Disambiguate by position. |
| school | string | – | Disambiguate by school (partial match). |
No output schema declared.
No examples provided.
get_devy_rankings ~1,373
StatHead devy (college player) rankings for dynasty leagues. The headline is StatHead's COMPOSITE value and rank: the devy market's price blended with StatHead's NFL career projection in rank space, priced on a smooth 0-9999 value curve. composite_weight = the career projection's share, set by the career model's own held-out accuracy at that position and distance from the draft (0.75 x Spearman, halved where it does not beat last-season production: about 0.11-0.17 for QBs, 0.17-0.25 for TEs, 0.26-0.35 for RBs and WRs), except where a backtest on the 2010-2022 classes found a better weight on held-out classes both within position and across the board (WR three seasons from the draft: 0.5); never above 0.5, so the market always leads. In that backtest the composite out-ranked a market-style price alone on NFL outcomes 0-2 seasons before the draft. Third-party values and ranks are inputs only: no field is a third-party number or rank. market_value / market_rank = the StatHead devy value model's price for the player's profile (what the market pays for a player like him: P(listed) x value if listed, from estimated age and draft age, breakout age, share of the offense, usage, counting stats, program, competition level and recruiting; held-out rank correlation with the market ~0.79 superflex / ~0.68 1QB). market_listed = on the market's devy list. hit_pct = StatHead's NFL career model IN THE CHOSEN FORMAT: the chance (percent) of at least one fantasy-starter season in his first four NFL seasons (6+ games above replacement PPR PPG for a 12-team league; single QB: QB13/RB30/WR42/TE13; superflex/2QB: QB25). About 3-5% of college players at this level hit, so even top prospects read in the 20s-60s. career_rank / career_pct = over the whole board by hit chance x what a hit is worth at his position. career_vs_market = market rank minus career rank (positive: the career model likes him more than the market model). draft_day = his chance of round 1 and of rounds 1-3; p_day1 / p_d…
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | number | – | Filter to one draft class (e.g. 2027, 2028). |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| format | string | – | League format: sf = superflex / 2QB, 1qb = single QB. Switches every value and rank. Default sf. |
| limit | number | – | Max players (default 50, max 400). |
| market_listed | boolean | – | true = only players on the market's devy list; false = only players beyond it. |
| min_college_seasons | number | – | Only players with at least this many college seasons with stats (this one included); 1 drops recruits with no stats yet. |
| offset | number | – | Skip this many rows after filtering and sorting, to page deeper (default 0). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter to one player (partial match). |
| position | string | – | Filter by position |
| school | string | – | Filter to one school (partial match), e.g. a team's whole devy room. |
| sort_by | string | – | composite (default), market (the value model's price), dynasty_value, hit_pct, p_day1, or career_vs_market (biggest career-over-market first). |
No output schema declared.
No examples provided.
get_draft_picks ~266
Get historical NFL draft picks with career outcomes. Includes round, pick, team, college, career approximate value (car_av), Pro Bowls, All-Pro selections, Hall of Fame status. Note: career columns (car_av, pro_bowls, etc.) are cumulative and are blank/low for recent draftees who are still active — they populate as careers progress. Use for draft analysis, career success by pick, team drafting history. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position |
| round | number | – | Filter by draft round |
| season | number | – | Draft year |
| team | string | – | Drafting team abbreviation |
No output schema declared.
No examples provided.
get_draft_prospect_data ~327
Get historical draft prospect profiles: school, draft slot, physical measurements, and scouting report text (strengths/weaknesses). ESPN's own grades and prospect ranks are not shown (third-party rankings are never shown raw). Coverage: draft classes 1967–2021 only (this ESPN/JackLich10 source is not updated for 2022+). For recent/2022+ classes use get_rookie_class or get_college_stats. Use for prospect evaluation, draft class comparisons, historical draft analysis. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | number | – | Filter to specific draft year |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| include_scouting | boolean | – | Include scouting report text from draft profiles (default false) |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position abbreviation (QB, RB, WR, TE, etc.) |
| school | string | – | Filter by college/school name |
| sort_by | string | – | Sort by: overall (actual draft pick, ascending) |
No output schema declared.
No examples provided.
get_dynasty_values ~355
Get StatHead's dynasty trade values and rankings: StatHead's blend of two dynasty markets (the geometric mean of FantasyCalc's value and KeepTradeCut's value calibrated to the same scale), shown in tens. Third-party values and ranks are inputs only; no field is a market's raw number or rank (position ranks are on StatHead value). Includes 1QB and SuperFlex values, position ranks, age, and stable ids (gsis_id, sleeper_id) for joining without name-string matching. Board depth is the market source's top ~500; a player absent from the board is a market judgment (valued below the top 500), not missing data. No TE-premium variant exists (the underlying market composites don't publish one) — for a TEP league, re-score get_projections (scoring tep0.5/tep1.0) and map the TE uplift through the value-vs-points curve. Use for dynasty trade evaluation, roster building, value comparisons. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| format | string | – | Format |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position |
No output schema declared.
No examples provided.
get_fantasy_pbp ~692
Week-level fantasy play log: returns per-player ordered scoring/touch events already reduced to fantasy shape (gsis-attributed), so consumers don't need the crosswalk or a client-side play reducer. One small call per week. Offensive events: {kind: pass|rush|rec|incomplete, yards, td, is_reception, is_target, two_point}. Committed-turnover events (attributed to the offensive player, not the defense): {kind: int_thrown (passer) | fumble_lost (ball carrier), turnover: 1}. Return events: {kind: kr|pr, yards, td} (kickoff/punt returns, attributed to the returner). Kicker events: {kind: fg|xp, distance, result}. Team-defense events (keyed by team = the defense): {kind: def, sack, interception, fumble_recovered, def_td, safety} plus a points_allowed summary per team-game. Per-defender IDP events (opt-in via idp=true; each credited defender's gsis): {kind: tackle (tackle_type solo|assist) | tfl | sack (sack=1 or 0.5 for half) | qb_hit | int | pd | ff | fr | def_td}. Every event carries game_id + play_id (traceable back to the get_play_by_play source row; note one play can fan out to multiple events, so play_id is not unique here) and game_date + time_of_day for chronological ordering. Filter to a roster with player_ids. Use output_format=jsonl for extraction. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| game_id | string | – | Filter to a single game (canonical nflverse game_id) |
| idp | boolean | – | Include per-defender IDP events (tackles, sacks, TFL, QB hits, INTs, passes defended, forced fumbles, recoveries, def TDs), each keyed to the defender's gsis (default false). Filter to a roster with… |
| limit | number | – | Max events (default 5000 — covers a full week; max 80000. A whole season is ~62k offense events; with idp=true it's much larger, so page by week). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_ids | string | – | Comma-separated gsis ids — emit only events for these players (offensive/kicker). Team-defense events are emitted for the teams these players are on if team_defense is true. |
| season | number | yes | NFL season year |
| team | string | – | Filter to one team or a comma-separated list (matches the player's offensive team; for DST, the defending team). |
| team_defense | boolean | – | Include team-defense events + points_allowed (default true) |
| week | number | – | Filter to a single week (recommended — keeps the call small) |
No output schema declared.
No examples provided.
get_fantasy_rankings ~314
Get StatHead's redraft rankings: each player ordered by the average of two StatHead ranks — StatHead ADP (StatHead's blend of the draft markets, which include the FantasyPros expert consensus, Sleeper and FantasyFootballCalculator) and StatHead's own season projection (PPR points above a 12-team replacement level: QB13/RB30/WR42/TE13; within a position, plain projected points). Pass position for a positional board. Third-party rankings are inputs only; no expert or market rank is shown. Columns: rank (StatHead), pos_rank, adp_rank and proj_rank (the two StatHead ranks behind it), proj_pts, adp. Use for draft strategy and value picks (proj_rank far ahead of adp_rank = the projection likes him more than the market). See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Positional board (QB/RB/WR/TE); default the overall board |
No output schema declared.
No examples provided.
get_ftn_charting ~215
Get FTN play-level charting data (2022+). Includes play-action, RPO, screen pass, motion, blitzers, pass rushers, drops, contested catches, QB pocket movement. Use for scheme analysis, play-calling tendencies, process-over-results evaluation. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| game_id | string | – | Filter by game ID |
| limit | number | – | Max rows (default 100) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| season | number | yes | NFL season year (2022+) |
| week | number | – | Filter by week |
No output schema declared.
No examples provided.
get_games ~280
Get NFL game results and schedules. Includes the canonical nflverse game_id (e.g. 2024_04_BUF_BAL, handles neutral-site/relocated games correctly), scheduled kickoff (gameday = date, weekday, gametime = kickoff in US Eastern HH:MM), home/away/week, scores, spreads, totals, weather, surface. Use for team records, point totals, home/away splits, deriving day/time windows, bye weeks (a team absent from a week's games is on bye), or to enumerate game_ids to feed get_play_by_play. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| season | number | – | Filter to specific season |
| team | string | – | Filter to games involving this team (abbreviation like KC, SF, BUF) |
| week | number | – | Filter to specific week |
No output schema declared.
No examples provided.
get_hs_prospects ~462
StatHead's high-school devy board: QB / RB / WR / TE / ATH recruits in classes not yet in college, ranked ACROSS positions by NFL fantasy outlook. hit_pct = chance (percent) of at least one fantasy-starter season in his first four NFL seasons (6+ games above replacement PPR PPG for a 12-team league in the chosen format); the rank weighs it by what a hit is worth at his position; p_drafted = chance he is drafted at a skill position. Calibrated on every high-school skill recruit in the 2007-2016 classes. The model's input is the recruiting composite rating, which is never shown; held out by class, nothing beat it (size, sub-position, committed program), so within a position the order is the recruiting services' and this tool has no position rank or position filter. Across a whole class it orders NFL outcomes as well as the raw rating, not better; it adds the cross-position, per-format scale (superflex lifts QBs). class_rank = rank within his class, across positions. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| format | string | – | League format: sf = superflex / 2QB (default), 1qb = single QB. |
| limit | number | – | Max players (default 50, max 400). |
| offset | number | – | Skip this many rows, to page deeper (default 0). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by name (partial match). |
| recruit_class | number | – | One high-school class (e.g. 2027). |
| school | string | – | Filter by high school or committed college (partial match). |
| state | string | – | Filter by home state (e.g. TX). |
No output schema declared.
No examples provided.
get_injuries ~301
Get weekly NFL injury reports (nflverse, 2009+). Per player-week: gsis_id (joinable to get_play_by_play / get_player_crosswalk), primary + secondary injury, practice participation (primary/secondary injury + practice_status), and final game report_status (Out/Doubtful/Questionable). Use for injury impact analysis, weekly availability, and attaching injury status to a roster. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50, max 500) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_ids | string | – | Comma-separated gsis ids — attach injury status to a specific roster in one call |
| player_name | string | – | Filter by player name |
| season | number | yes | NFL season year (2009+) |
| status | string | – | Filter by final game status: Out, Doubtful, Questionable |
| team | string | – | Filter by team |
| week | number | – | Filter by week |
No output schema declared.
No examples provided.
get_matchups ~1,556
Weekly strength of matchup by offensive fantasy position (QB/RB/WR/TE) for 2026: what each defense has ALLOWED per game to a position this season, ranked 1-32 (1 = most allowed = softest matchup for the offense), laid over the schedule so every team's upcoming opponent reads as a matchup, in your scoring. Every table also carries OVER EXPECTED (oe): points or a metric allowed per game minus what the offenses faced produce in their other games this season (leave-one-out), i.e. the schedule-adjusted ledger — a defense that only looks soft because it met Detroit's tight ends has a high raw rank and an oe near zero. Views. WEEK (default; week defaults to the current one; position and team optional): one row per team and position with the opponent, the opponent's points allowed per game to that position (oppFPA), its rank, % vs league average, its over-expected (oppOE) and the StatHead model factor the weekly projections actually apply for that opponent (prior season blended in, shrunk toward 1) with its own rank, plus a lean (soft/tough = top/bottom quarter). DEFENSES (view=defenses): the defense-vs-position table — points allowed, rank, over expected, last 3 games, last season, model factor, next game; without position all four positions side by side. ROS (view=ros): strength of REST OF SCHEDULE per team — the mean of what the remaining opponents allow to the position (rosFPA, rank 1 = softest rest of schedule), its over-expected, the mean model factor, fantasy-playoff weeks 15-17 on their own and the bye; without position all four positions side by side. METRICS (view=metrics, position required): points allowed split into component metrics where the position has the volume — QB passPts/passAtt/passYds/passTD/int and rushPts/carries/rushYds/rushTD; RB rushPts/carries/rushYds/rushTD/ypc and recPts/targets/rec/recYds/recTD; WR and TE recPts/targets/rec/recYds/recTD/ypr — each per game with rank, over expected and oe rank; pass metric for one metric's full table. Pass me…
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| from_week | number | – | Schedule view: first week shown. Default: the current week. Pass 1 to include the weeks already played (rows marked final). |
| limit | number | – | Max rows. Defaults: 64 (week), 32 (defenses, ros, metrics), 80 (schedule). |
| metric | string | – | Read one component metric instead of fantasy points (week, schedule, defenses and metrics views; needs position or player_name). QB: passPts, passAtt, passYds, passTD, int, rushPts, carries, rushYds,… |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | A QB/RB/WR/TE's name: returns his team's matchup strip at his position from the current week on (schedule view). Resolved through the weekly projections feed; add team or position if two players shar… |
| position | string | – | Filter to one offensive position. Required for the metrics view; selects the single-position table in the defenses and ros views (without it they show all four positions side by side). |
| scoring | string | – | Scoring for points allowed, over expected, ranks and league average. tep0.5/tep1.0 add a TE-premium bonus per reception allowed to TEs. Default ppr. Ignored when metric is set. |
| sort_by | string | – | Sort column (descending for numbers; ascending for rank columns). Defaults: week view oppFPA (or oppMetric); defenses fpa; ros rosFPA; metrics the metric or pg; all-position tables team; schedule vie… |
| team | string | – | Team abbreviation (e.g. LV). With week: that team's row(s) for the week. Without week: that team's upcoming matchup strip (schedule view). In defenses/metrics/ros views: filter to that team. |
| view | string | – | Force a view. Default: schedule when player_name, or team without week, is given; otherwise week. |
| week | number | – | NFL week (1-18) for the week view. Default: the current week (the first week whose games are not all final). |
| weeks_ahead | number | – | Schedule view: how many weeks from from_week to show. Default: the rest of the season. |
No output schema declared.
No examples provided.
get_metadata ~77
Describe this server's capabilities: available tools, data sources, per-source season coverage, and valid enum values (positions, scoring formats, league sizes, ADP sources). Call this FIRST to scope a question correctly — it tells you what seasons/sources/formats are supported so you don't have to probe by trial and error. Takes no arguments.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_model_docs ~351
How StatHead's models work and what drives them: a methodology overview (scored-player VOR hit/bust model, season projection pipeline, dynasty value, share models), the hit/bust thresholds and share-model cross-validation fit, and the TOP FEATURE IMPORTANCE per position (each feature's category, weight, and the direction of its relationship to the projection). Use to understand or explain the model. For one player's feature breakdown use get_player_features. topic=devy: the devy (college) models instead (validation, calibration, feature importance, backtest, data checks). Coverage: 2026. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Limit the feature-importance section to one position (QB, RB, WR, TE). |
| topic | string | – | nfl (default): the NFL projection and hit/bust models. devy: the devy (college) models behind get_devy_rankings and get_hs_prospects: career-model held-out accuracy vs baselines, competition calibrat… |
No output schema declared.
No examples provided.
get_next_gen_stats ~264
Get NFL Next Gen Stats — advanced tracking data powered by AWS. Passing: time to throw, air yards, aggressiveness, completion probability (CPOE). Receiving: separation, cushion, YAC above expectation, target share. Rushing: efficiency, rush yards over expected (RYOE), time to LOS, stacked box rate. Use for elite efficiency analysis beyond box score stats. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 40) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| season | number | yes | NFL season year (2016+) |
| stat_type | string | yes | Type of NGS data |
| team | string | – | Filter by team abbreviation |
| week | number | – | Filter by week (omit for all weeks) |
No output schema declared.
No examples provided.
get_play_by_play ~1,089
Get play-by-play data with EPA, WPA, win probability, air yards, YAC, and stable player IDs (passer/rusher/receiver_player_id = nflverse gsis_id, joinable to get_player_crosswalk). Default view is lean; pass `fields` to project any of these slim columns — including kicker/defense/special-teams columns for K & DST fantasy scoring: kicker_player_id, kicker_player_name, kick_distance, extra_point_result; sack, interception, fumble, fumble_lost, fumble_recovery_1_team, safety; td_player_id, td_team, return_touchdown (separates defensive/ST TDs from offensive); two_point_attempt, two_point_conv_result; and kick/punt return columns: return_yards, return_team, kickoff_returner_player_id, kickoff_returner_player_name, punt_returner_player_id, punt_returner_player_name, fair_catch (note: yards_gained is 0 on return plays — use return_yards); committed-turnover + recovery attribution: interception (+ passer_player_id = who threw it), fumble_lost (+ fumbled_1_player_id/_name/fumbled_1_team = who lost it, fumble_recovery_1_player_id/_name = who recovered, forced_fumble_player_1/2_player_id = who forced it); per-defender IDP attribution (project via fields): solo_tackle_1/2_player_id, assist_tackle_1..4_player_id, tackle_for_loss_1/2_player_id, sack_player_id, half_sack_1/2_player_id, qb_hit_1/2_player_id, interception_player_id, pass_defense_1/2_player_id (all gsis, crosswalkable; defensive/ST TD scorer is td_player_id with td_team=defteam); and real (wall-clock) time: game_date, start_time (kickoff), time_of_day (UTC time the play was run — vs the game-clock `time` field; note nflverse populates it for most recent-season plays but it can be sparse/older-season gaps). Use for situational analysis (red zone, 3rd down, 2-minute drill), play type breakdowns, EPA-based efficiency, scoring K/DST, or pulling a complete game with game_id. WARNING: Large dataset — always filter by game_id, player, team, or situation. To pull an ENTIRE WEEK set limit ~3000 (a week is ~2400 plays) with…
| Name | Type | Req | Description |
|---|---|---|---|
| down | number | – | Filter by down (1-4) |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| game_id | string | – | Filter to a single game by its canonical nflverse game_id (e.g. 2024_04_BUF_BAL). Returns the complete game (~130-170 plays). Get valid ids from get_games. |
| limit | number | – | Max rows (default 50, max 60000). Set ~3000 for a full week, ~50000 for a whole season. For large pulls use output_format=jsonl/csv (+ fields) to keep the payload compact; offset still works for chun… |
| offset | number | – | Skip this many matched rows before returning (cursor pagination). The result header reports the next offset when more rows remain. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| play_type | string | – | Filter: pass, run, punt, kickoff, field_goal |
| player_ids | string | – | Comma-separated stable gsis ids (e.g. 00-0033077,00-0037247). Returns only plays where one of these is the passer, rusher, receiver, kicker, kickoff/punt returner, or TD scorer — the cheap way to bul… |
| player_name | string | – | Filter to plays involving this player (passer, rusher, or receiver). For multiple players use player_ids. |
| red_zone | boolean | – | If true, only plays inside the 20 |
| season | number | yes | NFL season year |
| team | string | – | Filter by team on offense (posteam). Accepts a single team (KC) or a comma-separated list (KC,SF,BUF). |
| week | number | – | Filter by week |
No output schema declared.
No examples provided.
get_player_crosswalk ~431
Player ID crosswalk: maps the stable nflverse gsis_id (the *_player_id in get_play_by_play) to a canonical full name and cross-source IDs (pfr_id, sleeper_id, espn_id, pff_id, yahoo_id, sportradar_id, rotowire_id, fantasy_data_id, esb_id), plus ready-to-use headshot URLs: espn_headshot (ESPN CDN, when espn_id is known) and headshot (best available — falls back to the roster headshot_url for fresh/in-season rookies ESPN hasn't indexed yet). espn_id and sleeper_id are backfilled from the season rosters when the static crosswalk lags. Use to resolve the abbreviated PBP names (e.g. J.Allen) to a real player, to join PBP against name-keyed endpoints, and to surface player photos in apps. Filter by player_id (gsis), player_name, position, or active season. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 50, max 200) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_id | string | – | Look up by stable id — accepts gsis_id (00-00..., matches PBP *_player_id), pfr_id, sleeper_id, or espn_id |
| player_name | string | – | Filter by player name (fuzzy, matches any known alias) |
| position | string | – | Filter by position (e.g. QB, RB, WR, TE) |
| season | number | – | Filter to players active in this season (earliest_season <= season <= latest_season) |
No output schema declared.
No examples provided.
get_player_features ~310
Feature evaluation for a SCORED player, broken out PER MODEL that scores them: Hit/Bust (VOR), Season Projection (PPG), Rookie Career/Prospect (rookies), Usage Share (RB/WR/TE), and a market-derived Dynasty Value note. Each model shows its prediction plus the top feature 'drivers' — where the player lands vs the positional cohort FOR THAT MODEL (percentile band) and which way the feature pushes that model's prediction. Proprietary/paid-sourced features are shown only as a qualitative magnitude band + direction (never a raw value or source). Use to explain WHY a player is scored the way they are. Coverage: 2026 scored skill players (QB/RB/WR/TE). See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max feature drivers to show per model (default 8). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | yes | Player to explain (case-insensitive partial match). |
| position | string | – | Disambiguate by position if the name matches several. |
No output schema declared.
No examples provided.
get_player_metrics ~390
Get a comprehensive analytics profile for a player. Combines weekly stats, play-by-play, NGS tracking data, PFR advanced stats, FTN charting, and snap counts into a single metrics object. QB metrics: comp%, Y/A, AY/A, passer rating, EPA/dropback, CPOE, pressure rate, time to throw, play-action rate, scramble rate, designed rush rate. Skill (RB/WR/TE) metrics: YPC, catch rate, YPRR, target share, WOPR, separation, YAC above expected, RYOE, snap%, opportunity rate, drop rate. Use for in-depth player evaluation, cross-position comparisons, efficiency analysis. Returns one row per player matching the query. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max players to return (default 20) |
| min_games | number | – | Minimum games played (default 4) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Player name to search for (case-insensitive partial match) |
| position | string | – | Filter by position |
| season | number | yes | NFL season year (2016+ for NGS, 2022+ for FTN) |
| sort_by | string | – | Sort by any metric column (descending). Common: fantasy_points_ppr, total_epa, yprr, epa_per_dropback |
| team | string | – | Filter by team abbreviation |
No output schema declared.
No examples provided.
get_player_season_stats ~568
Get aggregated season totals for NFL players — offence, defence (IDP), kicking and punting. Returns rushing, passing, receiving, fantasy stats and 2-point conversions, and via `fields` every other counting column nflverse carries: defensive (def_tackles_solo, def_tackle_assists, def_tackles_for_loss, def_sacks, def_qb_hits, def_pass_defended, def_interceptions, def_fumbles_forced, def_tds, def_safeties), punting (pt_att, pt_yards, pt_net_yards, pt_inside_20, pt_long, pt_touchback) and kicking (fg_made/fg_att by distance band, pat_made/pat_att). Filter by position: QB/RB/WR/TE/K/P/FB, the nflverse defensive codes (DE, DT, LB, CB, SAF), or the IDP buckets DL (DE+DT+NT), LB and DB (CB+SAF+FS+SS). Sort by any stat column. Punting columns need a season pulled from nflverse's unified table — 2025 onward locally, any season when fetched live. Use this for player performance, fantasy points, rankings, comparisons. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows to return (default 30, max 100) |
| min_games | number | – | Optional: minimum games played |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Optional: filter to players whose name contains this string (case-insensitive) |
| position | string | – | Filter by position. Offence: QB, RB, WR, TE, FB. Specialists: K, P. Defence: the nflverse codes DE, DT, LB, CB, SAF, or the IDP buckets DL (= DE+DT+NT), LB, DB (= CB+SAF+FS+SS). ALL for everything. |
| season | number | yes | NFL season year. Coverage: 1999 to the latest completed season (nflverse). |
| sort_by | string | – | Column to sort by (descending). Common: fantasy_points_ppr, rushing_yards, receiving_yards, passing_yards, receptions, targets, carries, rushing_tds, receiving_tds, passing_tds |
No output schema declared.
No examples provided.
get_player_weekly_stats ~579
Get week-by-week stats — game logs — for one player or for a whole position in a season. Pass player_name for one player's log, or omit it and pass position (and optionally week_start/week_end or team) for every player at that position, which is how you get a weekly board. Covers offence, defence (IDP) and specialists: with `fields` you can project any raw nflverse weekly column, including def_tackles_solo, def_tackle_assists, def_sacks, def_qb_hits, def_pass_defended, def_interceptions, def_tackles_for_loss, def_tds, punting (pt_att, pt_yards, pt_net_yards, pt_inside_20) and returns (punt_returns, punt_return_yards, kickoff_returns, kickoff_return_yards). Positions accept QB/RB/WR/TE/FB/K/P, the nflverse defensive codes (DE, DT, LB, CB, SAF) and the IDP buckets DL/LB/DB. A whole position-week is a few hundred rows, so narrow with week_start/week_end or team, and raise limit deliberately. Use for game logs, weekly trends, consistency and boom/bust analysis, and week-by-week IDP scoring. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 100, max 1000). Only applies to multi-player queries. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Player name (case-insensitive partial match). Omit to return every player matching the other filters. |
| position | string | – | Filter by position. Offence: QB, RB, WR, TE, FB. Specialists: K, P. Defence: DE, DT, LB, CB, SAF, or the IDP buckets DL (= DE+DT+NT), LB, DB (= CB+SAF+FS+SS). Required when player_name is omitted. |
| season | number | yes | NFL season year |
| sort_by | string | – | Column to sort by, descending — any weekly column (e.g. def_sacks). Default: week, then fantasy_points_ppr. |
| team | string | – | Filter to one team abbreviation (e.g. DAL). |
| week_end | number | – | End week (inclusive) |
| week_start | number | – | Start week (inclusive) |
No output schema declared.
No examples provided.
get_projections ~1,545
StatHead's first-party season fantasy projections: in-house projected fantasy points-per-game for the upcoming season — veterans via a prior-year-actual / 2-year-average / age-curve blend, rookies via the rookie career model. This is the season-level companion to get_prospect_outcomes (rookies) and get_dynasty_values (long-horizon value), and the answer to "what does StatHead project for a veteran." Coverage: 2026, QB/RB/WR/TE plus kickers (position K), team defenses (position DST) and individual defensive players (positions DL, LB, DB — or IDP for all three), each projected separately with components. Punt/kick return components ride on every row that has a return role, whatever the position. IMPORTANT for ranking: ppg is projected points divided by projected games played, so it is a rate CONDITIONAL ON PLAYING, not a season expectation. A backup projected for one game divides a one-game line by one and lands beside the best starters in the league. Every row therefore carries `games` (the denominator) and `projPts` (the season total). To rank players against each other — a draft board, a lineup, a roster sort — use projPts, or pass min_games; use ppg only when reading one player's per-game rate. IN-SEASON rank on rosPts instead: projPts is a FULL-season total that still includes games already played, while rosPts covers only what is left, with rosPPG, rosGames and gamesRemaining alongside it. Responses flag any returned rows with games <= 4. RE-SCORING UNDER CUSTOM SCORING: ppg is a scalar priced under standard PPR. Every row also carries the projected season stat line it rolls up from — pass_att, pass_cmp, pass_yd, pass_td, pass_int, rush_att, rush_yd, rush_td, tgt, rec, rec_yd, rec_td — selectable via `fields`, and zeroed (not omitted) for categories a position doesn't accrue. Re-derive the total from those under your own scoring catalog; re-deriving standard PPR from them reproduces projPts to within a mean 0.07 pts/season. Kickers and team defenses DO carry…
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max players (default 50). |
| min_games | number | – | Only return players projected for at least this many games. Use it to drop the small-denominator backups whose ppg outranks real starters (e.g. min_games: 8). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter to one player. |
| position | string | – | Filter by position (QB, RB, WR, TE). |
| preset | string | – | Apply one of the site's "Quick Preset" tilts (all derived StatHead outputs). "vegas-weighted": regress 25% toward position mean. "consensus"/"consensus-ml": blend toward market consensus via internal… |
| scoring | string | – | Re-score ppg/projPts server-side from the projected component line. half/std subtract 0.5/1.0 per reception; tep0.5/tep1.0 ADD a TE-premium bonus per TE reception (exact, from the rec component, not… |
| sort_by | string | – | Sort column, descending. Default: projPts (season total), which is the right ranking for a draft board. In-season pass rosPts to rank on what is left. ppg is conditional on playing, so sorting by it… |
No output schema declared.
No examples provided.
get_prospect_outcomes ~399
StatHead's own prospect model: draft grade, tier, projected draft slot, and CALIBRATED boom/bust probabilities. IMPORTANT — boomProb/bustProb/outperfPctile are RELATIVE to the player's draft slot, not absolute fantasy outcomes. boomProb = P(the player OUTPERFORMS the model's draft-slot-informed PPG expectation for a profile like this); bustProb = P(underperforms it); outperfPctile = percentile of that outperformance vs slot. So a Day-3 pick with a high boomProb is likely to beat Day-3 expectations — NOT likely to be an absolute fantasy star. For absolute expected value use grade / tier / projPick. Use these instead of multiplying your own marginal factors into a "P(Hit)" — that is over-confident because factors are correlated (see get_metadata analytic caveats). Boom/bust probabilities cover the 2026 class; grades cover 2026 and 2027. Probabilities are model estimates, not certainties — treat as calibrated guidance.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | – | – | Draft class. Default 2026. |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max prospects (default 60) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter to one prospect |
| position | string | – | Filter by position |
| sort_by | string | – | Sort column. grade/boomProb/outperfPctile descending; projPick/projRound/bustProb ascending. Default: grade. |
| tier | string | – | Filter by tier label (substring match) |
No output schema declared.
No examples provided.
get_qbr ~304
Get ESPN QBR (Total Quarterback Rating) — a comprehensive QB efficiency metric from ESPN. Season-level or week-by-week data from 2006 onward. Includes QBR total, points added, EPA breakdown (pass, run, expected sack, penalty), and raw QBR. Use for QB evaluation, comparing efficiency across eras, weekly performance tracking. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| level | string | – | Season totals or week-by-week |
| limit | number | – | Max rows (default 32) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name (case-insensitive partial match) |
| qualified | boolean | – | Only show qualified QBs (default true) |
| season | number | yes | Filter to specific season (2006+) |
| sort_by | string | – | Sort by column (descending). Common: qbr_total, pts_added, epa_total |
| team | string | – | Filter by team abbreviation |
| week | number | – | Filter by week (weekly level only) |
No output schema declared.
No examples provided.
get_rookie_class ~358
One-call rookie-class join: NFL draft picks for a draft year + combine testing + that player's rookie-season (same year) production — so you don't have to join draft, combine, and stats by hand. Skill positions (QB/RB/WR/TE) by default. Each row carries pfr_id for joining to other tools. Great for prospect/dynasty evaluation and hit-rate analysis. Anti-pattern: do not multiply marginal factors (athleticism × age × draft slot) into a "P(Hit)" — the factors are correlated and the product is over-confident; use as ordinal ranking or compare similar-player (joint) comps instead. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_year | number | yes | Draft year (= rookie NFL season). Coverage from ~2000. |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max players (default 60) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter to one player |
| position | string | – | Filter to a position |
| round | number | – | Filter to a draft round |
| sort_by | string | – | Sort column. Lower-is-better fields (pick, round, forty) sort ascending; production fields (rookie_ppr, rookie_rush_yds, …) descending. Default: pick. |
No output schema declared.
No examples provided.
get_rookie_snap_share ~356
Rookie snap-share RAMP tracker — weekly offensive snap % for a season's rookie class, with a ramp signal (last-3-week avg − first-3-week avg) that surfaces mid-season role expansion a static depth chart misses (the classic late-bloomer pattern, e.g. a rookie RB climbing from 30% to 70% snaps). Identifies rookies from the roster (years_exp 0 / rookie or entry year = season). For an in-progress season this is a live leading indicator; for a completed season it's the role-trajectory record. Sort by ramp (biggest risers), latest, peak, or avg. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rookies (default 40) |
| min_weeks | number | – | Minimum weeks with snap data to include (default 4) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Filter by position (QB, RB, WR, TE) |
| season | number | – | Season (2012+). Defaults to the most recent completed season; pass the in-progress season to track live. |
| sort_by | string | – | ramp (default, biggest risers) | latest | peak | avg |
| team | string | – | Filter by team abbreviation |
No output schema declared.
No examples provided.
get_rosters ~230
Get NFL team rosters with player details: position, status, height, weight, college, birth date, years of experience, draft info, headshot URL. Use for player biographical info, roster composition, experience levels. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 53) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| player_name | string | – | Filter by player name |
| position | string | – | Filter by position |
| season | number | yes | NFL season year |
| status | string | – | Filter by status (e.g., ACT, RES, PUP) |
| team | string | – | Filter by team abbreviation |
No output schema declared.
No examples provided.
get_schedule_strength ~588
Strength of schedule per team, per position, for every game of 2026 — how easy or hard each team's slate is for QB/RB/WR/TE/K/DST. A factor above 1 means an easier schedule (that position's opponents concede more than league average); below 1 means harder. Season factors are the mean over a team's games; per-game factors name the opponent and venue. CRITICAL, read before using: these factors are ALREADY APPLIED to StatHead's K and DST projections (their season lines are built alongside these numbers), so re-applying them there double-counts. They are deliberately NOT applied to QB/RB/WR/TE — the weekly matchup multipliers for skill players are normalized to mean 1, so they redistribute points between weeks without moving a season total, which the projection pool owns. If you want the season-level schedule effect for skill players, apply it yourself from here. DL/LB/DB follow the skill-position rule — published, normalized out of the weekly IDP strip, never applied to the season line — and are deliberately close to 1 because offense-concedes-to-IDP barely repeats year over year (r = +0.25 DL, +0.24 LB, +0.08 DB). Spread across 2026: ~8% DST, ~6% QB, ~5.5% WR, ~4.5% TE, ~3.3% K, ~3.1% RB, ~2.5% DL, ~1.3% LB, ~0.4% DB between the easiest and hardest schedule. Derived from the same defense-vs-position table the weekly projections use, so published and applied numbers cannot drift. These are model multipliers, not points allowed: for what each defense has actually conceded per game to QB/RB/WR/TE this season, ranked 1-32 in your scoring and laid over upcoming weeks, use get_matchups. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max rows (default 40). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| position | string | – | Filter to one position. |
| sort_by | string | – | Sort column, descending. Default: the requested position, else team. |
| team | string | – | Filter to one team abbreviation (e.g. KC). |
| week | number | – | Return per-game rows for this week instead of season factors. |
No output schema declared.
No examples provided.
get_sleeper_draft ~242
Get Sleeper draft data. Pass draft_id for that draft's full pick board (round, pick, team, player, position). Or pass username (+ season) to list that user's drafts and their ids. Use for draft recaps, keeper/rookie draft analysis. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_id | string | – | Sleeper draft id — returns the pick board. |
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| limit | number | – | Max picks/drafts (default 200). |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| season | number | – | Season for username lookup (default 2026). |
| username | string | – | Sleeper username — lists the user's drafts (use instead of draft_id). |
No output schema declared.
No examples provided.
get_sleeper_league ~346
Open a Sleeper league: format/settings, standings (W-L, points for/against, each manager's owner_id), and every team's roster with starters (by lineup slot) and bench, resolved to player names. Identify the league by league_id, OR by username + name (e.g. "the Football Warriors league") — no id needed. Each manager's owner_id is emitted so you can walk to get_sleeper_user_leagues / get_sleeper_user_snooper for that manager. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| league_id | string | – | Sleeper league id (from get_sleeper_user_leagues or the league URL). |
| name | string | – | League name to match (substring); requires username. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| rosters | boolean | – | Include full rosters (default true). Set false for standings + format only. |
| season | number | – | Season for username+name lookup (default 2026). |
| team | string | – | Filter to one team by owner display name or team name (substring match). |
| username | string | – | Alternative to league_id: with name, finds the league among this user's leagues. |
No output schema declared.
No examples provided.
get_sleeper_league_users ~268
List the managers in a Sleeper league — display name, team name, owner_id, roster_id, and record — without pulling full rosters (a cheap hop). Identify the league by league_id, OR username + name. Use each manager's owner_id (or display_name + this league_id) to walk to get_sleeper_user_leagues / get_sleeper_user_snooper. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored. |
| league_id | string | – | Sleeper league id. |
| name | string | – | League name to match (substring); requires username. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| season | number | – | Season for username+name lookup (default 2026). |
| username | string | – | Alternative to league_id: with name, finds the league among this user's leagues. |
No output schema declared.
No examples provided.
How do I install the io.github.dachhack/stathead-mcp server?
io.github.dachhack/stathead-mcp runs locally as an npm package, launched with npx -y stathead-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · stathead-mcp
claude mcp add dachhack-stathead-mcp -- npx -y stathead-mcp
What is the io.github.dachhack/stathead-mcp server?
io.github.dachhack/stathead-mcp is listed in the public MCP registry as io.github.dachhack/stathead-mcp. Fantasy football analytics: stats, dynasty, projections, prospects, Sleeper leagues, Excel I/O. This page covers its npm package (stathead-mcp).
Is the io.github.dachhack/stathead-mcp server safe to use?
io.github.dachhack/stathead-mcp scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.dachhack/stathead-mcp server expose?
io.github.dachhack/stathead-mcp exposes 55 tools: get_metadata, get_player_season_stats, get_player_weekly_stats, get_games, get_snap_counts, and 50 more. Their descriptions and schemas cost roughly 23,260 tokens of context every time the server is loaded.
Is the io.github.dachhack/stathead-mcp server still maintained?
io.github.dachhack/stathead-mcp is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.dachhack/stathead-mcp server under?
io.github.dachhack/stathead-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.