DunkAPI
by noahowsh · remote · no sign-in to list tools · v1.1.6 · published by GitHub user noahowsh
NBA player props by sportsbook since 2023, plus play-by-play, shot locations and odds. REST and MCP.
18 tools: 18 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads18Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http dunkapi https://mcp.dunkapi.com/mcp --header 'x-api-key: <your-x-api-key>'Findings
Matches of fixed checks, with the text they matched.
- Warnlist_teams
The description contains "Every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...ons for a season (default: the latest). Every other tool takes a team as an id or abbreviation...."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
18 tools
Only reads 18Claude Code: allow
get_gameUse for one game in full: score, both teams' box scores, every player's line, each sportsbook's opening and closing line, and the win-probability range.No findings
Why it is in this group
- The name "get_game" says "get": a word for reading.
Description, as the server wrote it Use for one game in full: score, both teams' box scores, every player's line, each sportsbook's opening and closing line, and the win-probability range. For the play-by-play use get_plays. Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Game
- destructiveHint: false
get_injuriesUse for the injury report: every listed player's status (out, day-to-day), injury and expected return, as captured on the latest day (or the latest on or before date).No findings
Why it is in this group
- The name "get_injuries" says "get": a word for reading.
Description, as the server wrote it Use for the injury report: every listed player's status (out, day-to-day), injury and expected return, as captured on the latest day (or the latest on or before date). NBA and WNBA. Costs 2 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Injuries
- destructiveHint: false
get_leadersUse for a season's statistical leaders (per game, shooting percentages with a volume floor, or totals) from every box score.No findings
Why it is in this group
- The name "get_leaders" says "get": a word for reading.
Description, as the server wrote it Use for a season's statistical leaders (per game, shooting percentages with a volume floor, or totals) from every box score. Costs 5 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Leaders
- destructiveHint: false
get_line_movementUse to see how a game's line moved before tip-off: our pre-game snapshots of each sportsbook's moneyline, spread and total (captured once a day, and every hour for games in the nex…No findings
Why it is in this group
- The name "get_line_movement" says "get": a word for reading.
Description, as the server wrote it Use to see how a game's line moved before tip-off: our pre-game snapshots of each sportsbook's moneyline, spread and total (captured once a day, and every hour for games in the next four days). Costs 10 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Line movement
- destructiveHint: false
get_oddsUse for betting lines: each sportsbook's moneyline, spread and total for a game (opening and closing per book from July 2020; before that, each book's final pregame line only), wit…No findings
Why it is in this group
- The name "get_odds" says "get": a word for reading.
Description, as the server wrote it Use for betting lines: each sportsbook's moneyline, spread and total for a game (opening and closing per book from July 2020; before that, each book's final pregame line only), with implied probabilities and, for finished games, whether the home side covered and the total went over against the median close. Pass game_id for one game (5 credits) or date for a day's games (10 credits). Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Odds
- destructiveHint: false
get_playerUse for a player's profile, per-season averages and shooting splits (regular season and postseason separately) and last 10 games.No findings
Why it is in this group
- The name "get_player" says "get": a word for reading.
Description, as the server wrote it Use for a player's profile, per-season averages and shooting splits (regular season and postseason separately) and last 10 games. For every game use get_player_games. Costs 5 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Player
- destructiveHint: false
get_player_gamesUse for a player's game log: every game's box-score line with opponent and result, newest first, optionally one season.No findings
Why it is in this group
- The name "get_player_games" says "get": a word for reading.
Description, as the server wrote it Use for a player's game log: every game's box-score line with opponent and result, newest first, optionally one season. Costs 5 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Player games
- destructiveHint: false
get_player_propsUse for player prop lines by sportsbook: over/under on points, rebounds, assists, threes, points + rebounds + assists, blocks and steals, from May 2023 for the NBA and WNBA and the…No findings
Why it is in this group
- The name "get_player_props" says "get": a word for reading.
Description, as the server wrote it Use for player prop lines by sportsbook: over/under on points, rebounds, assists, threes, points + rebounds + assists, blocks and steals, from May 2023 for the NBA and WNBA and the 2023-24 season for men's college basketball (DraftKings, FanDuel, BetMGM, ESPN BET, Pinnacle and others). Pass game_id for every player's props in one game (10 credits), or player_id with from_date (and to_date) for one player across games (10 credits per game returned, up to 100). Returns the closing line by default (the last before the game starts) or the opening line, with each book's over and under prices. Outside football the archive mostly holds one pre-game capture per line, so the opening and closing lines are usually the same; the opening line differs only where a second capture was taken (live capture from October 2026, and wherever else it is held). Set estimate_only to get the price without being charged. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Player props
- destructiveHint: false
get_playsUse for play-by-play: every event of a game, or a player's or team's plays across a season, with shot location (feet), zone, our expected points, the score and the home win probabi…No findings
Why it is in this group
- The name "get_plays" says "get": a word for reading.
Description, as the server wrote it Use for play-by-play: every event of a game, or a player's or team's plays across a season, with shot location (feet), zone, our expected points, the score and the home win probability after each play (2018 on). Filter to shots, makes or misses, a zone, a period or clutch time. Pass league for the WNBA (wnba) or college (ncaam, ncaaw); default NBA. Costs 10 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Plays
- destructiveHint: false
get_prop_historyUse to see how a player did against his prop line over time: for one market (points, rebounds, assists, threes, points + rebounds + assists, blocks or steals), one row per game wit…No findings
Why it is in this group
- The name "get_prop_history" says "get": a word for reading.
Description, as the server wrote it Use to see how a player did against his prop line over time: for one market (points, rebounds, assists, threes, points + rebounds + assists, blocks or steals), one row per game with the closing line (the median across books, or one book's), the opening line (the same as the close wherever only one capture was taken), the prices, what the player actually recorded from our box scores and the result against the line, plus the over rate. Costs 10 credits for up to 200 games. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Prop history
- destructiveHint: false
get_ratingsUse for our team power ratings (Elo from every final game in our data), ranked, as of the end of a season or today.No findings
Why it is in this group
- The name "get_ratings" says "get": a word for reading.
Description, as the server wrote it Use for our team power ratings (Elo from every final game in our data), ranked, as of the end of a season or today. Costs 2 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Ratings
- destructiveHint: false
get_scheduleUse for upcoming games (next 1-30 days, default 7) with the median line across posted sportsbooks: spread, total and moneylines.No findings
Why it is in this group
- The name "get_schedule" says "get": a word for reading.
Description, as the server wrote it Use for upcoming games (next 1-30 days, default 7) with the median line across posted sportsbooks: spread, total and moneylines. For every book's line use get_odds. Costs 2 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Schedule
- destructiveHint: false
get_shot_chartUse for a shot profile: attempts, makes, percentage, points per shot and expected points per shot in each zone (restricted area, paint, midrange, corner three, above-the-break thre…No findings
Why it is in this group
- The name "get_shot_chart" says "get": a word for reading.
Description, as the server wrote it Use for a shot profile: attempts, makes, percentage, points per shot and expected points per shot in each zone (restricted area, paint, midrange, corner three, above-the-break three, free throws) for a player, a team, a team's opponents or one game. include_shots adds every located shot's x/y and result for drawing a chart. Costs 10 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Shot chart
- destructiveHint: false
get_standingsUse for a season's regular-season standings computed from every final game: overall, conference, home and away records, points for and against, margin and last 10.No findings
Why it is in this group
- The name "get_standings" says "get": a word for reading.
Description, as the server wrote it Use for a season's regular-season standings computed from every final game: overall, conference, home and away records, points for and against, margin and last 10. Costs 2 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Standings
- destructiveHint: false
get_team_statsUse for team efficiency for a season: pace, offensive, defensive and net rating per 100 possessions, the four factors (eFG%, turnover %, offensive rebound %, free throw rate) and t…No findings
Why it is in this group
- The name "get_team_stats" says "get": a word for reading.
Description, as the server wrote it Use for team efficiency for a season: pace, offensive, defensive and net rating per 100 possessions, the four factors (eFG%, turnover %, offensive rebound %, free throw rate) and three-point rate, from every box score. Costs 5 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Team stats
- destructiveHint: false
list_gamesUse to list games with scores by season, date, date range or team, newest first.No findings
Why it is in this group
- The name "list_games" says "list": a word for reading.
Description, as the server wrote it Use to list games with scores by season, date, date range or team, newest first. For upcoming games with lines use get_schedule; for one game's box score use get_game. Costs 2 credits.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: List games
- destructiveHint: false
list_teamsUse to find team ids and abbreviations for a season (default: the latest).1 finding
Why it is in this group
- The name "list_teams" says "list": a word for reading.
Findings
- Warn
The description contains "Every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...ons for a season (default: the latest). Every other tool takes a team as an id or abbreviation...."
Description, as the server wrote it Use to find team ids and abbreviations for a season (default: the latest). Every other tool takes a team as an id or abbreviation. Pass league for the WNBA (wnba) or college (ncaam, ncaaw); default NBA. Costs 1 credit.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: List teams
- destructiveHint: false
search_playersUse to find a player's id by name (partial names work), most recent players first.No findings
Why it is in this group
- The name "search_players" says "search": a word for reading.
Description, as the server wrote it Use to find a player's id by name (partial names work), most recent players first. Pass league for the WNBA (wnba) or college (ncaam, ncaaw); default NBA. Costs 1 credit.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- title: Search players
- destructiveHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.6. Values in angle brackets are yours to fill in.
claude mcp add --transport http dunkapi https://mcp.dunkapi.com/mcp --header 'x-api-key: <your-x-api-key>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__dunkapi__list_teams",
"mcp__dunkapi__list_games",
"mcp__dunkapi__get_schedule",
"mcp__dunkapi__get_game",
"mcp__dunkapi__get_standings",
"mcp__dunkapi__get_injuries",
"mcp__dunkapi__search_players",
"mcp__dunkapi__get_player",
"mcp__dunkapi__get_player_games",
"mcp__dunkapi__get_leaders",
"mcp__dunkapi__get_team_stats",
"mcp__dunkapi__get_plays",
"mcp__dunkapi__get_shot_chart",
"mcp__dunkapi__get_odds",
"mcp__dunkapi__get_line_movement",
"mcp__dunkapi__get_ratings",
"mcp__dunkapi__get_player_props",
"mcp__dunkapi__get_prop_history"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as dunkapi. Review it before you use it.
