Skip to main content
Glama

Muffed — verified NFL stats and fantasy context

Compute an NFL statistic on request

run_stat_query
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
opYes
windowYes
measureYes
scoringNo
populationYes

Schema Changelog

Changes observed during successful MCP inspections.

  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
Behavior5/5

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

Beyond the annotations (readOnly/idempotent/non-destructive, closed-world), the description discloses what each response carries (executed method, population size, measure definition, data version), that figures are labeled computed-not-verified, that failures return a reason plus the nearest covered result, and the scoring default (half-PPR) with its reporting behavior. This is substantial behavioral context the annotations do not supply.

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?

Front-loads the core purpose and the panel-vs-computed distinction, then adds the response contract and scoring convention. Dense and nearly waste-free, though the scoring-paragraph and negative-lookup details could be tightened slightly.

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?

For a tool with a very large nested schema, no output schema, and zero schema descriptions, the description covers purpose, response shape, scoring semantics, and failure behavior well. The remaining gap is enumerating the less obvious op/part kinds, which an agent must infer from the schema's const values alone.

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 coverage is 0%, so the description carries the full parameter burden, which it largely does: it explains measure.key's accepted forms (measure name vs. verified panel metric key), the population (position, qualifying threshold), the window (seasons, weeks, team span, coach tenure), and the operation families. It does not cover every op variant (delta_between_seasons, rank_change, count_weeks_where, longest_streak, share_of parts), leaving some nested branches undocumented.

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?

States a specific verb (computes) and resource (an NFL figure) and explicitly frames it as a query-driven computation rather than a lookup, distinguishing it from the pre-computed verified panel and, by implication, siblings like query_stat_leaders and get_entity_metrics. An agent can identify the tool's role without opening the schema.

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

Usage Guidelines4/5

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

Gives clear conditions for use — 'answers questions the verified panel has no pre-computed row for' with concrete examples (qualified superlatives, multi-season streaks, derived rates) — and notes that unserved figures return a reason plus the nearest covered alternative. It stops short of naming specific sibling tools (e.g. query_stat_leaders, get_entity_metrics) as the preferred alternatives, so routing is inferred rather than explicit.

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.