# DunkAPI (remote · mcp.dunkapi.com)

NBA player props by sportsbook since 2023, plus play-by-play, shot locations and odds. REST and MCP.

- Trust score: 85/100 (high trust)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.dunkapi.com`: 85/100 (this document), [markdown](https://verifymcp.io/servers/noahowsh-dunkapi/mcp.md), [page](https://verifymcp.io/servers/noahowsh-dunkapi/mcp)

## Channel facts

- Endpoint: `https://mcp.dunkapi.com/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.1.6`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 11/100
  - TLS not yet verified: we couldn't open a connection to check the certificate.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but we couldn't connect to verify it.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the DunkAPI MCP server?

DunkAPI is a hosted endpoint at https://mcp.dunkapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http noahowsh-dunkapi 'https://mcp.dunkapi.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "noahowsh-dunkapi": {
      "url": "https://mcp.dunkapi.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "noahowsh-dunkapi": {
      "type": "http",
      "url": "https://mcp.dunkapi.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.noahowsh-dunkapi]
url = "https://mcp.dunkapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "noahowsh-dunkapi": {
      "type": "remote",
      "url": "https://mcp.dunkapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add noahowsh-dunkapi --url 'https://mcp.dunkapi.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  noahowsh-dunkapi:
    url: "https://mcp.dunkapi.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "noahowsh-dunkapi": {
      "Transport": "http",
      "Url": "https://mcp.dunkapi.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add noahowsh-dunkapi -t streamable-http -u 'https://mcp.dunkapi.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "noahowsh-dunkapi": {
      "type": "http",
      "url": "https://mcp.dunkapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 85, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] HSTS header: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] TLS certificate: pass → unverified
