MCP 服务器

Muffed — verified NFL stats and fantasy context

ai.muffed/muffed
数据与分析 游戏 公开且可连接 MCP 2025-11-25

此 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.
只读 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 可访问外部资源 幂等
输入模式
{'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.
只读 幂等
输入模式
{'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}}}
已更改
run_stat_query
2026年9月19日 02:49
已更改
verify_claim
2026年9月19日 02:49
已更改
list_metrics
2026年9月19日 02:49
已更改
compare_entities
2026年9月19日 02:49
已更改
get_entity_metrics
2026年9月19日 02:49
已更改
query_stat_leaders
2026年9月19日 02:49
已添加
sleeper_standings_story
2026年9月17日 07:57
已添加
sleeper_roster_stories
2026年9月17日 07:57
已添加
sleeper_matchup_preview
2026年9月17日 07:57
已添加
sleeper_get_league
2026年9月17日 07:57
已添加
sleeper_find_leagues
2026年9月17日 07:57
已添加
run_stat_query
2026年9月17日 07:57
已添加
get_backfield
2026年9月17日 07:57
已添加
verify_claim
2026年9月17日 07:57
已添加
list_metrics
2026年9月17日 07:57
已添加
get_metric_definition
2026年9月17日 07:57
已添加
compare_entities
2026年9月17日 07:57
已添加
get_entity_metrics
2026年9月17日 07:57
已添加
query_stat_leaders
2026年9月17日 07:57
已添加
get_current_insights
2026年9月17日 07:57