Muffed — verified NFL stats and fantasy context
Verified NFL stats and Sleeper league context. Every figure carries its own source rank.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"muffed": {
"url": "https://muffed.ai/api/mcp"
}
}
}远程端点
https://muffed.ai/api/mcpstreamable-http它能做什么
工具清单
工具(14)
🟢get_current_insights(limit, subject)
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",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"subject": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢query_stat_leaders(metric, season, position, entity_kind, limit, ...)
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",
"properties": {
"metric": {
"type": "string"
},
"season": {
"type": "integer",
"minimum": 2016,
"maximum": 2026
},
"position": {
"type": "string"
},
"entity_kind": {
"type": "string",
"enum": [
"player",
"team",
"route",
"personnel_group",
"box_count",
"rusher_count",
"coverage_type",
"regression_rule",
"metric",
"league"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25
},
"order": {
"type": "string",
"enum": [
"desc",
"asc"
]
}
},
"required": [
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_entity_metrics(entity, entity_kind, metric, season, scope)
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",
"properties": {
"entity": {
"type": "string"
},
"entity_kind": {
"type": "string",
"enum": [
"player",
"team"
]
},
"metric": {
"type": "string"
},
"season": {
"type": "integer",
"minimum": 2016,
"maximum": 2026
},
"scope": {
"type": "string",
"enum": [
"headline",
"all"
]
}
},
"required": [
"entity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢compare_entities(a, b, entity_kind, metrics, season, ...)
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",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"entity_kind": {
"type": "string",
"enum": [
"player",
"team"
]
},
"metrics": {
"maxItems": 25,
"type": "array",
"items": {
"type": "string"
}
},
"season": {
"type": "integer",
"minimum": 2016,
"maximum": 2026
},
"all": {
"type": "boolean"
}
},
"required": [
"a",
"b"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_metric_definition(metric)
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",
"properties": {
"metric": {
"type": "string"
}
},
"required": [
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_metrics(entity_kind, season, search, limit, detail)
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",
"properties": {
"entity_kind": {
"type": "string",
"enum": [
"player",
"team",
"route",
"personnel_group",
"box_count",
"rusher_count",
"coverage_type",
"regression_rule",
"metric",
"league"
]
},
"season": {
"type": "integer",
"minimum": 2016,
"maximum": 2026
},
"search": {
"type": "string",
"maxLength": 64
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"detail": {
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢verify_claim(claims)
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",
"properties": {
"claims": {
"minItems": 1,
"maxItems": 25,
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string"
},
"entity": {
"type": "string"
},
"entity_kind": {
"type": "string",
"enum": [
"player",
"team",
"route",
"personnel_group",
"box_count",
"rusher_count",
"coverage_type",
"regression_rule",
"metric",
"league"
]
},
"season": {
"type": "integer",
"minimum": 2016,
"maximum": 2026
},
"value": {
"type": "number"
}
},
"required": [
"metric",
"entity",
"value"
]
}
}
},
"required": [
"claims"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_backfield(team)
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",
"properties": {
"team": {
"type": "string",
"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"
]
}
},
"required": [
"team"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢run_stat_query(population, window, measure, scoring, op)
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",
"properties": {
"population": {
"type": "object",
"properties": {
"entity": {
"type": "string",
"enum": [
"player",
"team"
]
},
"position": {
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 4
}
},
"exclude_position": {
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 4
}
},
"qualify": {
"type": "object",
"properties": {
"measure": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
}
},
"required": [
"measure",
"op",
"value"
],
"additionalProperties": false
},
"entity_name": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"entity"
],
"additionalProperties": false
},
"window": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "seasons"
},
"seasons": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
}
}
},
"required": [
"kind",
"seasons"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "last_n_seasons"
},
"n": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"kind",
"n"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "weeks"
},
"season": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"weeks": {
"minItems": 1,
"maxItems": 23,
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 23
}
}
},
"required": [
"kind",
"season",
"weeks"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "since_debut"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "with_team"
},
"team": {
"type": "string",
"minLength": 2,
"maxLength": 4
},
"seasons": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
}
}
},
"required": [
"kind",
"team"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "coach_tenure"
},
"coach": {
"type": "string",
"minLength": 2,
"maxLength": 60
},
"team": {
"type": "string",
"minLength": 2,
"maxLength": 4
}
},
"required": [
"kind",
"coach"
],
"additionalProperties": false
}
]
},
"measure": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"key"
],
"additionalProperties": false
},
"scoring": {
"type": "string",
"enum": [
"standard",
"half_ppr",
"ppr"
]
},
"op": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "leaders"
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "rank"
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"kind",
"direction"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "count_where"
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
}
},
"required": [
"kind",
"op",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "only_who"
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
}
},
"required": [
"kind",
"op",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "streak_each"
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
},
"n_seasons": {
"type": "integer",
"minimum": 2,
"maximum": 10
}
},
"required": [
"kind",
"op",
"value",
"n_seasons"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "share_of"
},
"part": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "seasons"
},
"seasons": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
}
}
},
"required": [
"kind",
"seasons"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "last_n_seasons"
},
"n": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"kind",
"n"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "weeks"
},
"season": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"weeks": {
"minItems": 1,
"maxItems": 23,
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 23
}
}
},
"required": [
"kind",
"season",
"weeks"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "since_debut"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "with_team"
},
"team": {
"type": "string",
"minLength": 2,
"maxLength": 4
},
"seasons": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
}
}
},
"required": [
"kind",
"team"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "coach_tenure"
},
"coach": {
"type": "string",
"minLength": 2,
"maxLength": 60
},
"team": {
"type": "string",
"minLength": 2,
"maxLength": 4
}
},
"required": [
"kind",
"coach"
],
"additionalProperties": false
}
]
}
},
"required": [
"kind",
"part"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "count_weeks_where"
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"kind",
"op",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "longest_streak"
},
"unit": {
"type": "string",
"const": "weeks"
},
"op": {
"type": "string",
"enum": [
">=",
">",
"<=",
"<",
"="
]
},
"value": {
"type": "number"
}
},
"required": [
"kind",
"unit",
"op",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "delta_between_seasons"
},
"from": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"to": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"kind",
"from",
"to"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "rank_change"
},
"from": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"to": {
"type": "integer",
"minimum": 1999,
"maximum": 2100
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"kind",
"from",
"to"
],
"additionalProperties": false
}
]
}
},
"required": [
"population",
"window",
"measure",
"op"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢sleeper_find_leagues(username, season)
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",
"properties": {
"username": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"season": {
"type": "string",
"pattern": "^\\d{4}$"
}
},
"required": [
"username"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sleeper_get_league(league_id)
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",
"properties": {
"league_id": {
"type": "string",
"pattern": "^\\d{6,24}$"
}
},
"required": [
"league_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sleeper_matchup_preview(league_id, team, week)
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",
"properties": {
"league_id": {
"type": "string",
"pattern": "^\\d{6,24}$"
},
"team": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"week": {
"type": "integer",
"minimum": 1,
"maximum": 18
}
},
"required": [
"league_id",
"team"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sleeper_roster_stories(league_id, team)
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",
"properties": {
"league_id": {
"type": "string",
"pattern": "^\\d{6,24}$"
},
"team": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"league_id",
"team"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sleeper_standings_story(league_id)
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",
"properties": {
"league_id": {
"type": "string",
"pattern": "^\\d{6,24}$"
}
},
"required": [
"league_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}推荐提示词
query_stat_leadersquery_stat_leadersget_current_insightsget_current_insightslist_metrics社区
证据