- [security regression] Stability: 0.73 → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-11-02 (score 85, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_player_props” rewrote its description, which is the text the model reads
- [security] Tool “get_prop_history” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 4335 → 4962
- [functional] New tool “get_market_odds”
- [cosmetic] “get_player_props” reworded the description of “market”
- [cosmetic] “get_prop_history” reworded the description of “market”

### 2026-11-01 (score 84, 0)

- [security] Tool “get_prop_history” rewrote its description, which is the text the model reads
- [cosmetic] “get_prop_history” added an optional parameter “estimate_only”

### 2026-10-31 (score 84, 0)

- [security] Tool “get_player_props” rewrote its description, which is the text the model reads

### 2026-10-30 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 83, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-10-28 (score 83, +1)

- [security] Tool “get_player_props” rewrote its description, which is the text the model reads

### 2026-10-26 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (19)

### `list_teams` (~126 tokens)

List teams

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `season` (number|string): Season by the year it ends: 2025 = 2024-25. WNBA: the calendar year.

Output parameters:

- `count` (number)
- `season` (number|null)
- `teams` (array)

### `list_games` (~204 tokens)

List games

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.

Input parameters:

- `date` (string): One date, YYYY-MM-DD (US Eastern).
- `from` (string): From date, YYYY-MM-DD.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `limit` (integer): Max games (default 50).
- `offset` (integer): Page offset; use next_offset.
- `season` (number|string): Season by the year it ends: 2025 = 2024-25.
- `season_type` (string): regular, postseason, play_in or preseason.
- `status` (string)
- `team` (string): Team id or abbreviation.
- `to` (string): To date, YYYY-MM-DD.

Output parameters:

- `count` (number)
- `games` (array)
- `next_offset` (number|null)
- `note` (string)

### `get_schedule` (~133 tokens)

Schedule

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.

Input parameters:

- `days` (integer): Days ahead (default 7).
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `team` (string): Team id or abbreviation.

Output parameters:

- `count` (number)
- `days` (number)
- `games` (array)

### `get_game` (~130 tokens)

Game

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.

Input parameters:

- `game_id` (string, required): Game id, from list_games or get_schedule.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.

Output parameters:

- `box_score_note` (string)
- `game` (object)
- `odds` (array)
- `players` (array)
- `plays` (number)
- `team_stats` (array)
- `win_probability`

### `get_standings` (~96 tokens)

Standings

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `season` (number|string): Season by the year it ends (default: the latest).

Output parameters:

- `count` (number)
- `note` (string)
- `season` (number|null)
- `standings` (array)

### `get_injuries` (~112 tokens)

Injuries

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.

Input parameters:

- `date` (string): The report as of this day, YYYY-MM-DD (default: the latest).
- `league` (string): League. Defaults to nba. One of: nba, wnba.
- `team` (string): One team (id or abbreviation).

Output parameters:

- `count` (number)
- `date` (string|null)
- `injuries` (array)
- `note` (string)

### `search_players` (~101 tokens)

Search players

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `limit` (integer)
- `name` (string, required): Full or partial name.

Output parameters:

- `count` (number)
- `players` (array)

### `get_player` (~88 tokens)

Player

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `player_id` (string, required): Player id, from search_players.

Output parameters:

- `player` (object)
- `recent_games` (array)
- `seasons` (array)

### `get_player_games` (~133 tokens)

Player games

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `limit` (integer): Max games (default 100).
- `offset` (integer)
- `player_id` (string, required): Player id.
- `season` (number|string): Season by the year it ends: 2025 = 2024-25 (default: the latest).
- `season_type` (string)

Output parameters:

- `count` (number)
- `games` (array)
- `next_offset` (number|null)
- `note` (string)
- `player_id` (string)

### `get_leaders` (~144 tokens)

Leaders

Use for a season's statistical leaders (per game, shooting percentages with a volume floor, or totals) from every box score. Costs 5 credits.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `limit` (integer)
- `min_games` (integer): Minimum games played (default: a quarter of the season).
- `season` (number|string): Season by the year it ends: 2025 = 2024-25 (default: the latest).
- `season_type` (string): Default regular.
- `stat` (string, required): Stat to rank by.

Output parameters:

- `count` (number)
- `label` (string)
- `leaders` (array)
- `min_games` (number)
- `season` (number|null)
- `stat` (string)

### `get_team_stats` (~139 tokens)

Team stats

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `season` (number|string): Season by the year it ends: 2025 = 2024-25 (default: the latest).
- `season_type` (string)
- `team` (string): One team (id or abbreviation).

Output parameters:

- `count` (number)
- `method` (string)
- `season` (number|null)
- `teams` (array)

### `get_plays` (~310 tokens)

Plays

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.

Input parameters:

- `clutch` (boolean): Last 5 minutes of the 4th quarter (college men: 2nd half) or overtime, score within 5.
- `game_id` (string): One game: every play in order.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `limit` (integer): Max plays (default 200).
- `made` (boolean): Only made (true) or missed (false) shots.
- `offset` (integer)
- `period` (integer)
- `player_id` (string): A player's plays (with season).
- `season` (number|string): Season by the year it ends (default: the latest; ignored with game_id).
- `season_type` (string)
- `shots_only` (boolean): Field goal and free throw attempts only.
- `team` (string): A team's plays (id or abbreviation).
- `zone` (string): One shot zone.

Output parameters:

- `count` (number)
- `next_offset` (number|null)
- `plays` (array)

### `get_shot_chart` (~206 tokens)

Shot chart

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.

Input parameters:

- `game_id` (string)
- `include_shots` (boolean): Add each shot's x, y and result (up to 3,000).
- `league` (string): League. Defaults to nba. One of: nba, wnba.
- `opponent` (boolean): With team: the shots its opponents took (its defence).
- `player_id` (string)
- `season` (number|string): Season by the year it ends (default: the latest).
- `season_type` (string)
- `team` (string): Team id or abbreviation.

Output parameters:

- `field_goal_attempts` (number)
- `note` (string)
- `season` (number|null)
- `share` (object)
- `shots` (array)
- `shots_note` (string)
- `unlocated_attempts` (number)
- `unlocated_note` (string)
- `zones` (array)

### `get_odds` (~176 tokens)

Odds

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.

Input parameters:

- `date` (string): A day's games, YYYY-MM-DD (US Eastern).
- `game_id` (string): One game.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.

Output parameters:

- `count` (number)
- `credits` (number)
- `estimate_only` (boolean)
- `games` (array)
- `note` (string)
- `tool` (string)

### `get_line_movement` (~179 tokens)

Line movement

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.

Input parameters:

- `all_snapshots` (boolean): Every hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.
- `game_id` (string, required): Game id.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `provider` (string): One sportsbook, e.g. DraftKings.

Output parameters:

- `game` (object)
- `movement` (object)
- `note` (string)
- `snapshots` (number)

### `get_ratings` (~90 tokens)

Ratings

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.

Input parameters:

- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam, ncaaw.
- `season` (number|string): Season by the year it ends (default: the latest).

Output parameters:

- `count` (number)
- `method` (string)
- `ratings` (array)
- `season` (number|null)

### `get_player_props` (~712 tokens)

Player props

Use for player prop lines by sportsbook: over/under on points, rebounds, assists, threes, blocks, steals, the combos (points + rebounds + assists, points + rebounds, points + assists, rebounds + assists) and double- and triple-doubles (the NBA has them all; the WNBA has no blocks, steals or triple-doubles and college basketball has points, rebounds, assists and the combos), 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, or player_id with from_date (and to_date) for one player across games (up to 100). A game costs 10 credits before it starts and 20 once it has (accounts opened before October 30 2026 pay 10 for every game). Returns the closing line by default (the last before the game starts) or the opening line, with each book's over and under prices. Each row has captured_at, scheduled_start and minutes_before_scheduled_start (negative when captured after the scheduled start); a row is kept when it was captured before the sportsbooks' listed start, which in the NBA is usually about 10 minutes after the scheduled one, so filter on minutes_before_scheduled_start > 0 for a strictly before-schedule backtest. 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.

Input parameters:

- `bookmaker` (string): Bookmaker key, e.g. draftkings, fanduel, pinnacle.
- `estimate_only` (boolean): Return what this call would cost, without charging or running it.
- `from_date` (string): With player_id: first date, YYYY-MM-DD (the game's date).
- `game_id` (string): Game id: every player's props for that game.
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam.
- `market` (string): One market: player_points (points), player_rebounds (rebounds), player_assists (assists), player_threes (three-pointers made), player_points_rebounds_assists (points + rebounds + assists), player_blo…
- `player_id` (string): Player id (e.g. 3945274) from search_players. With from_date: that player's props across games.
- `snapshot_type` (string): closing (default): the last line before the game starts. opening: the first one captured, which is the same capture as the close wherever only one was taken.
- `to_date` (string): With player_id: last date (default: no end), YYYY-MM-DD (the game's date).

Output parameters:

- `count` (number)
- `credits` (number)
- `credits_per_game` (number)
- `estimate_only` (boolean)
- `games` (number)
- `next_from_date` (string|null)
- `note` (string)
- `props` (array)
- `snapshot_type` (string)
- `tool` (string)

### `get_prop_history` (~485 tokens)

Prop history

Use to see how a player did against his prop line over time: for one market (points, rebounds, assists, threes, blocks, steals, one of the combos (points + rebounds + assists, points + rebounds, points + assists, rebounds + assists), double-double or triple-double), 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, up to 200 games a call. Costs 10 credits for every 25 games already played that a call covers, and at least 10 a call (accounts opened before November 1 2026 pay 10 a call). 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.

Input parameters:

- `bookmaker` (string): One book's closing line instead of the median across books, e.g. draftkings.
- `estimate_only` (boolean): Return what this call would cost, without charging or running it.
- `from_date` (string): First date, YYYY-MM-DD (the game's date).
- `league` (string): League. Defaults to nba. One of: nba, wnba, ncaam.
- `limit` (integer): Games to return, oldest first (default 50, max 200). next_from_date says where to continue.
- `market` (string, required): The market: player_points (points), player_rebounds (rebounds), player_assists (assists), player_threes (three-pointers made), player_points_rebounds_assists (points + rebounds + assists), player_blo…
- `player_id` (string, required): Player id (e.g. 3945274) from search_players.
- `to_date` (string): Last date, YYYY-MM-DD (the game's date).

Output parameters:

- `bookmaker` (string|null)
- `count` (number)
- `credits` (number)
- `estimate_only` (boolean)
- `games` (array)
- `market` (string)
- `next_from_date` (string|null)
- `note` (string)
- `player_id` (string|number)
- `player_name` (string|null)
- `stat` (string)
- `summary` (object)
- `tool` (string)
- `truncated` (boolean)

### `get_market_odds` (~404 tokens)

Market odds

Use for the extra betting markets of a game as history: the 1st half and 1st quarter winner, point spread and total, and the 2nd, 3rd and 4th quarter totals (NBA only). Pass game_id (from list_games or get_schedule) and market. For each sportsbook it returns the opening line (the first one we captured) and the closing line (the last one before the game started), each as the list of outcomes with their point and American price, plus captured_at and minutes_before_start (negative when the last capture came after our scheduled start, which the sportsbooks' listed start can run past). Most books were captured once, so opening and closing are often the same line. Held from May 2023 for the larger sportsbooks only; not every game has every market. Costs 10 credits a call; a game with no lines is refunded. Set estimate_only to get the price without being charged. For the full-game moneyline, spread and total use get_odds. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `bookmaker` (string): One bookmaker key, e.g. draftkings, fanduel, pinnacle.
- `estimate_only` (boolean): Return what this call would cost, without charging or running it.
- `game_id` (string, required): Game id from list_games or get_schedule.
- `market` (string, required): The market: h2h_h1 (1st half winner), spreads_h1 (1st half point spread), totals_h1 (1st half total points), h2h_q1 (1st quarter winner), spreads_q1 (1st quarter point spread), totals_q1 (1st quarter…

Output parameters:

- `books` (array)
- `count` (number)
- `credits` (number)
- `estimate_only` (boolean)
- `game_id` (string)
- `label` (string)
- `market` (string)
- `note` (string)
- `scheduled_start` (string|null)
- `tool` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/noahowsh-dunkapi/mcp#diagnostics

## Score history

- 2026-11-05: 85
- 2026-11-04: 85
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 84
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 83
- 2026-10-27: 82
- 2026-10-26: 82
- 2026-10-25: 81
- 2026-10-24: 81
- 2026-10-23: 80
- 2026-10-22: 80
- 2026-10-21: 79
- 2026-10-20: 79
- 2026-10-19: 79
- 2026-10-18: 78
- 2026-10-17: 78
- 2026-10-16: 77
- 2026-10-15: 77
- 2026-10-14: 73
- 2026-10-13: 72
- 2026-10-12: 72

## Common questions

### What is the DunkAPI MCP server?

DunkAPI is an MCP server listed in the public MCP registry as io.github.noahowsh/dunkapi. NBA player props by sportsbook since 2023, plus play-by-play, shot locations and odds. REST and MCP. This page covers its hosted endpoint (https://mcp.dunkapi.com/mcp).

### Is the DunkAPI MCP server safe to use?

DunkAPI scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the DunkAPI MCP server expose?

DunkAPI exposes 19 tools: list_teams, list_games, get_schedule, get_game, get_standings, and 14 more. Their descriptions and schemas cost roughly 3,968 tokens of context every time the server is loaded.

### Does the DunkAPI MCP server require authentication?

Its publisher declares that DunkAPI requires credentials, so you will need to authorise it in your MCP client. We have not been able to confirm that against the live endpoint.

### Is the DunkAPI MCP server still maintained?

DunkAPI is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 3 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.dunkapi.com/mcp
- Authorisation metadata: https://mcp.dunkapi.com/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/noahowsh/dunkapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/noahowsh-dunkapi/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/noahowsh-dunkapi/mcp.json
- HTML version of this page: https://verifymcp.io/servers/noahowsh-dunkapi/mcp
