Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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

0 this week 90 Trust /100
Trust breakdown (7 categories)

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
Install

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

# add to Claude Code
claude mcp add dachhack-stathead-mcp -- npx -y stathead-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "dachhack-stathead-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "stathead-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dachhack-stathead-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "stathead-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dachhack-stathead-mcp -- npx -y stathead-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dachhack-stathead-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "stathead-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dachhack-stathead-mcp --command npx --arg -y --arg stathead-mcp
# ~/.hermes/config.yaml
mcp_servers:
  dachhack-stathead-mcp:
    command: "npx"
    args: ["-y", "stathead-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dachhack-stathead-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "stathead-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dachhack-stathead-mcp -t stdio -c npx -a -y stathead-mcp
// mcp.json
{
  "mcpServers": {
    "dachhack-stathead-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "stathead-mcp"
      ]
    }
  }
}
Changelog

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
Diagnostics

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 →

MCP tools · 51 exposed · ~18,336 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
kindstringWhich 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.

NameTypeReqDescription
draft_yearDraft class for rookie_rankings (2026 or 2027). Default 2026.
kindstringyesWhich 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…
limitnumberMax rows to write (default 300).
pathstringOutput file path or directory. If a directory (or omitted), a dated filename is generated there. Default dir: $STATHEAD_DIR or the current working directory.
positionstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter to a position; adds adp_pos_rank (positional draft rank).
scoringstringScoring format (ffc raw source only; consensus is PPR/1QB).
seasonnumberSeason year. Defaults to the current draft season. ffc coverage: ~2018–present (older seasons may be unavailable); espn: recent seasons only.
sourcestringData source. 'consensus' (default) = freshness/confidence-weighted blend of all current feeds. 'ffc' / 'espn' = a single raw feed.
teamsLeague 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax players (default 60)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter to a position
scoringstringScoring format. Default ppr.
seasonnumberyesSeason (FFC ADP ~2018–present)
sort_bystringSort column. value/ppr descending; adp/adp_pos_rank/finish_pos_rank ascending. Default: value (biggest values first).
teamsLeague 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 40)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
seasonnumberyesNFL season year. Coverage: 2018–present.
season_totalsbooleanReturn one row per player of PFR season totals (default true). Set false for per-game rows.
stat_typestringyesType 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.

NameTypeReqDescription
coachstringHead coach name (case-insensitive partial match).
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringShow this player's usage under the resolved coach; or, alone, the player's coaching history.
seasonnumberSeason — with team, resolves that team's head coach (also scopes the reunion lookup).
teamstringTeam 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 30)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
seasonnumberFilter to specific college season (2004+)
sort_bystringSort 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax player-seasons (default 100)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter to one player. Omit for a class/cohort query (then season and/or school is required).
positionstringFilter by position abbreviation (e.g. RB, WR, QB)
schoolstringFilter by school name/abbreviation
seasonnumberCollege season. Required for cohort queries (when player_name is omitted).
sort_bystringStat 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 30)
max_seasonnumberLatest draft year to include
min_seasonnumberEarliest draft year to include
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position (QB, RB, WR, TE, etc.)
sort_bystringSort 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.

NameTypeReqDescription
active_onlybooleanOnly show active contracts (default true)
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 40)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position
sort_bystringSort by: value, apy, guaranteed, apy_cap_pct
teamstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 60)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position abbreviation (e.g., RB, WR, QB)
seasonnumberyesNFL season year
teamstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position
roundnumberFilter by draft round
seasonnumberDraft year
teamstringDrafting 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.

NameTypeReqDescription
draft_yearnumberFilter to specific draft year
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
include_scoutingbooleanInclude scouting report text from draft profiles (default false)
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position abbreviation (QB, RB, WR, TE, etc.)
schoolstringFilter by college/school name
sort_bystringSort 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
formatstringFormat
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
game_idstringFilter to a single game (canonical nflverse game_id)
idpbooleanInclude 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…
limitnumberMax 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_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_idsstringComma-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.
seasonnumberyesNFL season year
teamstringFilter to one team or a comma-separated list (matches the player's offensive team; for DST, the defending team).
team_defensebooleanInclude team-defense events + points_allowed (default true)
weeknumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
game_idstringFilter by game ID
limitnumberMax rows (default 100)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberyesNFL season year (2022+)
weeknumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberFilter to specific season
teamstringFilter to games involving this team (abbreviation like KC, SF, BUF)
weeknumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50, max 500)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_idsstringComma-separated gsis ids — attach injury status to a specific roster in one call
player_namestringFilter by player name
seasonnumberyesNFL season year (2009+)
statusstringFilter by final game status: Out, Doubtful, Questionable
teamstringFilter by team
weeknumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringLimit 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 40)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
seasonnumberyesNFL season year (2016+)
stat_typestringyesType of NGS data
teamstringFilter by team abbreviation
weeknumberFilter 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…

