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일 2:49 AM
변경됨
verify_claim
2026년 9월 19일 2:49 AM
변경됨
list_metrics
2026년 9월 19일 2:49 AM
변경됨
compare_entities
2026년 9월 19일 2:49 AM
변경됨
get_entity_metrics
2026년 9월 19일 2:49 AM
변경됨
query_stat_leaders
2026년 9월 19일 2:49 AM
추가됨
sleeper_standings_story
2026년 9월 17일 7:57 AM
추가됨
sleeper_roster_stories
2026년 9월 17일 7:57 AM
추가됨
sleeper_matchup_preview
2026년 9월 17일 7:57 AM
추가됨
sleeper_get_league
2026년 9월 17일 7:57 AM
추가됨
sleeper_find_leagues
2026년 9월 17일 7:57 AM
추가됨
run_stat_query
2026년 9월 17일 7:57 AM
추가됨
get_backfield
2026년 9월 17일 7:57 AM
추가됨
verify_claim
2026년 9월 17일 7:57 AM
추가됨
list_metrics
2026년 9월 17일 7:57 AM
추가됨
get_metric_definition
2026년 9월 17일 7:57 AM
추가됨
compare_entities
2026년 9월 17일 7:57 AM
추가됨
get_entity_metrics
2026년 9월 17일 7:57 AM
추가됨
query_stat_leaders
2026년 9월 17일 7:57 AM
추가됨
get_current_insights
2026년 9월 17일 7:57 AM