Stathead Mcp

io.github.dachhackPublished by GitHub account dachhackv1.0.126Updated Nov 6, 2026

Fantasy football analytics: stats, dynasty, projections, prospects, Sleeper leagues, Excel I/O

Overview

AI-generated overview

An MCP server that gives an assistant live NFL and fantasy football data: player stats, play-by-play, projections, dynasty values, ADP and Sleeper leagues.

What you can do
  • Discover sources, season coverage and valid enums before querying
  • Pull player season totals, weekly game logs, snap counts, injuries, advanced, Next Gen and QBR stats, rosters, contracts and depth charts
  • Read game schedules and results, play-by-play, FTN charting and historical trades
  • Get StatHead projections, rankings, ADP, dynasty and trade values, trending adds and rookie/draft/combine data
  • Explore Sleeper leagues: standings, rosters, matchups, transactions, drafts, waiver wire and manager history
  • Export, edit and re-import Excel workbooks so your own projections and rankings override the defaults
When to use it
Useful when you want an assistant to answer fantasy football questions with structured data instead of guesses: start/sit and waiver decisions, draft prep, dynasty trade evaluation, league scouting, or comparing projections against actual results.
Requirements
Runs locally over stdio, typically via npx with Node.js; no install or build needed. No account or API key is required. Optional environment variables: STATHEAD_DATA_BASE, VITE_KTC_PROXY, VITE_FC_PROXY and VITE_ODDS_API_KEY (the last enables betting-odds tools). Network access is needed to fetch data from upstream sources.
Before you install
Most tools fetch live data from third-party sources (nflverse, Sleeper, ESPN, FantasyFootballCalculator and others), and some upstreams are proprietary or paid, so check redistribution terms before republishing results. Excel export writes files to disk and import saves overrides under STATHEAD_DIR or ~/.stathead. A hosted remote connector records a usage counter of method and tool name only. Betting-odds tools need VITE_ODDS_API_KEY.

Installation

In SourceWeft

  1. Open Stathead Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

stathead-mcp

An MCP server that exposes StatHead's NFL fantasy-analytics toolset to Claude (Desktop / Code), Cursor, or any MCP client — so you can ask natural-language questions and get live, structured NFL data back.

It ships as a single self-contained bundle with no runtime dependencies and fetches all data on demand, so there's nothing to download or build — npx and go.

What you get

50 tools spanning player and team data, including:

AreaTools
Discoveryget_metadata — sources, season coverage, and valid enums (call this first to scope a question)
Playersseason stats, weekly/game logs, snap counts, injuries, advanced stats, Next Gen Stats, rosters, contracts, get_depth_charts (slot-aware team depth charts with roster status, StatHead depth order and view=changes for moves)
Games & playsschedules/results, play-by-play, participation, FTN charting
FantasyStatHead blended dynasty values, get_trade_values (StatHead values fitted to millions of completed Sleeper dynasty trades: as-of weekly values with 90% ranges, movers, liquidity, scoring re-pricing, 1/3/6/12-month forecasts, rookie-pick classes and history), get_projections (StatHead's in-house season PPG model), get_weekly_projections (per-week matchup-adjusted points, weeks 1–18), get_matchups (weekly strength of matchup: fantasy points each defense allows per game to QB/RB/WR/TE, ranked 1–32 in your scoring and over expected, by week, per player, rest of schedule, or split by metric such as TE receptions or QB rushing), ADP (FFC / ESPN / Sleeper), get_adp_with_results (ADP vs actual finish), trending adds/drops
Sleeper leaguesget_sleeper_user_leagues, get_sleeper_league (standings + rosters), get_sleeper_league_users (cheap manager list), get_sleeper_matchups, get_sleeper_transactions (trades/waivers/adds), get_sleeper_waiver_wire (free agents × trending × projections), get_sleeper_draft, get_sleeper_user_snooper (cross-league exposure), get_sleeper_user_history (multi-season records + titles) — a connected graph: a username lists leagues, a league name (or id) opens that league, and each manager's owner_id/display name walks back to their leagues, exposure, and history
Draft & collegeget_prospect_outcomes (calibrated boom/bust probabilities + grades), draft picks, get_rookie_class (draft+combine+rookie stats in one call), prospect profiles, combine, college stats (player or cohort), QBR
Model & methodologyget_model_docs (how the models work + per-position feature importance), get_player_features (why a player is scored the way they are — feature drivers, bands, direction)
Your own numbersexport_excel / import_excel / clear_overrides — download a styled projections / rankings / rookie-rankings workbook (or a by_team projection sheet with live PPR formulas), edit it, re-upload it, and have your values drive every later query

Bring your own projections & rankings

The same boards the website lets you download are available over MCP as real .xlsx files (built with zero extra dependencies — Node's own zlib):

  1. export_excel kind="projections" (or rankings, rookie_rankings) writes a styled workbook to disk and returns its path. Edit the highlighted column — Proj PPG for projections, My Rank for rankings/rookies — in Excel or Google Sheets.
  2. import_excel path="…" reads it back and saves your values as overrides.
  3. get_projections, get_fantasy_rankings, and get_prospect_outcomes then automatically use your numbers (flagged in the output) until you run clear_overrides.

Workbooks default to $STATHEAD_DIR (or the current working directory); pass path to choose where they land. Overrides persist in $STATHEAD_DIR/~/.stathead/overrides.json.

Quick start

Run it directly — no install, no clone:

bash
npx -y stathead-mcp

It speaks MCP over stdio, so you normally wire it into a client rather than run it by hand.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "stathead": {      "command": "npx",      "args": ["-y", "stathead-mcp"]    }  }}

