{"sport":"nhl","brand":"PuckAPI","base_url":"https://mcp.puckapi.com","mcp_url":"https://mcp.puckapi.com/mcp","tools":[{"name":"get_standings","description":"Use when checking where teams rank in their division or conference. Returns points, wins, losses, OT losses, point%, goal differential and goals for/against per game. The possession columns (Corsi%, Fenwick%, xGF, xGA) are in the response but are not yet computed and come back null. Defaults to the most recent season with standings. Costs 2 credits.","credits":2,"category":"Basic lookup","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"conference":{"description":"Filter by conference","type":"string","enum":["Eastern","Western"]},"division":{"description":"Filter by division (e.g. Atlantic, Metropolitan, Central, Pacific)","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Defaults to current season.","type":"string"}},"additionalProperties":false}},{"name":"get_team_stats","description":"Use when you need full details for one team: record, goals for and against, and league rank. Requires a team abbreviation (use list_teams if unsure). The possession columns (Corsi%, Fenwick%, xGF, xGA) are present but not yet computed and come back null. Costs 5 credits.","credits":5,"category":"Stats + aggregation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"team":{"type":"string","description":"Team abbreviation (e.g. BUF, TOR, NYR)"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Defaults to current season.","type":"string"}},"required":["team"],"additionalProperties":false}},{"name":"list_teams","description":"Use when you need team abbreviations, or to see all 32 active NHL teams with city, conference, division, and arena. Excludes historical franchises (ATL, ARI). Cheapest tool at 1 credit.","credits":1,"category":"Static reference","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"conference":{"description":"Filter by conference","type":"string","enum":["Eastern","Western"]},"division":{"description":"Filter by division","type":"string"}},"additionalProperties":false}},{"name":"get_games","description":"Use when querying past or future games with filters. Returns scores, teams, venue, and game metadata. For upcoming-only games, prefer get_schedule (2 cr) instead. Costs 5 credits.","credits":5,"category":"Stats + aggregation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"date_from":{"description":"Start date (YYYY-MM-DD)","type":"string"},"date_to":{"description":"End date (YYYY-MM-DD)","type":"string"},"team":{"description":"Team abbreviation to filter (home or away)","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted.","type":"string"},"game_state":{"description":"Filter by game state","type":"string","enum":["FUT","LIVE","FINAL","OFF"]},"game_type":{"description":"Filter by game type","type":"string","enum":["regular","playoff","preseason"]},"limit":{"description":"Max results (default 100)","type":"integer","minimum":1,"maximum":500}},"additionalProperties":false}},{"name":"get_schedule","description":"Use when checking what games are coming up. Returns only unplayed future games for the next N days (default 7). For past games, use get_games instead. Costs 2 credits.","credits":2,"category":"Basic lookup","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"team":{"description":"Team abbreviation to filter","type":"string"},"days":{"description":"Number of days ahead to look (default 7)","type":"integer","minimum":1,"maximum":30}},"additionalProperties":false}},{"name":"get_game_detail","description":"Use when you need everything about one game: both teams' full info and all betting odds. Requires a game ID (get one from get_games or get_schedule). Odds available for 2019-20 onwards, though 2019-20 itself is sparse. The goalie_starts field is always null -- nothing populates it yet. Costs 10 credits.","credits":10,"category":"Multi-table","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game_id":{"type":"string","description":"NHL game ID (e.g. 2025020887)"}},"required":["game_id"],"additionalProperties":false}},{"name":"get_head_to_head","description":"Use when comparing two teams' history. Returns recent matchups with win/loss record. Can filter by season or get all-time. Costs 10 credits.","credits":10,"category":"Multi-table","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"team1":{"type":"string","description":"First team abbreviation (e.g. BUF)"},"team2":{"type":"string","description":"Second team abbreviation (e.g. TOR)"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Omit for all-time.","type":"string"},"limit":{"description":"Max games to return (default 20)","type":"integer","minimum":1,"maximum":100}},"required":["team1","team2"],"additionalProperties":false}},{"name":"search_players","description":"Use when looking up a player by name. Searches 3,000+ players across 16 seasons. Returns active players by default; set active=false for retired/historical. Use the returned player ID with get_player_stats for full details. Costs 2 credits.","credits":2,"category":"Basic lookup","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Player name to search for (partial match supported)"},"team":{"description":"Filter by team abbreviation","type":"string"},"position":{"description":"Filter by position","type":"string","enum":["G","D","C","LW","RW"]},"active":{"description":"Filter by active status (default: true). Set false to search active plus retired/historical players.","type":"boolean"},"limit":{"description":"Max results (default 10)","type":"integer","minimum":1,"maximum":50}},"required":["query"],"additionalProperties":false}},{"name":"get_player_stats","description":"Use when you need full details for one player: bio, team, physical attributes, and headshot. For skaters, also returns the latest season line (games, goals, assists, points, +/-, PP/SH, shooting%, TOI). For goalies, save%, GAA, GSAX, and trend data. Requires player ID from search_players. Costs 5 credits.","credits":5,"category":"Stats + aggregation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"player_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"NHL player ID"}},"required":["player_id"],"additionalProperties":false}},{"name":"get_goalie_stats","description":"Use when ranking goalies or comparing goalie performance. Returns a leaderboard sorted by save%, GAA, or wins, with a games-played filter. The advanced columns (GSAX, high-danger save%, rolling save%, trend, rest days) are present in the response but are not yet computed and come back null. Costs 5 credits.","credits":5,"category":"Stats + aggregation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"team":{"description":"Filter by team abbreviation","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Defaults to the most recent season with stats, which is the current season once it is under way and the previous one before that. The season actually used is echoed in filters.season.","type":"string"},"min_games":{"description":"Minimum games played (default 10)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sort_by":{"description":"Sort metric (default save_pct)","type":"string","enum":["save_pct","gaa","wins"]},"limit":{"description":"Max results (default 20)","type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}},{"name":"get_skater_season_stats","description":"Use when ranking skaters or comparing scoring. Returns a leaderboard sorted by points, goals, assists, plus/minus, or shots, with a games-played filter. Includes power play and shorthanded production, shooting%, faceoff%, and average time on ice. Costs 5 credits.","credits":5,"category":"Stats + aggregation","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"team":{"description":"Filter by team abbreviation","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Defaults to the most recent season with stats, which is the current season once it is under way and the previous one before that. The season actually used is echoed in filters.season.","type":"string"},"min_games":{"description":"Minimum games played (default 10)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sort_by":{"description":"Sort metric (default points)","type":"string","enum":["points","goals","assists","plus_minus","shots"]},"limit":{"description":"Max results (default 20)","type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}},{"name":"get_odds","description":"Use when checking betting lines for a game. Returns moneylines, spreads, and totals from DraftKings, FanDuel, BetMGM, and ESPN BET. Filter by bookmaker or snapshot type (opening/closing). Odds available for 2019-20 onwards. Costs 10 credits.","credits":10,"category":"Multi-table","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game_id":{"type":"string","description":"NHL game ID (e.g. 2025020887)"},"bookmaker":{"description":"Filter by bookmaker key (e.g. draftkings, fanduel, betmgm). Lowercase.","type":"string"},"snapshot_type":{"description":"Filter by snapshot type: opening (game-day morning lines) or closing (final pre-game lines). Default returns both.","type":"string","enum":["opening","closing"]}},"required":["game_id"],"additionalProperties":false}},{"name":"get_line_movement","description":"Use when analyzing how betting lines moved over time. Returns time-series snapshots grouped by bookmaker. Most expensive tool (25 cr). If you only need current lines, use get_odds (10 cr) instead.","credits":25,"category":"Time-series","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game_id":{"type":"string","description":"NHL game ID"},"bookmaker":{"description":"Filter by specific bookmaker key (lowercase)","type":"string"}},"required":["game_id"],"additionalProperties":false}},{"name":"get_plays","description":"Use for play-by-play events: goals, shots, misses, blocks, faceoffs, hits, giveaways, takeaways, penalties, with rink coordinates, strength state (5v5, 5v4), zone, and the players involved. Filter by game, season, team, player (any role), event type, strength, zone, or period. Requires at least one of game_id, season or player_id. Paginate with offset. Costs 10 credits.","credits":10,"category":"Multi-table","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game_id":{"description":"NHL game ID (e.g. 2025020887)","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025).","type":"string"},"team":{"description":"Team abbreviation that owns the event (e.g. BUF)","type":"string"},"player_id":{"description":"NHL player ID; matches the player in any role on the event","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"description":"Event type","type":"string","enum":["goal","shot-on-goal","missed-shot","blocked-shot","faceoff","hit","giveaway","takeaway","penalty","delayed-penalty","stoppage","period-start","period-end","game-end","shootout-complete","failed-shot-attempt"]},"strength":{"description":"Skater strength from the event owner's view, e.g. 5v5, 5v4, 4v5","type":"string"},"zone":{"description":"Zone: O offensive, N neutral, D defensive","type":"string","enum":["O","N","D"]},"period":{"description":"Period number (4+ is overtime)","type":"integer","minimum":1,"maximum":10},"shot_attempts_only":{"description":"Only goals, shots on goal, missed shots and blocked shots (Corsi events)","type":"boolean"},"limit":{"description":"Max events (default 200)","type":"integer","minimum":1,"maximum":1000},"offset":{"description":"Pagination offset","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},{"name":"get_shot_map","description":"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.","credits":10,"category":"Multi-table","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game_id":{"description":"NHL game ID","type":"string"},"season":{"description":"Season ID, 8-digit (e.g. 20242025); use with team","type":"string"},"team":{"description":"Team abbreviation; use with season","type":"string"},"player_id":{"description":"NHL player ID of the shooter","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"strength":{"description":"Strength filter, e.g. 5v5","type":"string"},"limit":{"description":"Max shots per page (default 1000)","type":"integer","minimum":1,"maximum":2000},"offset":{"description":"Pagination offset; follow next_offset for a full season","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}}]}