# Muffed — verified NFL stats and fantasy context

> Verified NFL stats and Sleeper league context. Every figure carries its own source rank.

- name: ai.muffed/muffed
- version: 1.0.3
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.muffed%2Fmuffed
- tools: https://api.protogrid.dev/v1/servers/ai.muffed%2Fmuffed/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "muffed": {
      "type": "http",
      "url": "https://muffed.ai/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-100% ~updated-74d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 15 of 15 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,294 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 15, about 4,294 tokens to load them all
- tool set hash: 33ff6fbbe149b7b893b163b29f6ec231
- tools last changed: 2026-10-03T01:22:08.945Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.muffed/muffed.svg)](https://protogrid.dev/servers/ai.muffed/muffed)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-03 `sleeper_get_league` changed (description)
  - before: 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.
  - after: One league's name, season, size, current week, detected scoring format, and the manager-to-roster map.
- 2026-10-03 `sleeper_find_leagues` changed (description)
  - before: 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.
  - after: Lists the NFL leagues a Sleeper username belongs to, with each league's id. Muffed stores nothing about the requester.
- 2026-10-03 `run_stat_query` changed (description)
  - before: 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.
  - after: 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. A figure that cannot be served comes back with the reason and the nearest thing covered. Fantasy measures answer in the convention `scoring` names — "standard", "half_ppr" or "ppr" — and default to half-PPR when none is named; 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 verified panel metric key ("key_player_stats.rushing.yards", "fantasy_scoring.half_ppr_points"). A panel metric key this tool does not compute is refused with the reason.
- 2026-10-03 `list_metrics` changed (description)
  - before: 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. Finding one metric by topic is a single call to search_metrics, which ranks the whole registry against the topic.
  - after: What Muffed can answer on. By default a summary of metric families with their counts and season coverage; with search or detail:true, individual metric keys. Returns keys and coverage only, never figures.
- 2026-10-03 `compare_entities` changed (description)
  - before: 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.
  - after: Two players or two teams shown side by side — by default on the metrics that matter for their position, on named metrics when `metrics` is set, and on the full set with all:true. 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 ("qb_anya.any_a") or their plain-English names. A measure outside the verified panel, such as yards per attempt, is refused with the nearest panel metrics.
- 2026-10-03 `get_entity_metrics` changed (description)
  - before: 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.
  - after: The verified figures 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. By default the headline figures for that player or team; scope "all" returns every figure held, and a named metric returns all of that metric's rows. Names are resolved against the players and teams Muffed holds; an unrecognised name returns the closest matches rather than a guess.
- 2026-10-03 `query_stat_leaders` changed (description)
  - before: 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.
  - after: 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. Takes a verified panel metric key.
- 2026-10-02 `search_metrics` added
  - The verified metrics that match a topic — e.g. 'screens', 'blitz', 'time to throw' — ranked by a text match over each metric's key, label, common names and board description. Up to 20 entries, each with its key, subject, season coverage and the board it belongs to. Keys and coverage only, never figures.
- 2026-10-02 `list_metrics` changed (description)
  - before: 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.
  - after: 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. Finding one metric by topic is a single call to search_metrics, which ranks the whole registry against the topic.

Full history: https://api.protogrid.dev/v1/servers/ai.muffed%2Fmuffed/changes

## Remotes

- https://muffed.ai/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (15)

- `compare_entities`: Two players or two teams shown side by side — by default on the metrics that matter for their position, on named metrics when `metrics` is set, and on the full set with all:true. 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 ("qb_anya.any_a") or their plain-English names. A measure outside the verified panel, such as yards per attempt, is refused with the nearest panel metrics.
- `get_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.
- `get_current_insights`: 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.
- `get_entity_metrics`: The verified figures 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. By default the headline figures for that player or team; scope "all" returns every figure held, and a named metric returns all of that metric's rows. Names are resolved against the players and teams Muffed holds; an unrecognised name returns the closest matches rather than a guess.
- `get_metric_definition`: 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.
- `list_metrics`: What Muffed can answer on. By default a summary of metric families with their counts and season coverage; with search or detail:true, individual metric keys. Returns keys and coverage only, never figures.
- `query_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. Takes a verified panel metric key.
- `run_stat_query`: 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. A figure that cannot be served comes back with the reason and the nearest thing covered.

Fantasy measures answer in the convention `scoring` names — "standard", "half_ppr" or "ppr" — and default to half-PPR when none is named; 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 verified panel metric key ("key_player_stats.rushing.yards", "fantasy_scoring.half_ppr_points"). A panel metric key this tool does not compute is refused with the reason.
- `search_metrics`: The verified metrics that match a topic — e.g. 'screens', 'blitz', 'time to throw' — ranked by a text match over each metric's key, label, common names and board description. Up to 20 entries, each with its key, subject, season coverage and the board it belongs to. Keys and coverage only, never figures.
- `sleeper_find_leagues`: Lists the NFL leagues a Sleeper username belongs to, with each league's id. Muffed stores nothing about the requester.
- `sleeper_get_league`: One league's name, season, size, current week, detected scoring format, and the manager-to-roster map.
- `sleeper_matchup_preview`: 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.
- `sleeper_roster_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.
- `sleeper_standings_story`: 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.
- `verify_claim`: 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.