NameTypeReqDescription
downnumberFilter by down (1-4)
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
game_idstringFilter 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.
limitnumberMax 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…
offsetnumberSkip this many matched rows before returning (cursor pagination). The result header reports the next offset when more rows remain.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
play_typestringFilter: pass, run, punt, kickoff, field_goal
player_idsstringComma-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_namestringFilter to plays involving this player (passer, rusher, or receiver). For multiple players use player_ids.
red_zonebooleanIf true, only plays inside the 20
seasonnumberyesNFL season year
teamstringFilter by team on offense (posteam). Accepts a single team (KC) or a comma-separated list (KC,SF,BUF).
weeknumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50, max 200)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_idstringLook up by stable id — accepts gsis_id (00-00..., matches PBP *_player_id), pfr_id, sleeper_id, or espn_id
player_namestringFilter by player name (fuzzy, matches any known alias)
positionstringFilter by position (e.g. QB, RB, WR, TE)
seasonnumberFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax feature drivers to show per model (default 8).
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringyesPlayer to explain (case-insensitive partial match).
positionstringDisambiguate 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax players to return (default 20)
min_gamesnumberMinimum games played (default 4)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringPlayer name to search for (case-insensitive partial match)
positionstringFilter by position
seasonnumberyesNFL season year (2016+ for NGS, 2022+ for FTN)
sort_bystringSort by any metric column (descending). Common: fantasy_points_ppr, total_epa, yprr, epa_per_dropback
teamstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows to return (default 30, max 100)
min_gamesnumberOptional: minimum games played
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringOptional: filter to players whose name contains this string (case-insensitive)
positionstringFilter 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.
seasonnumberyesNFL season year. Coverage: 1999 to the latest completed season (nflverse).
sort_bystringColumn 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 100, max 1000). Only applies to multi-player queries.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringPlayer name (case-insensitive partial match). Omit to return every player matching the other filters.
positionstringFilter 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.
seasonnumberyesNFL season year
sort_bystringColumn to sort by, descending — any weekly column (e.g. def_sacks). Default: week, then fantasy_points_ppr.
teamstringFilter to one team abbreviation (e.g. DAL).
week_endnumberEnd week (inclusive)
week_startnumberStart 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…

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax players (default 50).
min_gamesnumberOnly 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_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter to one player.
positionstringFilter by position (QB, RB, WR, TE).
presetstringApply 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…
scoringstringRe-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_bystringSort 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.

NameTypeReqDescription
draft_yearDraft class. Default 2026.
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax prospects (default 60)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter to one prospect
positionstringFilter by position
sort_bystringSort column. grade/boomProb/outperfPctile descending; projPick/projRound/bustProb ascending. Default: grade.
tierstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
levelstringSeason totals or week-by-week
limitnumberMax rows (default 32)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name (case-insensitive partial match)
qualifiedbooleanOnly show qualified QBs (default true)
seasonnumberyesFilter to specific season (2006+)
sort_bystringSort by column (descending). Common: qbr_total, pts_added, epa_total
teamstringFilter by team abbreviation
weeknumberFilter 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.

NameTypeReqDescription
draft_yearnumberyesDraft year (= rookie NFL season). Coverage from ~2000.
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax players (default 60)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter to one player
positionstringFilter to a position
roundnumberFilter to a draft round
sort_bystringSort 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rookies (default 40)
min_weeksnumberMinimum weeks with snap data to include (default 4)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter by position (QB, RB, WR, TE)
seasonnumberSeason (2012+). Defaults to the most recent completed season; pass the in-progress season to track live.
sort_bystringramp (default, biggest risers) | latest | peak | avg
teamstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 53)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
player_namestringFilter by player name
positionstringFilter by position
seasonnumberyesNFL season year
statusstringFilter by status (e.g., ACT, RES, PUP)
teamstringFilter 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 40).
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter to one position.
sort_bystringSort column, descending. Default: the requested position, else team.
teamstringFilter to one team abbreviation (e.g. KC).
weeknumberReturn 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.

NameTypeReqDescription
draft_idstringSleeper draft id — returns the pick board.
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax picks/drafts (default 200).
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberSeason for username lookup (default 2026).
usernamestringSleeper 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringSleeper league id (from get_sleeper_user_leagues or the league URL).
namestringLeague name to match (substring); requires username.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
rostersbooleanInclude full rosters (default true). Set false for standings + format only.
seasonnumberSeason for username+name lookup (default 2026).
teamstringFilter to one team by owner display name or team name (substring match).
usernamestringAlternative 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringSleeper league id.
namestringLeague name to match (substring); requires username.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberSeason for username+name lookup (default 2026).
usernamestringAlternative 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringyesSleeper league id.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
startersbooleanInclude each team's starting lineup (default false).
weeknumberyesWeek 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
limitnumberMax rows (default 50)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
positionstringFilter by position
seasonnumberyesNFL season year
weeknumberWeek 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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringSleeper league id.
limitnumberMax transactions (default 40).
namestringLeague name to match (substring); requires username.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberSeason for username+name lookup (default 2026).
typestringFilter by transaction type.
usernamestringAlternative to league_id: with name, finds the league among this user's leagues.
weeknumberWeek (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.

NameTypeReqDescription
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
hoursnumberLookback window in hours (default 24)
limitnumberNumber of players (default 25)
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
typestringTrending 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.

NameTypeReqDescription
display_namestringManager's in-league display or team name; requires league_id.
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringAlternative to username: with display_name, resolves a manager to their user_id.
limitnumberMax league-season rows (default 60).
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonsnumberHow many recent seasons to sweep, ending this year (default 5, max 12).
usernamestringSleeper 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.

NameTypeReqDescription
display_namestringManager's in-league display or team name; requires league_id.
fieldsstringComma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
league_idstringAlternative to username: with display_name, resolves a manager seen in a league to their user_id.
output_formatstringOutput format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
seasonnumberNFL season (default 2026).
usernamestringSleeper username or user_id.

No output schema declared.

No examples provided.

Common questions

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.