Claude Code

bash
claude mcp add stathead -- npx -y stathead-mcp

Cursor / other MCP clients

Use the same command/args (npx -y stathead-mcp) in the client's MCP config.

Claude mobile apps / claude.ai web / Claude Desktop (remote connector)

Prefer a URL over a local command? The same tools are hosted over MCP's Streamable HTTP transport by a Cloudflare Worker (workers/stathead-mcp/, deployed via deploy-workers.yml):

https://stathead-mcp.dachhack.workers.dev

Add it under Settings → Connectors → Add custom connector, paste the URL, and save — no command, no API key. (A GET to that URL returns a small health payload; clients POST JSON-RPC to it.) The npm/stdio package above stays the path for Claude Code and Cursor.

The Worker records a privacy-respecting usage counter (MCP method + tool name only — no IPs or request bodies) to a Cloudflare Analytics Engine dataset (stathead_mcp_usage). View aggregates at GET /stats once you set the CF_ACCOUNT_ID + CF_ANALYTICS_TOKEN worker secrets (wrangler secret put …), or query the dataset in the Cloudflare dashboard. npm download counts don't see remote-connector usage — this does.

Data sources & freshness

Most tools fetch live from open upstreams (nflverse, Sleeper, FantasyFootballCalculator, ESPN's public endpoints). A handful read committed daily snapshots (StatHead's blended dynasty values, ADP history, in-house season projections), which the server fetches from the hosted StatHead site by default.

Please review DATA_SOURCES.md before redistributing any data this server returns — several upstreams are proprietary or paid and carry their own terms.

Configuration

All optional, via environment variables:

