compare_players
ChatGPTSide-by-side comparison of 2-5 players in one season. Omit metrics to get a position-appropriate default set. Metrics that do not apply to a player's position are null and listed in not_applicable. best_by_metric names the leader for each metric (respecting lower-is-better metrics like interceptions). split compares only games matching it (e.g. both QBs in road games); season_to compares careers or several seasons. Available metrics by position: any position: carries, rushing_yards, rushing_tds, rushing_first_downs, rushing_epa, yards_per_carry, epa_per_rush, rush_success_rate, explosive_rush_rate, receptions, targets, receiving_yards, receiving_tds, receiving_air_yards, receiving_yards_after_catch, receiving_first_downs, receiving_epa, catch_rate, receiving_first_down_rate, yards_per_reception, yards_per_target, target_share, air_yards_share, wopr, racr, epa_per_target, rz_targets, rz_target_share, rz_carries, rz_carry_share, inside10_carries, inside10_targets, inside5_carries, inside10_opportunity_share, targets_behind_los, catch_rate_behind_los, targets_short, catch_rate_short, targets_intermediate, catch_rate_intermediate, targets_deep, catch_rate_deep, scrimmage_yards, scrimmage_tds, fumbles_lost, punt_returns, punt_return_yards, kickoff_returns, kickoff_return_yards, yards_per_punt_return, yards_per_kickoff_return, special_teams_tds QB only: completions, attempts, passing_yards, passing_tds, passing_interceptions, sacks_suffered, passing_air_yards, passing_first_downs, passing_epa, completion_pct, yards_per_attempt, passing_td_rate, interception_rate, sack_rate, passer_rating, any_a, passing_cpoe, pacr, epa_per_play, success_rate, qb_game_winning_drives, qb_fourth_quarter_comebacks, dropbacks RB/WR/TE only: pass_snaps, pass_snap_share, targets_per_pass_snap DL/LB/DB only: def_tackles, def_solo_tackles, def_tackles_for_loss, def_sacks, def_qb_hits, def_interceptions, def_interception_yards, def_pass_defended, def_fumbles_forced, def_tds K only: fg_made, fg_att, fg_pct, fg_made_50_plus, fg_att_50_plus, fg_long, pat_made, xp_pct
fetch
ChatGPTFetch the latest-season statistics document for an id returned by search (player:<gsis_id> or team:<abbr>).
get_data_coverage
ChatGPTWhich seasons, weeks and datasets are loaded, and when the data was last updated. Call this first when the user does not give a season, says "this season", "last week" or "latest", or asks how current the data is.
get_game_stats
ChatGPTOne game: final score, team box scores, offensive EPA per play and success rate, each team's drive summary (drives, points, red-zone trips and TDs, three-and-outs), and the top passers, rushers and receivers. Identify it by game_id (format 2025_01_BAL_BUF = season_week_away_home) or by season + week + team.
get_league_leaders
ChatGPTPlayer leaderboard for one metric in one season (e.g. top QBs by EPA per dropback, receiving yards leaders, target share leaders). Rate metrics apply a minimum on their qualifier (dropbacks, attempts, carries, targets, receptions): pass min_qualifier for the user's threshold (e.g. "at least 400 dropbacks" -> 400), otherwise a default that scales with games played is applied and reported in meta.population. Totals (yards, touchdowns) have no qualifier. Order: by default totals are listed highest first ("most interceptions thrown", "most sacks taken") and rates best first (lowest interception_rate first); pass order="lowest" for "fewest ..." or order="highest"/"lowest" to override a rate's direction. Metric names are exact; epa_per_play is QB EPA per dropback (use epa_per_rush / epa_per_target for other positions). Defensive player stats use the def_ prefix (def_sacks, def_tackles, def_interceptions); kicking: fg_, xp_pct; returns: punt_/kickoff_*. Punting is not available. split ranks only games matching it ("best passer rating in road games", "most rushing yards in the cold"); default minimums then scale with the games in the split. season_to ranks over several seasons ("most passing TDs since 2015": season=2015, season_to=<latest>); data starts in 1999, so never call a result "all-time". Metrics by position: any position: carries, rushing_yards, rushing_tds, rushing_first_downs, rushing_epa, yards_per_carry, epa_per_rush, rush_success_rate, explosive_rush_rate, receptions, targets, receiving_yards, receiving_tds, receiving_air_yards, receiving_yards_after_catch, receiving_first_downs, receiving_epa, catch_rate, receiving_first_down_rate, yards_per_reception, yards_per_target, target_share, air_yards_share, wopr, racr, epa_per_target, rz_targets, rz_target_share, rz_carries, rz_carry_share, inside10_carries, inside10_targets, inside5_carries, inside10_opportunity_share, targets_behind_los, catch_rate_behind_los, targets_short, catch_rate_short, targets_intermediate, catch_rate_intermediate, targets_deep, catch_rate_deep, scrimmage_yards, scrimmage_tds, fumbles_lost, punt_returns, punt_return_yards, kickoff_returns, kickoff_return_yards, yards_per_punt_return, yards_per_kickoff_return, special_teams_tds QB only: completions, attempts, passing_yards, passing_tds, passing_interceptions, sacks_suffered, passing_air_yards, passing_first_downs, passing_epa, completion_pct, yards_per_attempt, passing_td_rate, interception_rate, sack_rate, passer_rating, any_a, passing_cpoe, pacr, epa_per_play, success_rate, qb_game_winning_drives, qb_fourth_quarter_comebacks, dropbacks RB/WR/TE only: pass_snaps, pass_snap_share, targets_per_pass_snap DL/LB/DB only: def_tackles, def_solo_tackles, def_tackles_for_loss, def_sacks, def_qb_hits, def_interceptions, def_interception_yards, def_pass_defended, def_fumbles_forced, def_tds K only: fg_made, fg_att, fg_pct, fg_made_50_plus, fg_att_50_plus, fg_long, pat_made, xp_pct
get_metric_definitions
ChatGPTFormula, unit, source and qualifier for metrics. Use when the user asks how a metric is defined or which metrics exist. Omit metrics to list all.
get_player_game_log
ChatGPTA player's game-by-game log for one season: date, opponent, home/away, result and score, carry and target share of the team, and passing/rushing/receiving lines (only the groups the player recorded stats in). Use for "game log", "game-by-game", "week by week", "how did X do against Y", and usage trends ("RB usage in recent weeks": last_n_games returns those games plus averages vs. the whole season).
get_player_stats
ChatGPTOne player's statistics for one season: box-score totals plus every advanced metric that applies to the player's position (EPA, success rate, target share, passer rating, ...), games played and the qualifying counts (attempts, dropbacks, carries, targets). scope="season" returns season totals; scope="per_game" divides totals by games played (rates unchanged). Splits ("at home", "vs the Bills", "in primetime", "in the cold", "in losses"): pass split. Careers / several seasons: season + season_to (totals summed, rates recomputed; 1999 on only). Metrics by position: any position: carries, rushing_yards, rushing_tds, rushing_first_downs, rushing_epa, yards_per_carry, epa_per_rush, rush_success_rate, explosive_rush_rate, receptions, targets, receiving_yards, receiving_tds, receiving_air_yards, receiving_yards_after_catch, receiving_first_downs, receiving_epa, catch_rate, receiving_first_down_rate, yards_per_reception, yards_per_target, target_share, air_yards_share, wopr, racr, epa_per_target, rz_targets, rz_target_share, rz_carries, rz_carry_share, inside10_carries, inside10_targets, inside5_carries, inside10_opportunity_share, targets_behind_los, catch_rate_behind_los, targets_short, catch_rate_short, targets_intermediate, catch_rate_intermediate, targets_deep, catch_rate_deep, scrimmage_yards, scrimmage_tds, fumbles_lost, punt_returns, punt_return_yards, kickoff_returns, kickoff_return_yards, yards_per_punt_return, yards_per_kickoff_return, special_teams_tds QB only: completions, attempts, passing_yards, passing_tds, passing_interceptions, sacks_suffered, passing_air_yards, passing_first_downs, passing_epa, completion_pct, yards_per_attempt, passing_td_rate, interception_rate, sack_rate, passer_rating, any_a, passing_cpoe, pacr, epa_per_play, success_rate, qb_game_winning_drives, qb_fourth_quarter_comebacks, dropbacks RB/WR/TE only: pass_snaps, pass_snap_share, targets_per_pass_snap DL/LB/DB only: def_tackles, def_solo_tackles, def_tackles_for_loss, def_sacks, def_qb_hits, def_interceptions, def_interception_yards, def_pass_defended, def_fumbles_forced, def_tds K only: fg_made, fg_att, fg_pct, fg_made_50_plus, fg_att_50_plus, fg_long, pat_made, xp_pct
get_record
ChatGPTWin-loss record of a team, a starting quarterback or a head coach over loaded seasons, optionally against one opponent and/or home/away, with regular-season and playoff splits, a per-season breakdown and the games (most recent first). Use for "Mahomes' record vs the Bills", "Andy Reid's playoff record", "Bills vs Dolphins head-to-head", "when did the Lions last beat the Packers". QB records count games the player started. Records cover only loaded seasons (see meta.notes).
get_standings
ChatGPTRegular-season standings for one season: W-L-T, win %, points for/against, home, away, division and conference records and streak, grouped by division (default), conference or the whole league. Ordered by win % then point differential; the NFL's official tiebreakers are NOT applied (say so if teams are tied). Division/conference grouping is available from 2002.
get_team_rankings
ChatGPTRank all teams by one team metric in one season, e.g. "which teams had the highest offensive EPA", "best defenses by EPA allowed", "most pass-heavy offenses (PROE)". By default rank 1 is the best (defense metrics: lowest allowed; turnovers and sacks_allowed: fewest). For "most turnovers" or "most sacks allowed" pass order="highest". split ranks each team on its matching games only ("best road offenses"); season_to ranks franchises over several seasons. Team metrics: offense: offense_epa_per_play, offense_pass_epa_per_play, offense_rush_epa_per_play, offense_success_rate, offense_explosive_play_rate, offense_yards_per_play, offense_third_down_conversion_rate, offense_red_zone_td_rate, offense_red_zone_trips, offense_red_zone_tds, offense_red_zone_scoring_rate, offense_points_per_red_zone_trip, offense_red_zone_turnovers, offense_goal_to_go_td_rate, offense_points_per_drive, offense_scoring_drive_rate, offense_touchdown_drive_rate, offense_three_and_out_rate, offense_points_per_game, game_winning_drives, fourth_quarter_comebacks, offense_fourth_down_attempts, offense_fourth_down_go_rate, offense_fourth_and_short_go_rate, offense_fourth_down_conversion_rate, proe, wins, point_differential, team_passing_yards, team_rushing_yards, team_total_yards, turnovers, sacks_allowed defense: defense_epa_per_play, defense_pass_epa_per_play, defense_rush_epa_per_play, defense_success_rate, defense_explosive_play_rate, defense_yards_per_play, defense_third_down_conversion_rate, defense_red_zone_td_rate, defense_red_zone_trips, defense_red_zone_tds, defense_red_zone_scoring_rate, defense_points_per_red_zone_trip, defense_red_zone_turnovers, defense_goal_to_go_td_rate, defense_points_per_drive, defense_scoring_drive_rate, defense_touchdown_drive_rate, defense_three_and_out_rate, defense_points_per_game, defense_fourth_down_conversion_rate, takeaways, sacks
get_team_stats
ChatGPTOne team's season: record, every team metric below with its league rank, and its game-by-game results with the team's drive line per game (drives, points, red-zone trips and TDs, three-and-outs) for "by week" questions. split restricts record, metrics and ranks to matching games ("Bills at home", "Chiefs in division games"); season_to covers several seasons (by_season records replace the game list). Team metrics: offense: offense_epa_per_play, offense_pass_epa_per_play, offense_rush_epa_per_play, offense_success_rate, offense_explosive_play_rate, offense_yards_per_play, offense_third_down_conversion_rate, offense_red_zone_td_rate, offense_red_zone_trips, offense_red_zone_tds, offense_red_zone_scoring_rate, offense_points_per_red_zone_trip, offense_red_zone_turnovers, offense_goal_to_go_td_rate, offense_points_per_drive, offense_scoring_drive_rate, offense_touchdown_drive_rate, offense_three_and_out_rate, offense_points_per_game, game_winning_drives, fourth_quarter_comebacks, offense_fourth_down_attempts, offense_fourth_down_go_rate, offense_fourth_and_short_go_rate, offense_fourth_down_conversion_rate, proe, wins, point_differential, team_passing_yards, team_rushing_yards, team_total_yards, turnovers, sacks_allowed defense: defense_epa_per_play, defense_pass_epa_per_play, defense_rush_epa_per_play, defense_success_rate, defense_explosive_play_rate, defense_yards_per_play, defense_third_down_conversion_rate, defense_red_zone_td_rate, defense_red_zone_trips, defense_red_zone_tds, defense_red_zone_scoring_rate, defense_points_per_red_zone_trip, defense_red_zone_turnovers, defense_goal_to_go_td_rate, defense_points_per_drive, defense_scoring_drive_rate, defense_touchdown_drive_rate, defense_three_and_out_rate, defense_points_per_game, defense_fourth_down_conversion_rate, takeaways, sacks
get_top_games
ChatGPTBest (or worst) single-game performances by one metric: "most passing yards in a game in 2025", "Josh Allen's career-high rushing yards", "most sacks in a game", "highest-scoring team games", "fewest points per drive allowed in a game". With min_value it also counts games at or above a threshold: "100-yard rushing games" (metric=rushing_yards, min_value=100) returns games_at_or_above and, for players, count_by_player. entity=player uses box-score metrics (passing, rushing, receiving, defense def_*, kicking, returns); entity=team uses box score, points and drive metrics. Season-level play-by-play metrics (EPA per play, success rate) are not available per game. Give season, or season_from/season_to; with player or team and no season, all loaded seasons are used. Rate metrics apply a per-game minimum on their qualifier (override with min_qualifier).
query_plays
ChatGPTSituational play-by-play analysis with structured filters, e.g. "Bills on 3rd and 5+", "Chiefs in the red zone", "Lamar Jackson passes 20+ air yards", "4th quarter, trailing by 1-8". Trends across seasons: filters.season_to + group_by=season (only when the question spans seasons; ranges are slower). Returns an aggregate summary over ALL matching plays (plays, EPA/play, success rate, yards/play, first-down rate, touchdowns, explosive rate, dropback rate, completion/catch rate, interceptions, sacks), optional groups and a few sample plays. Rankings ("best short-yardage RBs"): group_by=player + sort_by + min_plays, e.g. filters {player_role: rusher, min_down: 3, max_yards_to_go: 2}, sort_by=success_rate, min_plays=10. group_by: opponent (by team faced), game, season, week, down, quarter, yards_to_go_bucket (short 1-3/medium 4-6/long 7-10/very_long 11+), score_situation (trailing_9_plus/trailing_1_8/tied/ leading_1_8/leading_9_plus), air_yards_bucket (behind_los/short 0-9/intermediate 10-19/deep 20+), pass_location, run_direction, offense_team, defense_team, player. Longest plays: sample_order=yards_gained (optionally touchdown=true). Base population: pass and run plays; two-point attempts and no-play penalties are excluded. Use the summary numbers - never compute statistics from sample_plays.
search
ChatGPTGeneric lookup of NFL players and teams by name, returning ids for fetch. Used by ChatGPT deep research. For normal questions prefer the specific tools (search_players, get_player_stats, ...).
search_players
ChatGPTFind players by name (fuzzy), optionally filtered by position, team and season. Use it to get a player_id when a name is misspelled, partial, or shared by several players (e.g. there are several "Josh Allen"s). Results include position, teams, active seasons, status and has_stats (false: no statistics are loaded for that player, so stat tools return no_data). Other tools also accept exact names directly, so this step is optional for well-known exact names.