io.github.dachhack/stathead-mcp
NPM · STATHEAD-MCP · SCANNED SEP 20
Fantasy football analytics: stats, dynasty, projections, prospects, Sleeper leagues, Excel I/O
Available components
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 7 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 18336 tokens (~359/item across 51 items; 51 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 Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 51 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
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
{
"mcpServers": {
"dachhack-stathead-mcp": {
"command": "npx",
"args": [
"-y",
"stathead-mcp"
]
}
}
} {
"servers": {
"dachhack-stathead-mcp": {
"command": "npx",
"args": [
"-y",
"stathead-mcp"
]
}
}
} codex mcp add dachhack-stathead-mcp -- npx -y stathead-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dachhack-stathead-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"stathead-mcp"
],
"enabled": true
}
}
} openclaw mcp add dachhack-stathead-mcp --command npx --arg -y --arg stathead-mcp
mcp_servers:
dachhack-stathead-mcp:
command: "npx"
args: ["-y", "stathead-mcp"] {
"McpServers": {
"dachhack-stathead-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"stathead-mcp"
]
}
}
} assistant mcp add dachhack-stathead-mcp -t stdio -c npx -a -y stathead-mcp
{
"mcpServers": {
"dachhack-stathead-mcp": {
"command": "npx",
"args": [
"-y",
"stathead-mcp"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −3
- Stability: pass → 0.80 functional
- 16 Sept 26 0
- Stability: 0.97 → pass security
- Security disclosure: unverified → fail ▼ functional
- 15 Sept 26 +1
- Security disclosure: fail → unverified ▼ functional
- 13 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 12 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Stability: 0.83 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Schema quality: 244 → 359 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 1.0.33 → 1.0.90 functional
- 10 Sept 26 −2
- Stability: pass → 0.80 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 20 Sept 2026 · Analysed npm/stathead-mcp@1.0.90
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/publish-mcp-now |
| Rekor log index | 2806886504 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:cde53b4a14063bf8829460a9cb95855d2ac726904627ce63dad139853d874de94469da6ca449b2f228c124986d603592ff72f2f0713cbc05fc923af8e |
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 ~379
Get current Average Draft Position. Default source 'consensus' is a reliable multi-source blend (FantasyPros expert-consensus rank + Sleeper draft ADP + FantasyFootballCalculator + ESPN), each weighted by freshness and confidence and stamped with an as_of date — no single stale or outlier feed can distort it. Per-source columns + a disagreement spread are returned alongside the blended ADP. For a single raw feed pass source 'ffc' or 'espn'. Use for draft value analysis and comparing ADP across platforms. 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). |
| scoring | string | – | Scoring format (ffc raw source only; consensus is PPR/1QB). |
| season | number | – | Season year. Defaults to the current draft season. ffc coverage: ~2018–present (older seasons may be unavailable); espn: recent seasons only. |
| source | string | – | Data source. 'consensus' (default) = freshness/confidence-weighted blend of all current feeds. 'ffc' / 'espn' = a single raw feed. |
| teams | – | – | League size, one of 8/10/12/14 (ffc raw source only). Default 12. |
No output schema declared.
No examples provided.
get_adp_with_results ~343
Join preseason ADP 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 FFC 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). FFC ADP coverage ~2018–present. 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 |
| scoring | string | – | Scoring format. Default ppr. |
| season | number | yes | Season (FFC ADP ~2018–present) |
| sort_by | string | – | Sort column. value/ppr descending; adp/adp_pos_rank/finish_pos_rank ascending. Default: value (biggest values first). |
| teams | – | – | League size. Default 12. |
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_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 ~329
Get ESPN draft prospect rankings and scouting profiles. Includes ESPN grade, position rank, overall rank, physical measurements, and scouting report text (strengths/weaknesses). 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: grade, ovr_rk, pos_rk, overall (descending for grade, ascending for ranks) |
No output schema declared.
No examples provided.
get_dynasty_values ~314
Get StatHead's blended dynasty trade values and rankings — a market-consensus valuation rescaled to a common scale (not a raw third-party feed). 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 ~231
Get Expert Consensus Rankings (ECR) and ADP data (source: FantasyPros via DynastyProcess). The page_type column marks which board a row came from: best-overall (cross-position) vs best-qb / best-rb / best-wr / best-te (positional boards) — filter on it to compare apples to apples. ECR reflects market consensus, not probability. Use for draft strategy, value picks (ECR vs ADP), expert opinion 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 by position |
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_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_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 ~229
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. 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). |
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 ~539
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. 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.
get_sleeper_matchups ~193
Get head-to-head matchups and scores for a Sleeper league in a given week. Pairs teams by matchup, with each team's points and (optionally) starters. 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 | yes | Sleeper league id. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| starters | boolean | – | Include each team's starting lineup (default false). |
| week | number | yes | Week number (1-18). |
No output schema declared.
No examples provided.
get_sleeper_projections ~213
Get Sleeper weekly or season-long player projections (projected stats + fantasy points by scoring format). Pass week for a single week, or omit week for Sleeper's season-total projection. Source: Sleeper's current projections endpoint. 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 by position |
| season | number | yes | NFL season year |
| week | number | – | Week number (omit for season-long totals summed across weeks 1–18) |
No output schema declared.
No examples provided.
get_sleeper_transactions ~302
Get a Sleeper league's transactions — trades, waiver claims, and free-agent adds/drops — with players and teams resolved to names. Pass a week, or omit it to sweep the season (weeks 1-18). Filter by type. Identify the league by league_id OR username + name. Use for trade history, waiver activity, and roster churn. 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. |
| limit | number | – | Max transactions (default 40). |
| 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). |
| type | string | – | Filter by transaction type. |
| username | string | – | Alternative to league_id: with name, finds the league among this user's leagues. |
| week | number | – | Week (1-18). Omit to sweep the whole season. |
No output schema declared.
No examples provided.
get_sleeper_trending ~189
Get trending player adds or drops from Sleeper fantasy platform. Shows which players are being most added/dropped across all Sleeper leagues. Use for waiver wire analysis and league-wide sentiment. 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. |
| hours | number | – | Lookback window in hours (default 24) |
| limit | number | – | Number of players (default 25) |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| type | string | – | Trending adds or drops |
No output schema declared.
No examples provided.
get_sleeper_user_history ~276
Multi-season Sleeper career history for a user: every league they fielded across recent seasons with record, points, regular-season finish, and championship/runner-up result, plus a career summary (total record, titles, leagues). Identify the user by username/user_id, OR display_name + league_id. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| display_name | string | – | Manager's in-league display or team name; requires league_id. |
| 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 | – | Alternative to username: with display_name, resolves a manager to their user_id. |
| limit | number | – | Max league-season 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. |
| seasons | number | – | How many recent seasons to sweep, ending this year (default 5, max 12). |
| username | string | – | Sleeper username or user_id. |
No output schema declared.
No examples provided.
get_sleeper_user_leagues ~319
Look up a Sleeper user's fantasy leagues. Identify the user by username/user_id, OR by display_name + league_id (to scout a manager you just saw in get_sleeper_league). Returns each league's id, name, size, status, and format (Dynasty/Keeper/Redraft, Superflex/2QB/1QB, Best Ball, IDP), plus the resolved user_id. This is the entry point of the Sleeper graph: take a league_id from here into get_sleeper_league / get_sleeper_matchups / get_sleeper_waiver_wire. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.
| Name | Type | Req | Description |
|---|---|---|---|
| display_name | string | – | Manager's in-league display or team name; requires league_id. |
| 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 | – | Alternative to username: with display_name, resolves a manager seen in a league to their user_id. |
| output_format | string | – | Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls. |
| season | number | – | NFL season (default 2026). |
| username | string | – | Sleeper username or user_id. |
No output schema declared.
No examples provided.
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 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 51 tools: get_metadata, get_player_season_stats, get_player_weekly_stats, get_games, get_snap_counts, and 46 more. Their descriptions and schemas cost roughly 18,336 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 20 September 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.