VarDefaultPurpose
STATHEAD_DATA_BASEGitHub raw (data branch)Base URL for committed snapshot data (<base>data/<file>). Defaults to GitHub raw, which serves every file uncompressed/reliably (the Cloudflare host gzips files over its 25 MiB cap, which Node can't decode). Override to point at your own deployment or a local http://localhost:5173/ dev server.
VITE_KTC_PROXYproject workerCORS proxy for KeepTradeCut. Deploy your own (workers/ktc-proxy) to avoid shared rate limits.
VITE_FC_PROXYproject workerCORS proxy for FantasyCalc (workers/fc-proxy).
VITE_ODDS_API_KEY—Enables betting-odds tools (the-odds-api.com).

Running from a full repo checkout instead? The server reads snapshots straight from local public/data/ and ignores STATHEAD_DATA_BASE.

Building from source

The bundle is produced from the StatHead monorepo:

bash
# from the repo rootnpm installnpm run build:mcp      # → mcp/dist/server.mjs (esbuild, single file)node mcp/dist/server.mjs

Publishing

Bump version in mcp/package.json and SERVER_VERSION in mcp/dist/server.mjs (they must match), merge to the default branch, then any one of:

bash
git push -f origin <commit>:publish-mcp-now        # branch-push trigger (works from Claude Code sessions)git tag mcp-v1.2.3 && git push origin mcp-v1.2.3   # tag trigger# or Actions → "Publish stathead-mcp to npm" → Run workflow

publish-mcp.yml refuses a version already on npm and a commit not yet on the default branch, smoke-tests the bundle, publishes via npm Trusted Publishing, then chains the MCP Registry publish. Manual fallback:

bash
npm run build:mcp                  # repo root — refresh the bundlecd mcp && npm publish --access public

The published tarball is just dist/server.mjs + this README (~220 KB).

Listing in the MCP Registry

server.json is the manifest for the official MCP Registry (io.github.dachhack/stathead-mcp). After an npm publish, the Publish to MCP Registry workflow (.github/workflows/publish-mcp-registry.yml) pushes it — authenticating via GitHub OIDC for the io.github.dachhack/* namespace (no secret). The npm package carries a matching mcpName field so the registry can verify the package belongs to this entry, and the workflow syncs server.json's version from package.json so they never drift.

Most community directories (Glama, mcp.so, PulseMCP) mirror the official registry and/or auto-index public npm packages with the model-context-protocol keyword (which package.json has), so a registry publish propagates to them.

License

MIT — see ../LICENSE. The code is MIT; the data it returns is not necessarily redistributable. See DATA_SOURCES.md.

Source: mcp/README.md at commit 69b5843

Tools

57

get_metadata

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.

Takes no parameters.

get_player_season_stats

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.

Parameterslimitfieldsseasonrequiredsort_bypositionmin_gamesplayer_nameoutput_format

get_player_weekly_stats

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.

Parametersteamlimitfieldsseasonrequiredsort_bypositionweek_endweek_startplayer_nameoutput_format

get_games

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.

Parametersteamweeklimitfieldsseasonoutput_format

get_snap_counts

Get offensive/defensive snap count percentages by player per week. Use for workload analysis, role changes, snap share trends. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersteamlimitfieldsseasonrequiredpositionplayer_nameoutput_format

get_rookie_snap_share

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.

Parametersteamlimitfieldsseasonsort_bypositionmin_weeksoutput_format

get_combine_results

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.

Parameterslimitfieldssort_bypositionmax_seasonmin_seasonplayer_nameoutput_format

get_draft_picks

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.

Parametersteamlimitroundfieldsseasonpositionplayer_nameoutput_format

get_rookie_class

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.

Parameterslimitroundfieldssort_bypositiondraft_yearrequiredplayer_nameoutput_format

get_injuries

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.

Parametersteamweeklimitfieldsseasonrequiredstatusplayer_idsplayer_nameoutput_format

get_advanced_stats

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.

Parameterslimitfieldsseasonrequiredstat_typerequiredplayer_nameoutput_formatseason_totals

get_play_by_play

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 w

Parametersdownteamweeklimitfieldsoffsetseasonrequiredgame_idred_zoneplay_typeplayer_idsplayer_name+1 more

get_fantasy_pbp

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.

Parametersidpteamweeklimitfieldsseasonrequiredgame_idplayer_idsteam_defenseoutput_format

get_player_crosswalk

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.

Parameterslimitfieldsseasonpositionplayer_idplayer_nameoutput_format

get_fantasy_rankings

Get StatHead's redraft rankings: each player ordered by the average of two StatHead ranks — StatHead ADP (StatHead's blend of the draft markets, which include the FantasyPros expert consensus, Sleeper and FantasyFootballCalculator) and StatHead's own season projection (PPR points above a 12-team replacement level: QB13/RB30/WR42/TE13; within a position, plain projected points). Pass position for a positional board. Third-party rankings are inputs only; no expert or market rank is shown. Columns: rank (StatHead), pos_rank, adp_rank and proj_rank (the two StatHead ranks behind it), proj_pts, adp. Use for draft strategy and value picks (proj_rank far ahead of adp_rank = the projection likes him more than the market). See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldspositionoutput_format

get_adp

Get StatHead ADP: StatHead's blend of the draft markets (FantasyPros expert consensus, Sleeper draft ADP, FantasyFootballCalculator), each weighted by freshness and confidence, for players priced by at least two of them. Third-party rankings and ADP are inputs only: no single source's number is returned. Includes a disagreement spread (max minus min across sources) and the number of sources. Use for draft value analysis. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldsseasonpositionoutput_format

get_adp_with_results

Join preseason StatHead ADP (StatHead's blend of the archived Sleeper and FantasyFootballCalculator draft boards; players on both) to actual season-end fantasy production in one call — find draft-day values and busts without joining ADP and stats yourself. For a season, returns each drafted skill player's StatHead ADP alongside their actual PPR points, positional ADP rank, positional PPR finish (among drafted players), and value = adp_pos_rank − finish_pos_rank (positive = beat draft slot). Skill positions (QB/RB/WR/TE). Coverage 2020–present. No single source's ADP is shown. Note: value is a single-season residual — a relative bust/value ranking, not a predictive probability; average multiple seasons before relying on it. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldsseasonrequiredsort_bypositionoutput_format

get_sleeper_projections

Kept for compatibility: returns StatHead's own projections, not Sleeper's (third-party projections are inputs only, never shown raw). Pass week for StatHead's weekly projection (same as get_weekly_projections), or omit week for StatHead's season projection (same as get_projections). See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersweeklimitfieldsseasonrequiredpositionoutput_format

get_sleeper_user_leagues

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.

Parametersfieldsseasonusernameleague_iddisplay_nameoutput_format

get_sleeper_league

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.

Parametersnameteamfieldsseasonrostersusernameleague_idoutput_format

get_sleeper_league_users

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.

Parametersnamefieldsseasonusernameleague_idoutput_format

get_sleeper_matchups

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.

Parametersweekrequiredfieldsstartersleague_idrequiredoutput_format

get_sleeper_waiver_wire

Find the best available (un-rostered) free agents in a Sleeper league. Cross-references the league's rostered players against all NFL players, then joins Sleeper trending-add counts and StatHead's projections: projected PPG, projected games, and rest-of-season points (ros_pts, the in-season ranking column). Sort by trending (default), ros, or ppg — ppg ranks players projected for at least min_games first, because a backup's ppg is a per-game rate conditional on playing (sorting on it alone returned thirty backup quarterbacks). Use for waiver-wire and streaming decisions. Source: Sleeper public API + StatHead projections. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldssort_bypositionleague_idrequiredmin_gamesoutput_format

get_sleeper_draft

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.

Parameterslimitfieldsseasondraft_idusernameoutput_format

get_sleeper_user_snooper

Scout a Sleeper user across all their leagues for a season: their league list plus cross-league player exposure — which players they roster in the most leagues (and start most), with the league names. Identify the user by username/user_id, OR by display_name + league_id (to scout a manager you just saw in get_sleeper_league). Use to see who a manager is heavily invested in. Source: Sleeper public API. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldsseasonpositionusernameleague_iddisplay_nameoutput_format

get_sleeper_transactions

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.

Parametersnametypeweeklimitfieldsseasonusernameleague_idoutput_format

get_sleeper_user_history

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.

Parameterslimitfieldsseasonsusernameleague_iddisplay_nameoutput_format

get_dynasty_values

Get StatHead's dynasty trade values and rankings: StatHead's blend of two dynasty markets (the geometric mean of FantasyCalc's value and KeepTradeCut's value calibrated to the same scale), shown in tens. Third-party values and ranks are inputs only; no field is a market's raw number or rank (position ranks are on StatHead value). Includes 1QB and SuperFlex values, position ranks, age, and stable ids (gsis_id, sleeper_id) for joining without name-string matching. Board depth is the market source's top ~500; a player absent from the board is a market judgment (valued below the top 500), not missing data. No TE-premium variant exists (the underlying market composites don't publish one) — for a TEP league, re-score get_projections (scoring tep0.5/tep1.0) and map the TE uplift through the value-vs-points curve. Use for dynasty trade evaluation, roster building, value comparisons. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldsformatpositionplayer_nameoutput_format

get_trade_values

StatHead TRADE values: what managers actually pay, fitted to millions of completed two-team trades in public Sleeper dynasty and keeper leagues (every trade read as an even swap; values additive: two 50s trade for one 100; 100 = a mid 1st in the next rookie draft, the same week). StatHead model output only — no trade, league or manager is ever shown, and no third-party ranking is involved; this is a separate StatHead number from get_dynasty_values (a list price blended from dynasty markets): the gap between the two is where the trade market disagrees with the list. Every value is AS OF its week (fitted from trades up to then only), so the history can be backtested, and each week's trades priced with the previous week's values are off by a median 0.20 in log ratio (held-out leagues 0.19 vs 0.41 for counting assets). Published values are for no TE premium and 4-point passing TDs; scoring= re-prices TEs and QBs with the fitted premium factors (a TE in a 0.75+/catch premium league trades at ~1.21x). view=players (default): value, rank, 90% range (ciLow/ciHigh), 1/4/12-week change, trend, volatility, liquidity (trades4w/tradesAll), 52-week high and distance from it; include_forecast adds StatHead's 1/3/6/12-month value forecasts (fc1m..fc1y, LightGBM on as-of log returns, walk-forward skill 3-6% over no-change, direction hit 65-76%, 80% band coverage ~78-81%). view=picks: rookie-pick classes (round x seasons ahead x early/mid/late tier from the original owner's standing) from pick-for-pick trades, global and the last 120 days, with 90% ranges and the realized return of each slot tier. view=history (needs player_name): the weekly as-of value series, players in 100+ trades. Defensive players (IDP) are valued from IDP leagues only and left out unless position=IDP. Superflex is the default format (most of the trades); 1qb is fitted separately. Use for trade evaluation at market price, spotting movers and liquidity, and comparing against the StatHead blend. See also: get_meta

Parametersviewlimitfieldsformatscoringsort_bypositionmin_tradesplayer_nameoutput_formatinclude_forecast

price_lines

Price pick lines (player prop lines from a pick'em or sportsbook app) against StatHead's week projections: for each player + stat + line, the week's projected stat, the simulation median, the lean (over / under), P(lean), the edge against the payout's break-even (1 / multiplier) and the expected value per unit. The raw share of 20,000 draws of the player's week stat line past the line (pRaw; pOver via fields) comes from the same stat-line simulation that makes the confidence bands; P(lean) is that share CALIBRATED, 0.5 + 0.5 x (raw - 0.5) capped at 62%, because on a proxy back test (weeks 1-6 of 2026, 2,429 lines set at an external projection's number) the raw share ranked outcomes correctly (hit rate rose monotonically with it) but overstated them by about half (62% hit where it said 81%, 57% where it said 60%), and on weeks 1-7 (2,786 leans) the hit rate stopped rising at about 62% (leans the shrink put at 71-76% hit 58%); leans clearing the break-even hit 58.6%, nearly all of it on unders, since single games are right-skewed. Stats: recYds, rushYds, passYds, rec, tgt, rushAtt, passTD, rushRecYds (rush + rec yards), passRushYds, anyTD (rush + rec TDs). The lines and payouts are the caller's inputs and are echoed back; nothing else third-party is involved. GUARDRAILS: a row is flagged, and should not be trusted on the number alone, when the player or a position-mate is Questionable / Doubtful / Out for the week (the line is conditional on playing; the book knows more about the game-time call), when the role update moved his line 15%+ (role:x), when a projected volume is thin (under 2 targets / 4 carries / 10 attempts), or when his game has already started. A 1.78x payout needs 56.2% to break even, 1.87x 53.5%: edge is P(lean) minus that, so a 51% lean is not a pick. Lines are priced at the if-he-plays line; a player with no row in the weekly feed has no price (and a teammate missing from the feed means the pool spreads his volume to the room — check the depth chart

Parametersmultweeklinesrequiredfieldsoutput_format

get_next_gen_stats

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.

Parametersteamweeklimitfieldsseasonrequiredstat_typerequiredplayer_nameoutput_format

get_rosters

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.

Parametersteamlimitfieldsseasonrequiredstatuspositionplayer_nameoutput_format

get_contracts

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.

Parametersteamlimitfieldssort_bypositionactive_onlyplayer_nameoutput_format

get_depth_charts

NFL team depth charts: each team's newest published chart (nflverse, twice-daily snapshots) for offense, defense and special teams, every slot and rank, with roster status and StatHead's own depth-order rank for QB/RB/WR/TE. Slot-aware: a chart lists three receiver slots that all carry WR, so rows are keyed by slot and labelled WR1 / WR2 / WR3 (first, second, third receiver slot). The chart's rank runs across a position (the WR slots carry 1/4/7, 2/5/8, 3/6, so a team's receiver order is the rank order); slotRank is the order within the slot and starter marks the first in each slot. view=changes lists slot-level moves (up / down / added / removed, newStarter) since each team's previous snapshot (since=previous, default) or its snapshot from at least 7 days ago (since=7d) — the 'who moved on the depth chart' question in one call. Use for handcuffs, roster battles, committee reads and snap-share priors; pair with get_injuries and get_weekly_projections (whose depth column is this chart's rank). Open data (nflverse, CC-BY-4.0), not a ranking or projection. Seasons other than the current one read the raw nflverse file (chart view only). See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersteamviewgrouplimitsincefieldsseasonpositionplayer_nameoutput_formatstarters_only

get_ftn_charting

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.

Parametersweeklimitfieldsseasonrequiredgame_idoutput_format

get_trades

Get historical NFL trades. Shows which teams gave/received players and draft picks, including pick round, number, and conditional status. Use for trade history, draft capital analysis, team-building strategies. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersteamlimitfieldsseasonplayer_nameoutput_format

get_player_metrics

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.

Parametersteamlimitfieldsseasonrequiredsort_bypositionmin_gamesplayer_nameoutput_format

get_qbr

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.

Parametersteamweeklevellimitfieldsseasonrequiredsort_byqualifiedplayer_nameoutput_format

get_draft_prospect_data

Get historical draft prospect profiles: school, draft slot, physical measurements, and scouting report text (strengths/weaknesses). ESPN's own grades and prospect ranks are not shown (third-party rankings are never shown raw). Coverage: draft classes 1967–2021 only (this ESPN/JackLich10 source is not updated for 2022+). For recent/2022+ classes use get_rookie_class or get_college_stats. Use for prospect evaluation, draft class comparisons, historical draft analysis. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitfieldsschoolsort_bypositiondraft_yearplayer_nameoutput_formatinclude_scouting

get_prospect_outcomes

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.

Parameterstierlimitfieldssort_bypositiondraft_yearplayer_nameoutput_format

get_devy_rankings

StatHead devy (college player) rankings for dynasty leagues. The headline is StatHead's COMPOSITE value and rank: the devy market's price blended with StatHead's NFL career projection in rank space, priced on a smooth 0-9999 value curve. composite_weight = the career projection's share, set by the career model's own held-out accuracy at that position and distance from the draft (0.75 x Spearman, halved where it does not beat last-season production: about 0.11-0.17 for QBs, 0.17-0.25 for TEs, 0.26-0.35 for RBs and WRs), except where a backtest on the 2010-2022 classes found a better weight on held-out classes both within position and across the board (WR three seasons from the draft: 0.5); never above 0.5, so the market always leads. In that backtest the composite out-ranked a market-style price alone on NFL outcomes 0-2 seasons before the draft. Third-party values and ranks are inputs only: no field is a third-party number or rank. market_value / market_rank = the StatHead devy value model's price for the player's profile (what the market pays for a player like him: P(listed) x value if listed, from estimated age and draft age, breakout age, share of the offense, usage, counting stats, program, competition level and recruiting; held-out rank correlation with the market ~0.79 superflex / ~0.68 1QB). market_listed = on the market's devy list. hit_pct = StatHead's NFL career model IN THE CHOSEN FORMAT: the chance (percent) of at least one fantasy-starter season in his first four NFL seasons (6+ games above replacement PPR PPG for a 12-team league; single QB: QB13/RB30/WR42/TE13; superflex/2QB: QB25). About 3-5% of college players at this level hit, so even top prospects read in the 20s-60s. career_rank / career_pct = over the whole board by hit chance x what a hit is worth at his position. career_vs_market = market rank minus career rank (positive: the career model likes him more than the market model). draft_day = his chance of round 1 and of rounds 1-3; p_day1 / p_da

Parameterslimitfieldsformatoffsetschoolsort_bypositiondraft_yearplayer_namemarket_listedoutput_formatmin_college_seasons

get_hs_prospects

StatHead's high-school devy board: QB / RB / WR / TE / ATH recruits in classes not yet in college, ranked ACROSS positions by NFL fantasy outlook. hit_pct = chance (percent) of at least one fantasy-starter season in his first four NFL seasons (6+ games above replacement PPR PPG for a 12-team league in the chosen format); the rank weighs it by what a hit is worth at his position; p_drafted = chance he is drafted at a skill position. Calibrated on every high-school skill recruit in the 2007-2016 classes. The model's input is the recruiting composite rating, which is never shown; held out by class, nothing beat it (size, sub-position, committed program), so within a position the order is the recruiting services' and this tool has no position rank or position filter. Across a whole class it orders NFL outcomes as well as the raw rating, not better; it adds the cross-position, per-format scale (superflex lifts QBs). class_rank = rank within his class, across positions. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterslimitstatefieldsformatoffsetschoolplayer_nameoutput_formatrecruit_class

get_devy_player

One devy (college) player's card: his StatHead devy numbers (composite value and rank, value-model price, NFL career projection, dynasty value / pick equivalent, estimated age, breakout age), his college season stat lines (the last five seasons plus the current season to date) and the current season's game log (week, opponent, result and his passing / rushing / receiving line). Covers every player on the devy board (get_devy_rankings, ~6,100). College stats from CollegeFootballData.com; the season to date and game log run through the last completed week (refreshed weekly in season). If the name matches several players, the matches are listed: narrow with school, position or draft_year. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersfieldsformatschoolpositiondraft_yearplayer_namerequiredoutput_format

get_model_docs

How StatHead's models work and what drives them: a methodology overview (scored-player VOR hit/bust model, season projection pipeline, dynasty value, share models), the hit/bust thresholds and share-model cross-validation fit, and the TOP FEATURE IMPORTANCE per position (each feature's category, weight, and the direction of its relationship to the projection). Use to understand or explain the model. For one player's feature breakdown use get_player_features. topic=devy: the devy (college) models instead (validation, calibration, feature importance, backtest, data checks). Coverage: 2026. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterstopicfieldspositionoutput_format

get_player_features

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.

Parameterslimitfieldspositionplayer_namerequiredoutput_format

get_projections

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 c

Parameterslimitfieldspresetscoringsort_bypositionmin_gamesplayer_nameoutput_format

get_schedule_strength

Strength of schedule per team, per position, for every game of 2026 — how easy or hard each team's slate is for QB/RB/WR/TE/K/DST. A factor above 1 means an easier schedule (that position's opponents concede more than league average); below 1 means harder. Season factors are the mean over a team's games; per-game factors name the opponent and venue. CRITICAL, read before using: these factors are ALREADY APPLIED to StatHead's K and DST projections (their season lines are built alongside these numbers), so re-applying them there double-counts. They are deliberately NOT applied to QB/RB/WR/TE — the weekly matchup multipliers for skill players are normalized to mean 1, so they redistribute points between weeks without moving a season total, which the projection pool owns. If you want the season-level schedule effect for skill players, apply it yourself from here. DL/LB/DB follow the skill-position rule — published, normalized out of the weekly IDP strip, never applied to the season line — and are deliberately close to 1 because offense-concedes-to-IDP barely repeats year over year (r = +0.25 DL, +0.24 LB, +0.08 DB). Spread across 2026: ~8% DST, ~6% QB, ~5.5% WR, ~4.5% TE, ~3.3% K, ~3.1% RB, ~2.5% DL, ~1.3% LB, ~0.4% DB between the easiest and hardest schedule. Derived from the same defense-vs-position table the weekly projections use, so published and applied numbers cannot drift. These are model multipliers, not points allowed: for what each defense has actually conceded per game to QB/RB/WR/TE this season, ranked 1-32 in your scoring and laid over upcoming weeks, use get_matchups. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersteamweeklimitfieldssort_bypositionoutput_format

get_matchups

Weekly strength of matchup by offensive fantasy position (QB/RB/WR/TE) for 2026: what each defense has ALLOWED per game to a position this season, ranked 1-32 (1 = most allowed = softest matchup for the offense), laid over the schedule so every team's upcoming opponent reads as a matchup, in your scoring. Every table also carries OVER EXPECTED (oe): points or a metric allowed per game minus what the offenses faced produce in their other games this season (leave-one-out), i.e. the schedule-adjusted ledger — a defense that only looks soft because it met Detroit's tight ends has a high raw rank and an oe near zero. Views. WEEK (default; week defaults to the current one; position and team optional): one row per team and position with the opponent, the opponent's points allowed per game to that position (oppFPA), its rank, % vs league average, its over-expected (oppOE) and the StatHead model factor the weekly projections actually apply for that opponent (prior season blended in, shrunk toward 1) with its own rank, plus a lean (soft/tough = top/bottom quarter). DEFENSES (view=defenses): the defense-vs-position table — points allowed, rank, over expected, last 3 games, last season, model factor, next game; without position all four positions side by side. ROS (view=ros): strength of REST OF SCHEDULE per team — the mean of what the remaining opponents allow to the position (rosFPA, rank 1 = softest rest of schedule), its over-expected, the mean model factor, fantasy-playoff weeks 15-17 on their own and the bye; without position all four positions side by side. METRICS (view=metrics, position required): points allowed split into component metrics where the position has the volume — QB passPts/passAtt/passYds/passTD/int and rushPts/carries/rushYds/rushTD; RB rushPts/carries/rushYds/rushTD/ypc and recPts/targets/rec/recYds/recTD; WR and TE recPts/targets/rec/recYds/recTD/ypr — each per game with rank, over expected and oe rank; pass metric for one metric's full table. Pass met

Parametersteamviewweeklimitfieldsmetricscoringsort_bypositionfrom_weekplayer_nameweeks_ahead+1 more

get_weekly_projections

StatHead's first-party PER-WEEK fantasy projections for 2026 — the season projection (get_projections) split across the schedule: each week = season PPG × a scoring-environment term × the opponent's position-specific deviation, normalized so the 17 games sum back to the season line. Where a market line is published, the environment term is the implied team total (blended 60% against def-vs-pos team strength, home field already priced in); elsewhere it is def-vs-pos team strength × a home/away nudge. An implied total predicts a team's actual points at RMSE 9.13 versus 10.16 for prior-season scoring and 10.20 for current-season-to-date, so where the market has spoken it replaces what we knew rather than supplementing it. 2026 lines currently cover weeks 1-7, 9-12 and 16 and fill in as books post them. Two modes: pass week (1-18) for that week's matchup-adjusted rankings (opponent, matchup %, projected points), or pass player_name alone for one player's full week-by-week outlook including the bye. Covers QB/RB/WR/TE plus kickers (current depth-chart PK1, position K), team defenses (position DST, name "<TEAM> DST", sleeper_id = team code) and individual defensive players (positions DL, LB, DB — the top 96 of each bucket by default-catalog points, which keeps pass rushers whose value is sacks rather than tackles). IDP weekly points come from the season component build split across the schedule, so the weekly feed and the season board quote one number. Expect the IDP matchup swing to be SMALL — a few percent, and near zero for DB: how much an offense concedes to a defensive bucket varies 29-43% within a season but barely repeats across one (yoy r = +0.25 DL, +0.24 LB, +0.08 DB), so the multiplier is shrunk to what persists. It sharpens in-season as current-year weeks blend in. In-season, injury designations are applied in week mode via an availability column as MEASURED expected-value multipliers (2016-2025, 4,147 designated player-weeks, points vs the player's own health

Parametersteamweeklimitfieldsscoringpositionplayer_nameoutput_format

get_college_stats

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.

Parameterslimitfieldsschoolseasonsort_bypositionplayer_nameoutput_format

get_college_qbr

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.

Parameterslimitfieldsseasonsort_byplayer_nameoutput_format

get_team_metrics

Get comprehensive team-level analytics for a season. Computed from play-by-play data. Offense: pass rate, neutral-script pass rate, EPA/play (total/pass/rush), success rate, yards/play, red zone TD rate, shotgun rate, deep pass rate, pace. Defense: EPA/play allowed (total/pass/rush), defensive success rate. Context: points scored/allowed, point differential, turnovers. Returns one row per team (32 teams). Use for team evaluation, matchup analysis, scheme identification. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parametersteamfieldsseasonrequiredsort_byoutput_format

get_coach_tendencies

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.

Parametersteamcoachfieldsseasonplayer_nameoutput_format

export_excel

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.

Parameterskindrequiredpathlimitpositiondraft_year

import_excel

Read back an .xlsx workbook that you exported with export_excel and (optionally) edited, and save your custom values as overrides. After import, get_projections / get_fantasy_rankings / get_prospect_outcomes automatically use YOUR Proj PPG and rankings (flagged in the output) until you run clear_overrides. The workbook kind is auto-detected from its Meta sheet. Returns a summary of what was applied. See also: get_metadata for season coverage, valid enums, and analytic caveats.

Parameterspathrequired

clear_overrides

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.

Parameterskind

Version history

17
  1. v1.0.126LatestNov 5, 2026
  2. v1.0.113Oct 6, 2026
  3. v1.0.112Oct 4, 2026
  4. v1.0.111Oct 3, 2026
  5. v1.0.110Oct 3, 2026
  6. v1.0.109Oct 3, 2026
  7. v1.0.108Oct 3, 2026
  8. v1.0.107Oct 2, 2026
  9. v1.0.106Oct 2, 2026
  10. v1.0.105Oct 2, 2026
  11. v1.0.104Oct 1, 2026
  12. v1.0.103Oct 1, 2026
  13. v1.0.102Oct 1, 2026
  14. v1.0.97Sep 30, 2026
  15. v1.0.94Sep 25, 2026
  16. v1.0.93Sep 25, 2026
  17. v1.0.90Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts