Skip to main content
Glama

Shot map

get_shot_map
Read-onlyIdempotent

Use when you want shot locations rather than a list of events: every shot attempt with rink coordinates, shot type, strength, shooter and goalie. Filter by game, or by season plus a team or player. Paginated: follow next_offset, since a season runs past one page and pages are chronological. Costs 10 credits.

Input Schema

NameRequiredDescriptionDefault
teamNoTeam abbreviation; use with season
limitNoMax shots per page (default 1000)
leagueNoLeague. Defaults to nhl. One of: nhl, pwhl, ohl, qmjhl, echl, ahl.
offsetNoPagination offset; follow next_offset for a full season
seasonNoSeason ID, 8-digit (e.g. 20242025); use with team
game_idNoNHL game ID
strengthNoStrength filter, e.g. 5v5
player_idNoNHL player ID of the shooter

Output Schema

NameRequiredDescriptionDefault
countYes
shotsYes
summaryYes
next_offsetYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / league / description
      Previous value: -"League. Defaults to nhl. One of: nhl, pwhl, ohl, qmjhl, echl."New value: +"League. Defaults to nhl. One of: nhl, pwhl, ohl, qmjhl, echl, ahl."
    • changedInput schema / properties / league / enum
      Previous value: -[
      -  "nhl",
      -  "pwhl",
      -  "ohl",
      -  "qmjhl",
      -  "echl"
      -]New value: +[
      +  "nhl",
      +  "pwhl",
      +  "ohl",
      +  "qmjhl",
      +  "echl",
      +  "ahl"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / league / description
      Previous value: -"League. Defaults to nhl. One of: nhl, pwhl."New value: +"League. Defaults to nhl. One of: nhl, pwhl, ohl, qmjhl, echl."
    • changedInput schema / properties / league / enum
      Previous value: -[
      -  "nhl",
      -  "pwhl"
      -]New value: +[
      +  "nhl",
      +  "pwhl",
      +  "ohl",
      +  "qmjhl",
      +  "echl"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / league
      Added value: +{
      +  "description": "League. Defaults to nhl. One of: nhl, pwhl.",
      +  "enum": [
      +    "nhl",
      +    "pwhl"
      +  ],
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses pagination behavior (pages are chronological, follow next_offset, a season exceeds one page) and a concrete cost of 10 credits. These are exactly the operational traits an agent needs before calling a large paginated endpoint.

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

Conciseness5/5

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

Four short sentences, each doing distinct work: purpose+contrast, return fields, filtering modes, then pagination and cost. Front-loaded with the selection cue, no filler.

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

Completeness5/5

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

With an output schema present, the description needn't explain return shape — yet it still summarizes the key fields, and it covers pagination and cost, the two things an agent could otherwise get wrong on a season-length query. Nothing material is missing for correct invocation.

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 100%, so baseline is 3; the description adds that game_id is an alternative to the season+team/player combination, which conveys the mutual-exclusivity and pairing rules an agent would otherwise have to infer. It doesn't document limit/offset/strength syntax beyond what the schema already says.

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+resource (shot attempts with rink coordinates) and explicitly contrasts it with the alternative output shape ('rather than a list of events'), which cleanly separates it from get_plays and get_game_detail. The enumerated return fields (shot type, strength, shooter, goalie) further pin down what 'shot map' means.

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?

'Use when you want shot locations rather than a list of events' gives a clear selection condition, and 'Filter by game, or by season plus a team or player' shows the two valid calling modes. It stops short of naming a specific sibling tool as the fallback, so the routing is implied rather than fully 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.