Skip to main content
Glama

DunkAPI

Player props

get_player_props
Read-onlyIdempotent

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 Schema

NameRequiredDescriptionDefault
leagueNoLeague. Defaults to nba. One of: nba, wnba, ncaam.
marketNoOne market: player_points (points), player_rebounds (rebounds), player_assists (assists), player_threes (three-pointers made), player_points_rebounds_assists (points + rebounds + assists), player_blocks (blocks), player_steals (steals), player_points_rebounds (points + rebounds), player_points_assists (points + assists), player_rebounds_assists (rebounds + assists), player_double_double (double-double (over = yes)), player_triple_double (triple-double (over = yes))
game_idNoGame id: every player's props for that game.
to_dateNoWith player_id: last date (default: no end), YYYY-MM-DD (the game's date).
bookmakerNoBookmaker key, e.g. draftkings, fanduel, pinnacle.
from_dateNoWith player_id: first date, YYYY-MM-DD (the game's date).
player_idNoPlayer id (e.g. 3945274) from search_players. With from_date: that player's props across games.
estimate_onlyNoReturn what this call would cost, without charging or running it.
snapshot_typeNoclosing (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.

Output Schema

NameRequiredDescriptionDefault
noteNo
toolNo
countNo
gamesNo
propsNo
creditsNo
estimate_onlyNo
snapshot_typeNo
next_from_dateNo
credits_per_gameNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / market / description
      Previous value: -"One market: player_points (points), player_rebounds (rebounds), player_assists (assists), player_threes (three-pointers made), player_points_rebounds_assists (points + rebounds + assists), player_blocks (blocks), player_steals (steals)"New value: +"One market: player_points (points), player_rebounds (rebounds), player_assists (assists), player_threes (three-pointers made), player_points_rebounds_assists (points + rebounds + assists), player_blocks (blocks), player_steals (steals), player_points_rebounds (points + rebounds), player_points_assists (points + assists), player_rebounds_assists (rebounds + assists), player_double_double (double-double (over = yes)), player_triple_double (triple-double (over = yes))"
    • changedInput schema / properties / market / enum
      Previous value: -[
      -  "player_points",
      -  "player_rebounds",
      -  "player_assists",
      -  "player_threes",
      -  "player_points_rebounds_assists",
      -  "player_blocks",
      -  "player_steals"
      -]New value: +[
      +  "player_points",
      +  "player_rebounds",
      +  "player_assists",
      +  "player_threes",
      +  "player_points_rebounds_assists",
      +  "player_blocks",
      +  "player_steals",
      +  "player_points_rebounds",
      +  "player_points_assists",
      +  "player_rebounds_assists",
      +  "player_double_double",
      +  "player_triple_double"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / props / items / properties / minutes_before_scheduled_start
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / props / items / properties / scheduled_start
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / snapshot_type / description
      Previous value: -"closing (default): the last line before the game starts. opening: the first one captured."New value: +"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."
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description layers on genuinely non-obvious behavior: credit pricing (10 pre-game, 20 live, with a legacy tier), estimate_only to price without charging, closing-vs-opening defaults, the captured_at / minutes_before_scheduled_start caveat, the 'one pre-game capture so opening == closing' caveat, and an explicit policy constraint against stake/payout advice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and essentially every sentence carries operative information, but it is delivered as one long run-on paragraph mixing coverage limits, pricing, and backtest caveats. Slight structural penalty for density and the buried parenthetical league caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description helpfully names the returned fields (captured_at, scheduled_start, minutes_before_scheduled_start, over/under prices) and explains how to filter them for a clean backtest. For a 9-parameter, credit-charging, multi-mode tool this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds semantics the schema does not: the either/or relationship between game_id and player_id+from_date, the 100-row cap on the player path, and what 'opening' actually means when only one capture exists. That is real value on top of structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific verb and resource ('player prop lines by sportsbook') and immediately enumerates the market families covered. An agent can tell this apart from get_odds, get_line_movement and get_prop_history from the opening sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit invocation modes — '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' — plus cost and the estimate_only escape hatch. What it lacks is any routing against close siblings like get_prop_history or get_line_movement, so the agent must infer which tool wins.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.