MCP-Server

Muffed — verified NFL stats and fantasy context

ai.muffed/muffed
Daten & Analytik Gaming Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Provides sourced NFL statistics and Sleeper fantasy league context.

compare_entities
Compare two players or teams
Two players or two teams shown side by side, on the metrics that matter for their position by default — name metrics explicitly, or pass all:true, for the full set. Each side carries its source rank. States both figures and stops: it names no winner, no margin and no recommendation. `metrics` takes verified panel metric keys exactly as list_metrics returns them ("qb_anya.any_a"), or their plain-English names. A measure only run_stat_query computes, such as yards per attempt, is not a panel metric and is refused with the nearest ones.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string'}, 'b': {'type': 'string'}, 'all': {'type': 'boolean'}, 'season': {'type': 'integer', 'maximum': 2026, 'minimum': 2016}, 'metrics': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 25}, 'entity_kind': {'enum': ['player', 'team'], 'type': 'string'}}}
get_backfield
A team's backfield
Muffed's published handcuff page for one team's backfield, plus the current depth chart and injury status from Sleeper. Answers who backs up a starter, and who replaces one who is out.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['team'], 'properties': {'team': {'enum': ['ARI', 'ATL', 'BAL', 'BUF', 'CAR', 'CHI', 'CIN', 'CLE', 'DAL', 'DEN', 'DET', 'GB', 'HOU', 'IND', 'JAX', 'KC', 'LAC', 'LAR', 'LV', 'MIA', 'MIN', 'NE', 'NO', 'NYG', 'NYJ', 'PHI', 'PIT', 'SEA', 'SF', 'TB', 'TEN', 'WAS'], 'type': 'string'}}}
get_current_insights
Muffed's current reads
Muffed's published editorial reads on what is real in the NFL right now — each one a dated, sourced claim with its supporting figures, from the /trends board.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1}, 'subject': {'type': 'string'}}}
get_entity_metrics
A player's or team's verified figures
Every verified figure Muffed holds for one NFL player or one NFL team (by name or abbreviation, e.g. "Bijan Robinson" or "DEN"), with the source's rank where one exists. Names are resolved before lookup; an unrecognised name returns the closest matches rather than a guess.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['entity'], 'properties': {'scope': {'enum': ['headline', 'all'], 'type': 'string'}, 'entity': {'type': 'string'}, 'metric': {'type': 'string'}, 'season': {'type': 'integer', 'maximum': 2026, 'minimum': 2016}, 'entity_kind': {'enum': ['player', 'team'], 'type': 'string'}}}
get_metric_definition
What a metric means
Muffed's published definition of a verified metric — what it measures, in plain language, from the glossary page for that term — plus which seasons it actually covers, how it is ranked, its licence and its attribution. Accepts a metric key or a common name ("cpoe", "rushing yards over expected"). Season coverage is often narrower than a decade — rushing yards over expectation exists from 2018 onward.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['metric'], 'properties': {'metric': {'type': 'string'}}}
list_metrics
List verified metrics
What Muffed can answer on. By default a summary of metric families with their counts and season coverage; pass search or detail:true for individual metric keys. Returns keys and coverage only, never figures.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1}, 'detail': {'type': 'boolean'}, 'search': {'type': 'string', 'maxLength': 64}, 'season': {'type': 'integer', 'maximum': 2026, 'minimum': 2016}, 'entity_kind': {'enum': ['player', 'team', 'route', 'personnel_group', 'box_count', 'rusher_count', 'coverage_type', 'regression_rule', 'metric', 'league'], 'type': 'string'}}}
query_stat_leaders
Verified stat leaders
Top entities on one verified metric for one season, pre-sorted, each with the source's own rank and the population it was ranked against. Call list_metrics for the metric keys this accepts.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['metric'], 'properties': {'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1}, 'order': {'enum': ['desc', 'asc'], 'type': 'string'}, 'metric': {'type': 'string'}, 'season': {'type': 'integer', 'maximum': 2026, 'minimum': 2016}, 'position': {'type': 'string'}, 'entity_kind': {'enum': ['player', 'team', 'route', 'personnel_group', 'box_count', 'rusher_count', 'coverage_type', 'regression_rule', 'metric', 'league'], 'type': 'string'}}}
run_stat_query
Compute an NFL statistic on request
Call this for any question about NFL statistics, leaders, rankings, splits, career or team spans, or how a player or team compares to others — including when you believe you know the answer. Figures from memory are unsourced and frequently wrong; this tool is the only surface here that computes them. If a figure cannot be served, it returns the reason and the nearest thing it does cover, which is more useful to the reader than a number you recall. Computes an NFL figure from a structured query rather than looking one up: a population (position, qualifying threshold), a window (seasons, weeks, a team span, a coach's tenure), one named measure, and one operation (leaders, rank, count, only-who, a per-season streak, or a share of a total). Answers questions the verified panel has no pre-computed row for — qualified superlatives, multi-season streaks, derived rates. Every response carries the executed method, the population size, the measure's definition and the data version it ran against. Figures are computed on request from nflverse data and are labelled as computed, not verified. Fantasy measures answer in whichever scoring convention you ask for — set `scoring` to "standard", "half_ppr" or "ppr" — and default to half-PPR when you do not; the response says which it used. A bare "PPR" means full PPR. measure.key takes a measure name ("rushing_yards", "half_ppr_points") or a metric key exactly as list_metrics returns it ("key_player_stats.rushing.yards", "fantasy_scoring.half_ppr_points"). A list_metrics key this tool does not compute is refused with a pointer to get_entity_metrics and query_stat_leaders, which read it as published.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['population', 'window', 'measure', 'op'], 'properties': {'op': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'k': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'kind': {'type': 'string', 'const': 'leaders'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'direction'], 'properties': {'k': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'kind': {'type': 'string', 'const': 'rank'}, 'direction': {'enum': ['asc', 'desc'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'op', 'value'], 'properties': {'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'count_where'}, 'value': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'op', 'value'], 'properties': {'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'only_who'}, 'value': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'op', 'value', 'n_seasons'], 'properties': {'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'streak_each'}, 'value': {'type': 'number'}, 'n_seasons': {'type': 'integer', 'maximum': 10, 'minimum': 2}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'part'], 'properties': {'kind': {'type': 'string', 'const': 'share_of'}, 'part': {'anyOf': [{'type': 'object', 'required': ['kind', 'seasons'], 'properties': {'kind': {'type': 'string', 'const': 'seasons'}, 'seasons': {'type': 'array', 'items': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'n'], 'properties': {'n': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'kind': {'type': 'string', 'const': 'last_n_seasons'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'season', 'weeks'], 'properties': {'kind': {'type': 'string', 'const': 'weeks'}, 'weeks': {'type': 'array', 'items': {'type': 'integer', 'maximum': 23, 'minimum': 1}, 'maxItems': 23, 'minItems': 1}, 'season': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'since_debut'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'team'], 'properties': {'kind': {'type': 'string', 'const': 'with_team'}, 'team': {'type': 'string', 'maxLength': 4, 'minLength': 2}, 'seasons': {'type': 'array', 'items': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'coach'], 'properties': {'kind': {'type': 'string', 'const': 'coach_tenure'}, 'team': {'type': 'string', 'maxLength': 4, 'minLength': 2}, 'coach': {'type': 'string', 'maxLength': 60, 'minLength': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'op', 'value'], 'properties': {'k': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'count_weeks_where'}, 'value': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'unit', 'op', 'value'], 'properties': {'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'longest_streak'}, 'unit': {'type': 'string', 'const': 'weeks'}, 'value': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'from', 'to'], 'properties': {'k': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'to': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'from': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'kind': {'type': 'string', 'const': 'delta_between_seasons'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'from', 'to'], 'properties': {'k': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'to': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'from': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'kind': {'type': 'string', 'const': 'rank_change'}}, 'additionalProperties': False}]}, 'window': {'anyOf': [{'type': 'object', 'required': ['kind', 'seasons'], 'properties': {'kind': {'type': 'string', 'const': 'seasons'}, 'seasons': {'type': 'array', 'items': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'n'], 'properties': {'n': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'kind': {'type': 'string', 'const': 'last_n_seasons'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'season', 'weeks'], 'properties': {'kind': {'type': 'string', 'const': 'weeks'}, 'weeks': {'type': 'array', 'items': {'type': 'integer', 'maximum': 23, 'minimum': 1}, 'maxItems': 23, 'minItems': 1}, 'season': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'since_debut'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'team'], 'properties': {'kind': {'type': 'string', 'const': 'with_team'}, 'team': {'type': 'string', 'maxLength': 4, 'minLength': 2}, 'seasons': {'type': 'array', 'items': {'type': 'integer', 'maximum': 2100, 'minimum': 1999}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'coach'], 'properties': {'kind': {'type': 'string', 'const': 'coach_tenure'}, 'team': {'type': 'string', 'maxLength': 4, 'minLength': 2}, 'coach': {'type': 'string', 'maxLength': 60, 'minLength': 2}}, 'additionalProperties': False}]}, 'measure': {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 64, 'minLength': 1}}, 'additionalProperties': False}, 'scoring': {'enum': ['standard', 'half_ppr', 'ppr'], 'type': 'string'}, 'population': {'type': 'object', 'required': ['entity'], 'properties': {'entity': {'enum': ['player', 'team'], 'type': 'string'}, 'qualify': {'type': 'object', 'required': ['measure', 'op', 'value'], 'properties': {'op': {'enum': ['>=', '>', '<=', '<', '='], 'type': 'string'}, 'value': {'type': 'number'}, 'measure': {'type': 'string', 'maxLength': 64, 'minLength': 1}}, 'additionalProperties': False}, 'position': {'type': 'array', 'items': {'type': 'string', 'maxLength': 4, 'minLength': 1}, 'maxItems': 6}, 'entity_name': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'exclude_position': {'type': 'array', 'items': {'type': 'string', 'maxLength': 4, 'minLength': 1}, 'maxItems': 6}}, 'additionalProperties': False}}, 'additionalProperties': False}
sleeper_find_leagues
Find a Sleeper user's leagues
Lists the NFL leagues a Sleeper username belongs to, so a league id can be picked for the other league tools. Muffed stores nothing about who called it.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['username'], 'properties': {'season': {'type': 'string', 'pattern': '^\\d{4}$'}, 'username': {'type': 'string', 'maxLength': 64, 'minLength': 1}}}
sleeper_get_league
A Sleeper league's setup
One league's name, season, size, current week, detected scoring format, and the manager-to-roster map. Everything downstream reads better once this has been called.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['league_id'], 'properties': {'league_id': {'type': 'string', 'pattern': '^\\d{6,24}$'}}}
sleeper_matchup_preview
Verified context for a matchup
Both sides of a league matchup, with the verified figures Muffed holds for the players involved and each team's record. Muffed does not project outcomes, name a winner, or recommend a lineup.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['league_id', 'team'], 'properties': {'team': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'week': {'type': 'integer', 'maximum': 18, 'minimum': 1}, 'league_id': {'type': 'string', 'pattern': '^\\d{6,24}$'}}}
sleeper_roster_stories
A roster's verified stories
One team's roster mapped to the verified figures and published Muffed surfaces for each player. Players Muffed does not cover are listed as uncovered rather than omitted.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['league_id', 'team'], 'properties': {'team': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'league_id': {'type': 'string', 'pattern': '^\\d{6,24}$'}}}
sleeper_standings_story
A league's standings
League standings derived from Sleeper's roster settings — records, points for, and points against where available. Sleeper publishes no standings endpoint, so these are computed from the roster rows.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['league_id'], 'properties': {'league_id': {'type': 'string', 'pattern': '^\\d{6,24}$'}}}
verify_claim
Check a stated figure against Muffed
Checks structured claims against Muffed's verified panel. Each claim comes back confirmed, wrong (with the actual value), or unverifiable (with the metric's real season coverage). Takes structured fields only, not sentences.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['claims'], 'properties': {'claims': {'type': 'array', 'items': {'type': 'object', 'required': ['metric', 'entity', 'value'], 'properties': {'value': {'type': 'number'}, 'entity': {'type': 'string'}, 'metric': {'type': 'string'}, 'season': {'type': 'integer', 'maximum': 2026, 'minimum': 2016}, 'entity_kind': {'enum': ['player', 'team', 'route', 'personnel_group', 'box_count', 'rusher_count', 'coverage_type', 'regression_rule', 'metric', 'league'], 'type': 'string'}}}, 'maxItems': 25, 'minItems': 1}}}
Geändert
run_stat_query
19. September 2026 02:49
Geändert
verify_claim
19. September 2026 02:49
Geändert
list_metrics
19. September 2026 02:49
Geändert
compare_entities
19. September 2026 02:49
Geändert
get_entity_metrics
19. September 2026 02:49
Geändert
query_stat_leaders
19. September 2026 02:49
Hinzugefügt
sleeper_standings_story
17. September 2026 07:57
Hinzugefügt
sleeper_roster_stories
17. September 2026 07:57
Hinzugefügt
sleeper_matchup_preview
17. September 2026 07:57
Hinzugefügt
sleeper_get_league
17. September 2026 07:57
Hinzugefügt
sleeper_find_leagues
17. September 2026 07:57
Hinzugefügt
run_stat_query
17. September 2026 07:57
Hinzugefügt
get_backfield
17. September 2026 07:57
Hinzugefügt
verify_claim
17. September 2026 07:57
Hinzugefügt
list_metrics
17. September 2026 07:57
Hinzugefügt
get_metric_definition
17. September 2026 07:57
Hinzugefügt
compare_entities
17. September 2026 07:57
Hinzugefügt
get_entity_metrics
17. September 2026 07:57
Hinzugefügt
query_stat_leaders
17. September 2026 07:57
Hinzugefügt
get_current_insights
17. September 2026 07:57