Servidor MCP

Muffed — verified NFL stats and fantasy context

ai.muffed/muffed
Datos y analítica Gaming Público y accesible MCP 2025-11-25

Qué hace este MCP

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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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}}}
Modificado
run_stat_query
19 de September de 2026 a las 02:49
Modificado
verify_claim
19 de September de 2026 a las 02:49
Modificado
list_metrics
19 de September de 2026 a las 02:49
Modificado
compare_entities
19 de September de 2026 a las 02:49
Modificado
get_entity_metrics
19 de September de 2026 a las 02:49
Modificado
query_stat_leaders
19 de September de 2026 a las 02:49
Añadido
sleeper_standings_story
17 de September de 2026 a las 07:57
Añadido
sleeper_roster_stories
17 de September de 2026 a las 07:57
Añadido
sleeper_matchup_preview
17 de September de 2026 a las 07:57
Añadido
sleeper_get_league
17 de September de 2026 a las 07:57
Añadido
sleeper_find_leagues
17 de September de 2026 a las 07:57
Añadido
run_stat_query
17 de September de 2026 a las 07:57
Añadido
get_backfield
17 de September de 2026 a las 07:57
Añadido
verify_claim
17 de September de 2026 a las 07:57
Añadido
list_metrics
17 de September de 2026 a las 07:57
Añadido
get_metric_definition
17 de September de 2026 a las 07:57
Añadido
compare_entities
17 de September de 2026 a las 07:57
Añadido
get_entity_metrics
17 de September de 2026 a las 07:57
Añadido
query_stat_leaders
17 de September de 2026 a las 07:57
Añadido
get_current_insights
17 de September de 2026 a las 07:57