# io.github.dachhack/stathead-mcp (npm · stathead-mcp)

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

- Trust score: 79/100 (medium)
- Change this week: −9
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `stathead-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp.md), [page](https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp)

## Channel facts

- Registry: `npm`
- Package: `stathead-mcp`
- Version: `1.0.33`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to dachhack/stathead).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 55/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 10740 tokens (~244/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

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

### Codex

```bash
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
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dachhack-stathead-mcp --command npx --arg -y --arg stathead-mcp
```

### Hermes

```yaml
mcp_servers:
  dachhack-stathead-mcp:
    command: "npx"
    args: ["-y", "stathead-mcp"]
```

### Other

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 79, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 75, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 60, −10)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 70, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 88, +29)

- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100

### 2026-07-26 (score 59)

First indexed and scored.

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (44)

### `get_metadata` (~77 tokens)

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.

### `get_player_season_stats` (~298 tokens)

Get aggregated season totals for NFL players. Returns rushing, passing, receiving, and fantasy stats. Supports filtering by position (QB, RB, WR, TE) and sorting by any stat column. Use this for questions about player performance, fantasy points, rankings, comparisons.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows to return (default 30, max 100)
- `min_games` (number): Optional: minimum games played
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Optional: filter to players whose name contains this string (case-insensitive)
- `position` (string): Filter by position: QB, RB, WR, TE, or ALL
- `season` (number, required): NFL season year. Coverage: 1999 to the latest completed season (nflverse).
- `sort_by` (string): Column to sort by (descending). Common: fantasy_points_ppr, rushing_yards, receiving_yards, passing_yards, receptions, targets, carries, rushing_tds, receiving_tds, passing_tds

### `get_player_weekly_stats` (~187 tokens)

Get week-by-week stats for specific player(s) in a season. Use this for game logs, weekly trends, consistency analysis, boom/bust analysis.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string, required): Player name to search for (case-insensitive partial match)
- `position` (string): Filter by position
- `season` (number, required): NFL season year
- `week_end` (number): End week (inclusive)
- `week_start` (number): Start week (inclusive)

### `get_games` (~183 tokens)

Get NFL game results and schedules. Includes scores, spreads, totals, weather, surface. Use for team records, point totals, home/away splits, divisional matchups.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number): Filter to specific season
- `team` (string): Filter to games involving this team (abbreviation like KC, SF, BUF)
- `week` (number): Filter to specific week

### `get_snap_counts` (~176 tokens)

Get offensive/defensive snap count percentages by player per week. Use for workload analysis, role changes, snap share trends.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position
- `season` (number, required): NFL season year (2012+)
- `team` (string): Filter by team abbreviation

### `get_rookie_snap_share` (~339 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rookies (default 40)
- `min_weeks` (number): Minimum weeks with snap data to include (default 4)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter by position (QB, RB, WR, TE)
- `season` (number): Season (2012+). Defaults to the most recent completed season; pass the in-progress season to track live.
- `sort_by` (string): ramp (default, biggest risers) | latest | peak | avg
- `team` (string): Filter by team abbreviation

### `get_combine_results` (~238 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 30)
- `max_season` (number): Latest draft year to include
- `min_season` (number): Earliest draft year to include
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position (QB, RB, WR, TE, etc.)
- `sort_by` (string): Sort by: forty, bench, vertical, broad_jump, cone, shuttle, wt

### `get_draft_picks` (~249 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position
- `round` (number): Filter by draft round
- `season` (number): Draft year
- `team` (string): Drafting team abbreviation

### `get_rookie_class` (~341 tokens)

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.

Input parameters:

- `draft_year` (number, required): Draft year (= rookie NFL season). Coverage from ~2000.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max players (default 60)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter to one player
- `position` (string): Filter to a position
- `round` (number): Filter to a draft round
- `sort_by` (string): Sort column. Lower-is-better fields (pick, round, forty) sort ascending; production fields (rookie_ppr, rookie_rush_yds, …) descending. Default: pick.

### `get_injuries` (~197 tokens)

Get weekly injury reports. Includes injury type, practice status, game status. Use for injury impact analysis, availability questions.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `season` (number, required): NFL season year (2009+)
- `status` (string): Filter by status: Out, Doubtful, Questionable, Probable
- `team` (string): Filter by team
- `week` (number): Filter by week

### `get_advanced_stats` (~221 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 40)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `season` (number, required): NFL season year. Coverage: 2018–present.
- `season_totals` (boolean): Return one row per player of PFR season totals (default true). Set false for per-game rows.
- `stat_type` (string, required): Type of advanced stats

### `get_play_by_play` (~280 tokens)

Get play-by-play data with EPA, WPA, win probability, air yards, YAC. Use for situational analysis (red zone, 3rd down, 2-minute drill), play type breakdowns, EPA-based efficiency. WARNING: Large dataset — always filter by player, team, or situation.

Input parameters:

- `down` (number): Filter by down (1-4)
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50, max 200)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `play_type` (string): Filter: pass, run, punt, kickoff, field_goal
- `player_name` (string): Filter to plays involving this player (passer, rusher, or receiver)
- `red_zone` (boolean): If true, only plays inside the 20
- `season` (number, required): NFL season year
- `team` (string): Filter by team on offense (posteam)
- `week` (number): Filter by week

### `get_fantasy_rankings` (~214 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter by position

### `get_adp` (~210 tokens)

Get Average Draft Position from community (ffc) or ESPN sources. Use for draft value analysis, comparing ADP across platforms.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `scoring` (string): Scoring format (community source only)
- `season` (number, required): Season year. ffc coverage: ~2018–present (older seasons may be unavailable); espn: recent seasons only.
- `source` (string, required): Data source
- `teams`: League size, one of 8/10/12/14 (community source only). Default 12.

### `get_adp_with_results` (~326 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max players (default 60)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter to a position
- `scoring` (string): Scoring format. Default ppr.
- `season` (number, required): Season (FFC ADP ~2018–present)
- `sort_by` (string): Sort column. value/ppr descending; adp/adp_pos_rank/finish_pos_rank ascending. Default: value (biggest values first).
- `teams`: League size. Default 12.

### `get_sleeper_trending` (~172 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `hours` (number): Lookback window in hours (default 24)
- `limit` (number): Number of players (default 25)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `type` (string): Trending adds or drops

### `get_sleeper_projections` (~210 tokens)

Get Sleeper weekly or season-long player projections. Includes projected stats and fantasy points by scoring format. Sleeper publishes only per-week regular-season projections; pass week for a single week, or omit week to get season totals summed across weeks 1–18 (available once that season's projections are posted).

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter by position
- `season` (number, required): NFL season year
- `week` (number): Week number (omit for season-long totals summed across weeks 1–18)

### `get_sleeper_user_leagues` (~302 tokens)

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.

Input parameters:

- `display_name` (string): Manager's in-league display or team name; requires league_id.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Alternative to username: with display_name, resolves a manager seen in a league to their user_id.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number): NFL season (default 2026).
- `username` (string): Sleeper username or user_id.

### `get_sleeper_league` (~329 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Sleeper league id (from get_sleeper_user_leagues or the league URL).
- `name` (string): League name to match (substring); requires username.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `rosters` (boolean): Include full rosters (default true). Set false for standings + format only.
- `season` (number): Season for username+name lookup (default 2026).
- `team` (string): Filter to one team by owner display name or team name (substring match).
- `username` (string): Alternative to league_id: with name, finds the league among this user's leagues.

### `get_sleeper_league_users` (~251 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Sleeper league id.
- `name` (string): League name to match (substring); requires username.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number): Season for username+name lookup (default 2026).
- `username` (string): Alternative to league_id: with name, finds the league among this user's leagues.

### `get_sleeper_matchups` (~176 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string, required): Sleeper league id.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `starters` (boolean): Include each team's starting lineup (default false).
- `week` (number, required): Week number (1-18).

### `get_sleeper_waiver_wire` (~239 tokens)

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 projected PPG, ranked by waiver interest. Use for waiver-wire and streaming decisions. Source: Sleeper public API + StatHead projections.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string, required): Sleeper league id.
- `limit` (number): Max players (default 40).
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter by position (QB, RB, WR, TE, K, DEF).
- `sort_by` (string): Sort column: trending (default, recent add count) or ppg (StatHead projection).

### `get_sleeper_draft` (~225 tokens)

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.

Input parameters:

- `draft_id` (string): Sleeper draft id — returns the pick board.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max picks/drafts (default 200).
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number): Season for username lookup (default 2026).
- `username` (string): Sleeper username — lists the user's drafts (use instead of draft_id).

### `get_sleeper_user_snooper` (~298 tokens)

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.

Input parameters:

- `display_name` (string): Manager's in-league display or team name; requires league_id.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Alternative to username: with display_name, resolves a manager seen in a league to their user_id.
- `limit` (number): Max players in the exposure table (default 40).
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `position` (string): Filter exposure to one position (QB, RB, WR, TE).
- `season` (number): NFL season (default 2026).
- `username` (string): Sleeper username or user_id.

### `get_sleeper_transactions` (~285 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Sleeper league id.
- `limit` (number): Max transactions (default 40).
- `name` (string): League name to match (substring); requires username.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number): Season for username+name lookup (default 2026).
- `type` (string): Filter by transaction type.
- `username` (string): Alternative to league_id: with name, finds the league among this user's leagues.
- `week` (number): Week (1-18). Omit to sweep the whole season.

### `get_sleeper_user_history` (~259 tokens)

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.

Input parameters:

- `display_name` (string): Manager's in-league display or team name; requires league_id.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `league_id` (string): Alternative to username: with display_name, resolves a manager to their user_id.
- `limit` (number): Max league-season rows (default 60).
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `seasons` (number): How many recent seasons to sweep, ending this year (default 5, max 12).
- `username` (string): Sleeper username or user_id.

### `get_dynasty_values` (~191 tokens)

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. Use for dynasty trade evaluation, roster building, value comparisons.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `format` (string): Format
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position

### `get_next_gen_stats` (~247 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 40)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `season` (number, required): NFL season year (2016+)
- `stat_type` (string, required): Type of NGS data
- `team` (string): Filter by team abbreviation
- `week` (number): Filter by week (omit for all weeks)

### `get_rosters` (~213 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 53)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position
- `season` (number, required): NFL season year
- `status` (string): Filter by status (e.g., ACT, RES, PUP)
- `team` (string): Filter by team abbreviation

### `get_contracts` (~215 tokens)

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.

Input parameters:

- `active_only` (boolean): Only show active contracts (default true)
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 40)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position
- `sort_by` (string): Sort by: value, apy, guaranteed, apy_cap_pct
- `team` (string): Filter by team

### `get_depth_charts` (~203 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 60)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position abbreviation (e.g., RB, WR, QB)
- `season` (number, required): NFL season year
- `team` (string): Filter by team abbreviation

### `get_ftn_charting` (~198 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `game_id` (string): Filter by game ID
- `limit` (number): Max rows (default 100)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number, required): NFL season year (2022+)
- `week` (number): Filter by week

### `get_trades` (~186 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by traded player name
- `season` (number): Filter to trades in this season
- `team` (string): Filter to trades involving this team (gave or received)

### `get_player_metrics` (~373 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max players to return (default 20)
- `min_games` (number): Minimum games played (default 4)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Player name to search for (case-insensitive partial match)
- `position` (string): Filter by position
- `season` (number, required): NFL season year (2016+ for NGS, 2022+ for FTN)
- `sort_by` (string): Sort by any metric column (descending). Common: fantasy_points_ppr, total_epa, yprr, epa_per_dropback
- `team` (string): Filter by team abbreviation

### `get_qbr` (~287 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `level` (string): Season totals or week-by-week
- `limit` (number): Max rows (default 32)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name (case-insensitive partial match)
- `qualified` (boolean): Only show qualified QBs (default true)
- `season` (number, required): Filter to specific season (2006+)
- `sort_by` (string): Sort by column (descending). Common: qbr_total, pts_added, epa_total
- `team` (string): Filter by team abbreviation
- `week` (number): Filter by week (weekly level only)

### `get_draft_prospect_data` (~312 tokens)

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.

Input parameters:

- `draft_year` (number): Filter to specific draft year
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `include_scouting` (boolean): Include scouting report text from draft profiles (default false)
- `limit` (number): Max rows (default 50)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `position` (string): Filter by position abbreviation (QB, RB, WR, TE, etc.)
- `school` (string): Filter by college/school name
- `sort_by` (string): Sort by: grade, ovr_rk, pos_rk, overall (descending for grade, ascending for ranks)

### `get_prospect_outcomes` (~399 tokens)

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.

Input parameters:

- `draft_year`: Draft class. Default 2026.
- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max prospects (default 60)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter to one prospect
- `position` (string): Filter by position
- `sort_by` (string): Sort column. grade/boomProb/outperfPctile descending; projPick/projRound/bustProb ascending. Default: grade.
- `tier` (string): Filter by tier label (substring match)

### `get_projections` (~356 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max players (default 50).
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter to one player.
- `position` (string): Filter by position (QB, RB, WR, TE).
- `preset` (string): Apply one of the site's "Quick Preset" tilts (all derived StatHead outputs). "vegas-weighted": regress 25% toward position mean. "consensus"/"consensus-ml": blend toward market consensus via internal…
- `sort_by` (string): Sort column, descending. Default: ppg.

### `get_college_stats` (~367 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max player-seasons (default 100)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter to one player. Omit for a class/cohort query (then season and/or school is required).
- `position` (string): Filter by position abbreviation (e.g. RB, WR, QB)
- `school` (string): Filter by school name/abbreviation
- `season` (number): College season. Required for cohort queries (when player_name is omitted).
- `sort_by` (string): Stat column to rank a cohort by, descending (e.g. "Rushing Yards", "Receiving Yards", "Receptions", "Passing Yards"). Case- and spacing-insensitive, so "rushing_yards" also works. Unknown values retu…

### `get_college_qbr` (~231 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `limit` (number): Max rows (default 30)
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `player_name` (string): Filter by player name
- `season` (number): Filter to specific college season (2004+)
- `sort_by` (string): Sort by: total_qbr, points_added, total_epa

### `get_team_metrics` (~255 tokens)

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.

Input parameters:

- `fields` (string): Comma-separated column names to return (projection), e.g. "player_name,games,fantasy_points_ppr". Omit to return all columns. Unknown names are ignored.
- `output_format` (string): Output format: "table" (default markdown), "csv", or "jsonl". Use csv/jsonl for compact, token-efficient output on large pulls.
- `season` (number, required): NFL season year
- `sort_by` (string): Sort by any metric (descending). Common: total_epa_per_play, ppg, success_rate, neutral_pass_rate, def_epa_per_play
- `team` (string): Filter to a specific team abbreviation

### `export_excel` (~251 tokens)

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.

Input parameters:

- `draft_year`: Draft class for rookie_rankings (2026 or 2027). Default 2026.
- `kind` (string, required): Which board to export. projections = StatHead season PPG (edit Proj PPG). rankings = redraft ECR board (edit My Rank). rookie_rankings = prospect grades/board (edit My Rank). by_team = first-party by…
- `limit` (number): Max rows to write (default 300).
- `path` (string): Output file path or directory. If a directory (or omitted), a dated filename is generated there. Default dir: $STATHEAD_DIR or the current working directory.
- `position` (string): Filter to one position (QB, RB, WR, TE).

### `import_excel` (~119 tokens)

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.

Input parameters:

- `path` (string, required): Path to the .xlsx file to import (the one you exported and edited).

### `clear_overrides` (~55 tokens)

Remove custom projections/rankings overrides previously saved via import_excel, so analysis tools revert to StatHead's own model. Optionally clear just one kind.

Input parameters:

- `kind` (string): Which overrides to clear. Default: all.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp#diagnostics

## Score history

- 2026-08-03: 79
- 2026-08-02: 75
- 2026-08-01: 60
- 2026-07-31: 60
- 2026-07-30: 70
- 2026-07-28: 88
- 2026-07-27: 88
- 2026-07-26: 59

## Links

- npm package: https://www.npmjs.com/package/stathead-mcp
- Socket report: https://socket.dev/npm/package/stathead-mcp
- Repository: https://github.com/dachhack/stathead
- Changelog RSS feed: https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/dachhack-stathead-mcp/stathead-mcp
