Skip to main content

Keel Stats

com.keelstats/keel-statsVersion 1.5.0

NBA and NFL stats: profiles, head-to-head, schedules, ratings, EPA, injuries, projections.

Status

Responds471 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:03 UTC
Latency
471 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://api.keelstats.com/mcpResponds471 ms
No sign-in

Claude Code

claude mcp add --transport http keel-stats https://api.keelstats.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: keel-stats
Remote MCP server URL: https://api.keelstats.com/mcp

Cursor

{
  "mcpServers": {
    "keel-stats": {
      "url": "https://api.keelstats.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"keel-stats","type":"http","url":"https://api.keelstats.com/mcp"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

22 tools

Tools of Keel Stats
Read-only
Idempotent
Open world
correlationsUse this when the user asks which players' stat lines tend to go over or under together in a game, or who a player's outcomes move with (teammates and opponents). Returns, for a game_id, its typical role pairs (`typical`: the phi and lifts of the players' roles, pooled over earlier seasons) and the game-script splits (`script`: the roles' over rates on tonight's side of the spread and total); for a player_id, his partners in his next game (`partners`). Counted over the games both played, before the game asked. With Keel Stats Pro also each pair's own sample (joint counts, lift, phi shrunk to its role pair) and the pairs ranked on their samples (`pairs`); `account.held` says when they were left out. A pair's past season does not predict its next well. Not for a player's own lines: use props_research.NoYesYesNo
defense_vs_positionUse this when the user asks which teams allow the most or fewest to a position ('best matchups for centers', 'defenses vs TE'). Returns what each NBA or NFL team allows per game to a position group (NBA: G, F, C, with pace rank; NFL: QB, RB, WR, TE), each number as [value, league rank] (1 = allows the most). Without `position` the NBA answer lists each group's ten softest teams (`data_more` counts the rest) and the NFL's the softest half: pass `position` for every team, as for the fewest allowed. Window 'recent' (last 10 games) needs Pro. Not for one player's matchup (player_profile's next game).NoYesYesNo
find_gameUse this when the user asks about one team's game on a date, its next or last game, or a specific meeting ('Lakers next game', 'Cowboys vs Eagles on November 23') and you need its game_id. Returns the team's game on that date, or its last three finished and next three games, with game_id, start time, state, week (NFL), each side's team (id and abbreviation) and score, and the pair's matchup page; each game's page is `game_url` with its id in place of {id}. Not for the whole slate (tonight_slate) or the history of a pair (head_to_head).NoYesYesNo
game_projectionUse this when the user asks who is favoured in one game, by how much, or how the two sides compare for it. Returns the pre-game win probability (NBA: our projection, blended with the market while the model learns; `prediction.blended` says when) and projected margin, the consensus spread and total, the teams compared, leaders, recent form and who is out; signed in, also the market's vig-free chance, the model against it and the line, and the head-to-head; with Keel Stats Pro the absence costs, position matchups, records against the close and key players, and with a Pro account `detail` "full" adds the model's factor weights (below Pro it answers the same as "compact", with `projection_detail` in `account.held`, so leave it unset unless the caller has Pro). The answer's `account.held` names what the caller's plan left out. Needs a game_id from tonight_slate or find_game. Not for picks or betting advice: Keel Stats gives neither.NoYesYesNo
head_to_headUse this when the user asks how two teams have fared against each other: the all-time or season series, their last meetings and who led them, their next meeting ('Celtics vs Knicks history', 'Cowboys Eagles record'). Returns the pair's record over every meeting we hold and by season, this season's series, the last ten meetings with each one's top player, the series leaders, and the next game with its projected chance and margin. Not for a single game's preview: use game_projection with the game_id it returns.NoYesYesNo
injury_consequencesUse this when the user asks who is out, what an absence changes, or who benefits when a player sits ('Lakers injury report', 'what if Haliburton is out'). Returns the league injury report, or for a player_id the shift in his team's win probability and spread and the teammates whose minutes or target/carry share rises. Not for a player's own injury status alone (player_profile has it).NoYesYesNo
line_historyUse this when the user asks how a game's spread, total or moneyline opened and closed, how a player's prop lines moved and how he did against the closing line game by game, which players beat or missed their closing lines most this season, or how the sportsbooks' lines did overall (the market report). Returns, by `kind`: "game" (a game_id: the consensus and each book's opening and closing numbers, the vig-free market, how the game ended against the close; NFL also how many times the lines moved), "player" (a player_id: per stat his record against the close and a table of finished games with open, close, books, his number and the result, plus his next game's lines), "records" (the league's highest over and under rates against the closing prop line in a stat), "market" (the monthly market report: book margins, how closing lines missed by stat, size, position, month and move, line moves, injury reaction, with the headline numbers and editions). Requires Keel Stats Pro; the answer says so when the account has none. Not for tonight's lines and hit rates: use props_research.NoYesYesNo
line_shopUse this when the user asks where a player prop's line or price differs between sportsbooks today, which book has the best over or under price, or which props the books disagree on. Returns one stat's props of the day (NBA) or the week ahead (NFL): per player every book's main line with its over and under prices, the best price on each side, the lowest and highest line and whether the books split on it, with the books on the board in `vendors`. Requires Keel Stats Pro; the answer says so when the account has none. A research table: no book is recommended. Not for a player's history against the line: use line_history.NoYesYesNo
lineupsUse this when the user asks which five-man units an NBA team plays most and how they rate, its best or worst lineups (also in the clutch), or how a team and each teammate did in the games a player missed. Returns, for a team_id, its five-man units by minutes together with their offensive, defensive and net ratings; with `without_player_id`, the games with and without him and each teammate's per-game minutes, points and usage on both sides, by the minutes gained. Requires Keel Stats Pro; the answer says so when the account has none. Not for one player's on/off: use player_splits_and_on_off.NoYesYesNo
nfl_usageUse this when the user asks about NFL usage: who gets the most targets or carries, target and carry shares, opportunity share, red-zone looks, or how a team's shares change without a teammate. Returns, by `view`: "league" (every player's season and recent shares, biggest roles first), "red_zone" (targets and carries from the opponent's 20 in), "team" (a team_id: its players' shares, the regulars who missed games and, with `without_player_id`, each player's shares with and without him). Without Keel Stats Pro the league view lists the five biggest roles, the red zone its season alone, and the team view is refused; `account.held` says so. Not for NBA usage: use stat_forecasts or rankings_and_ratings.NoYesYesNo
player_comparablesUse this when the user asks which players are most like a given player this season, how often a player reaches a number (20 points, 10 rebounds, a double-double; with or without a teammate), or how players of his position did against his next opponent lately. Returns, for a player_id, the players most like him by Keel Impact and role (NFL: by his group's main numbers), his milestones (NBA: the share of games reaching each mark), and (NBA) his position group against the next opponent over its last games: the record against the closing line for every caller, each game's row with Keel Stats Pro (`account.held` says when it was left out). Not for his own averages: use player_profile.NoYesYesNo
player_profileUse this when the user asks about one player's season or recent form ('Tatum stats', 'how is Bridges playing lately'). Returns season averages, efficiency (NBA: TS%, eFG%, USG%, BPM; NFL: yards, touchdowns, EPA), Keel Impact, current injury status, his recent box lines (five without an account, ten signed in) and, when the books have priced his next game, one compact row per stat as props_research gives it. With Keel Stats Pro, `detail` adds the book-by-book odds, closing lines, game log, history and alternate ladders. The answer's `account.held` names what the caller's plan left out. Not for on/off or teammate splits (player_splits_and_on_off).NoYesYesNo
player_splits_and_on_offUse this when the user asks how a player's team does with him on or off the floor, his clutch or garbage-time splits, or how he plays with or without a teammate (NFL: target, carry and red-zone shares with or without a teammate). Returns those splits for the season (NBA: on/off, situations and milestones, `detail` naming the ones wanted; NFL: his usage row and the team's busiest, `detail` "full" for every player). Requires Keel Stats Pro; the answer says so when the account has none. Not for season averages or recent games: use player_profile.NoYesYesNo
pro_planUse this when the user asks what Keel Stats Pro includes, what a paid account adds, or which of these tools need it. Returns the Pro features in a line each, the tools that need Pro and the ones where Pro adds to a free answer, and where to read more (with the price where the client shows one). Not for statistics: every other tool answers those.NoYesYesNo
prop_screenerUse this when the user wants the day's player props filtered or ranked across games and stats in one call: who cleared today's line most often over his last 5 or 10 games or the season, whose last-ten median sits furthest from it, where the model's chance differs most from the market's, or the most widely offered lines. Returns the matching rows (player, team, opponent, stat, consensus line and book count, hit rates `l5`, `l10`, NBA `l20` and `season` as shares of his games, `l10_median` and `median_diff`, `model_over`, `market_over` and `edge`), sorted by `sort`, with how many matched; players ruled out are left out. With `side` "under" every rate, gap and edge reads for the under. Requires Keel Stats Pro; the answer says so when the account has none. Not for one player's full props: use props_research.NoYesYesNo
props_researchUse this when the user asks about a player's prop lines, how often he clears a line, or today's prop board. Returns, for a player_id, one compact row per stat with a line for his next game: the consensus line and book count, his last five games against it (`l5`, values newest first) and his season average; signed in, the last ten (`l10`, newest first) and his record against the closing line; with Keel Stats Pro also L20 and season hit rates, the opening line and move, the model's probability against the market's, the best price at the consensus line (`best_over`/`best_under` name their line; a better line at another book follows as `other_line`) and the matchup, and with `detail` the book-by-book odds, closing lines, game log, history and alternate ladders. Without a player_id, today's prop board: `recent` is the last five values newest first, `status` the injury report's (questionable, doubtful…), `minutes_l5` and `fga_l5`/`tpa_l5` the last five games' minutes and attempts; players ruled out are listed in `ruled_out`, not in the rows (Pro: model edge, the daily cheat sheet and the `consistent` filter). The answer's `account.held` names what the caller's plan left out. Not for picks: it is research only and never gives a pick.NoYesYesNo
rankings_and_ratingsUse this when the user asks for a league-wide list: standings, NBA Keel Impact player ratings, NFL EPA per play for offenses and defenses, or weekly power rankings ('top 10 NFL defenses by EPA'). Returns the ranked list with the url of its table (Pro adds the ratings' offense/defense, box prior, RAPM and on/off parts). Not for one team or player: use their profile.NoYesYesNo
searchUse this when you need a player_id or team_id, or the user names a player or team you have not resolved yet ('Jokic', 'Lamar Jackson', 'BOS'); it is accent- and typo-tolerant. Returns up to six matching players and four teams per league with their numeric ids (`players_more` and the like say there are more: narrow the query); each list's page is a template such as `player_url` with the id in place of {id}. Not for stats: call player_profile or team_profile with the id.NoYesYesNo
shot_qualityUse this when the user asks about the quality of an NBA player's or team's shots, expected field-goal percentage (xFG%), who makes more or fewer shots than expected, or the quality of shots a defense allows. Returns, for a player_id, his season's attempts, FG% against xFG%, eFG% against xeFG%, three-point rate, shot making (points over expected per 100 shots) and his rank in it; for a team_id, the same for its offense and for the shots its defense allowed; with neither, the season's best and worst shot makers (200+ attempts). Requires Keel Stats Pro; the answer says so when the account has none. Not for box-score shooting splits: use player_profile.NoYesYesNo
stat_forecastsUse this when the user asks how many minutes an NBA player should play tonight, who gets more minutes or shots when a teammate is out, or what a player is expected to score, rebound and assist tonight. Returns tonight's games with each team's players: the minutes they have been playing, the minutes expected after the injury report and how much the absences move them, usage, who is out and the minutes he frees; with Keel Stats Pro also expected points, rebounds and assists, the chances of reaching a number, the team both ways around each player in doubt, and with a player_id who gained when he sat. Over a whole slate each team's top seven come as one compact table (minutes, expected, the absences' move, Pro's expected points, rebounds and assists); a game_id, team_id or player_id gives the full rows. `account.held` names what the caller's plan left out. Not for past games: use player_profile.NoYesYesNo
team_profileUse this when the user asks about one team's season: its record, ratings, roster, recent and coming games. Returns the record, offensive/defensive/net rating (NFL: EPA per play and success rate) with league ranks, the roster and the last and next games with their game_id. Not for the whole league's standings (rankings_and_ratings) or two teams' history (head_to_head).NoYesYesNo
tonight_slateUse this when the user asks what is on tonight, today's scores, or a given day's games ('NBA games on 2026-11-05'). Returns that day's games with game_id, teams (id and abbreviation), times (US Eastern), live or final scores, pre-game win probabilities (NBA: our projection, blended with the market while the model learns) and the consensus line (signed in: the market's chance and the model's edge), last-game starters (NBA) and recent injury status changes; each game's page is `game_url` with its id in place of {id}. Not for a game weeks away or one team's schedule: use find_game.NoYesYesNo

Details

Registry status
Active
Published
Nov 12, 2026
Updated
Nov 12, 2026
Repository
Not given
Categories (suggested)
Data and analyticsE-commerceSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing