Skip to main content
Glama

Muffed — verified NFL stats and fantasy context

Compute an NFL statistic on request

run_stat_query
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opYes
windowYes
measureYes
scoringNo
populationYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • addedInput schema / properties / scoring
      Added value: +{
      +  "enum": [
      +    "standard",
      +    "half_ppr",
      +    "ppr"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / op / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "k": {
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "const": "leaders",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "direction": {
      -        "enum": [
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "k": {
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "const": "rank",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "direction"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "count_where",
      -        "type": "string"
      -      },
      -      "op": {
      -        "enum": [
      -          ">=",
      -          ">",
      -          "<=",
      -          "<",
      -          "="
      -        ],
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "op",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "only_who",
      -        "type": "string"
      -      },
      -      "op": {
      -        "enum": [
      -          ">=",
      -          ">",
      -          "<=",
      -          "<",
      -          "="
      -        ],
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "op",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "streak_each",
      -        "type": "string"
      -      },
      -      "n_seasons": {
      -        "maximum": 10,
      -        "minimum": 2,
      -        "type": "integer"
      -      },
      -      "op": {
      -        "enum": [
      -          ">=",
      -          ">",
      -          "<=",
      -          "<",
      -          "="
      -        ],
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "op",
      -      "value",
      -      "n_seasons"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "share_of",
      -        "type": "string"
      -      },
      -      "part": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "seasons",
      -                "type": "string"
      -              },
      -              "seasons": {
      -                "items": {
      -                  "maximum": 2100,
      -                  "minimum": 1999,
      -                  "type": "integer"
      -                },
      -                "maxItems": 20,
      -                "minItems": 1,
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "kind",
      -              "seasons"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "last_n_seasons",
      -                "type": "string"
      -              },
      -              "n": {
      -                "maximum": 20,
      -                "minimum": 1,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "kind",
      -              "n"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "weeks",
      -                "type": "string"
      -              },
      -              "season": {
      -                "maximum": 2100,
      -                "minimum": 1999,
      -                "type": "integer"
      -              },
      -              "weeks": {
      -                "items": {
      -                  "maximum": 23,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "maxItems": 23,
      -                "minItems": 1,
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "kind",
      -              "season",
      -              "weeks"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "since_debut",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "kind"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "with_team",
      -                "type": "string"
      -              },
      -              "seasons": {
      -                "items": {
      -                  "maximum": 2100,
      -                  "minimum": 1999,
      -                  "type": "integer"
      -                },
      -                "maxItems": 20,
      -                "minItems": 1,
      -                "type": "array"
      -              },
      -              "team": {
      -                "maxLength": 4,
      -                "minLength": 2,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "kind",
      -              "team"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "coach": {
      -                "maxLength": 60,
      -                "minLength": 2,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "coach_tenure",
      -                "type": "string"
      -              },
      -              "team": {
      -                "maxLength": 4,
      -                "minLength": 2,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "kind",
      -              "coach"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "part"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "k": {
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "leaders",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "direction": {
      +        "enum": [
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "k": {
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "rank",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "direction"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "count_where",
      +        "type": "string"
      +      },
      +      "op": {
      +        "enum": [
      +          ">=",
      +          ">",
      +          "<=",
      +          "<",
      +          "="
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "op",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "only_who",
      +        "type": "string"
      +      },
      +      "op": {
      +        "enum": [
      +          ">=",
      +          ">",
      +          "<=",
      +          "<",
      +          "="
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "op",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "streak_each",
      +        "type": "string"
      +      },
      +      "n_seasons": {
      +        "maximum": 10,
      +        "minimum": 2,
      +        "type": "integer"
      +      },
      +      "op": {
      +        "enum": [
      +          ">=",
      +          ">",
      +          "<=",
      +          "<",
      +          "="
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "op",
      +      "value",
      +      "n_seasons"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "share_of",
      +        "type": "string"
      +      },
      +      "part": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "seasons",
      +                "type": "string"
      +              },
      +              "seasons": {
      +                "items": {
      +                  "maximum": 2100,
      +                  "minimum": 1999,
      +                  "type": "integer"
      +                },
      +                "maxItems": 20,
      +                "minItems": 1,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "seasons"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "last_n_seasons",
      +                "type": "string"
      +              },
      +              "n": {
      +                "maximum": 20,
      +                "minimum": 1,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "n"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "weeks",
      +                "type": "string"
      +              },
      +              "season": {
      +                "maximum": 2100,
      +                "minimum": 1999,
      +                "type": "integer"
      +              },
      +              "weeks": {
      +                "items": {
      +                  "maximum": 23,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "maxItems": 23,
      +                "minItems": 1,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "season",
      +              "weeks"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "since_debut",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "with_team",
      +                "type": "string"
      +              },
      +              "seasons": {
      +                "items": {
      +                  "maximum": 2100,
      +                  "minimum": 1999,
      +                  "type": "integer"
      +                },
      +                "maxItems": 20,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "team": {
      +                "maxLength": 4,
      +                "minLength": 2,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "team"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "coach": {
      +                "maxLength": 60,
      +                "minLength": 2,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "coach_tenure",
      +                "type": "string"
      +              },
      +              "team": {
      +                "maxLength": 4,
      +                "minLength": 2,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "coach"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "part"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "k": {
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "count_weeks_where",
      +        "type": "string"
      +      },
      +      "op": {
      +        "enum": [
      +          ">=",
      +          ">",
      +          "<=",
      +          "<",
      +          "="
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "op",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "longest_streak",
      +        "type": "string"
      +      },
      +      "op": {
      +        "enum": [
      +          ">=",
      +          ">",
      +          "<=",
      +          "<",
      +          "="
      +        ],
      +        "type": "string"
      +      },
      +      "unit": {
      +        "const": "weeks",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "unit",
      +      "op",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "from": {
      +        "maximum": 2100,
      +        "minimum": 1999,
      +        "type": "integer"
      +      },
      +      "k": {
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "delta_between_seasons",
      +        "type": "string"
      +      },
      +      "to": {
      +        "maximum": 2100,
      +        "minimum": 1999,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "from",
      +      "to"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "from": {
      +        "maximum": 2100,
      +        "minimum": 1999,
      +        "type": "integer"
      +      },
      +      "k": {
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "rank_change",
      +        "type": "string"
      +      },
      +      "to": {
      +        "maximum": 2100,
      +        "minimum": 1999,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "from",
      +      "to"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Added

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already include readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, but the description adds valuable behavioral context beyond these: it explains that the tool computes figures from nflverse data, returns the reason and nearest coverage when a figure cannot be served, carries execution details (method, population size, measure definition, data version), and defaults fantasy scoring to half-PPR while stating the used scoring in responses. This enriches the agent's understanding of what to expect from the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but well-structured, starting with a clear directive ('Call this for any question about NFL statistics...'), then elaborating on computation logic and parameter roles. Each sentence adds meaningful information: the warning about memory-based figures, the computation process, and the scoring convention detail. It is not verbose or redundant; it earns its length by providing essential guidance for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is comprehensive for a tool with no output schema and complex nested parameters. It covers what the tool does, how it works, what to expect in responses (executed method, population size, measure definition, data version), and edge cases (unservable figures return reason and nearest coverage). Given the lack of output schema, the description adequately prepares the agent for invocation and interpretation, though it could have been slightly more explicit about the exact structure of the 'operation' object in parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the four required parameters as a population (position, qualifying threshold), a window (seasons, weeks, team span, coach tenure), a named measure, and an operation (leaders, rank, count, only-who, per-season streak, share of total). It also details the 'scoring' parameter (standard, half_ppr, ppr) and its default (half-PPR). While it does not explain every sub-field (e.g., 'k', 'direction'), the core semantics of each parameter are clarified, which is significant given the complex nested object schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes NFL statistics on request, enumerating the types of questions it answers (leaders, rankings, splits, career/team spans) and explicitly declaring it the only surface that computes such figures. It distinguishes itself from sibling tools like query_stat_leaders and verify_claim by emphasizing computed (not verified) results, making its unique role clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use this tool for any NFL statistics question including when the answer is believed known, and warns against relying on memory. It provides concrete when-not guidance (e.g., figures from memory are unsourced) and differentiates from related tools by stating it computes rather than looks up, and that responses are labelled as computed, not verified. This effectively guides selection among siblings like verify_claim and query_stat_leaders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation4/5

Most tools target a distinct resource, and descriptions draw clear boundaries between verified lookups, computed queries, editorial insights, and Sleeper league data. A few overlaps remain — compare_entities and run_stat_query both handle comparisons, and query_stat_leaders and run_stat_query both return leaders — but the verified-vs-computed distinction prevents serious ambiguity.

Naming Consistency4/5

Non-Sleeper tools consistently use verb_noun patterns like get_entity_metrics, list_metrics, run_stat_query, and verify_claim. The sleeper_* family is clearly prefixed but internally mixes verb forms such as sleeper_get_league with noun forms such as sleeper_roster_stories and sleeper_standings_story, a minor but noticeable deviation.

Tool Count5/5

14 tools is well within the ideal range and each tool earns its place: core verified stats and metrics tools, Sleeper fantasy context tools, plus insights and claim verification. Nothing feels redundant or like padding.

Completeness5/5

The surface covers the stated domain thoroughly: metric discovery and definition, per-entity verified stats, comparison, computed ad-hoc queries, claim verification, editorial insights, backfields, and the main Sleeper fantasy surfaces like leagues, rosters, matchups, and standings. The tool explicitly avoids projections and recommendations, so no obvious dead-end remains for its purpose.