proplineapi avatar

PropLine — Sports Betting Odds & Prop Resolution

proplineapi/propline-mcp

Connects Claude to PropLine's sports betting API with 13 tools that pull live odds across 16 sportsbooks, graded player prop outcomes, and cross-book positive expected value calculations. You can ask natural language questions about prop histories, closing line value, first-quarter totals, or which book has the best line on a specific player market, and the model picks the right endpoint. Free tier gives you odds and scores; Pro unlocks resolution data and EV analysis. Useful if you're building betting research workflows or want to compare DFS projections against traditional sportsbook lines without writing API wrappers.

GitHub stars
1
tools
43
auth
Secret needed
transport
STDIO, HTTP
env vars
2
last updated
Nov 10, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.prop-line.com/mcp --name propline-mcp --header 'Authorization: Bearer ${API_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http propline-mcp https://mcp.prop-line.com/mcp --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 43 tools

Verified live against the running server on Nov 6, 2026.

propline_list_sportsList all sports PropLine currently polls. Returns sport keys (e.g. baseball_mlb, basketball_nba, soccer_epl) along with human titles and active status. Use this first to discover what sport_key values are valid for the other tools.

List all sports PropLine currently polls. Returns sport keys (e.g. baseball_mlb, basketball_nba, soccer_epl) along with human titles and active status. Use this first to discover what sport_key values are valid for the other tools.

No parameters. Call it with no arguments.

propline_list_eventsList upcoming events for a sport. Returns each event's id, home_team, away_team, commence_time. Use the returned event_id to drill into per-event odds, props, +EV, or results.2 params

List upcoming events for a sport. Returns each event's id, home_team, away_team, commence_time. Use the returned event_id to drill into per-event odds, props, +EV, or results.

Parameters* required
liveboolean
If true, only return in-progress (live) events. Defaults to false.
sport_key*string
Sport key from propline_list_sports — e.g. baseball_mlb, basketball_nba
propline_list_event_marketsList the market types available for a specific event (e.g. h2h, spreads, totals, player_points, pitcher_strikeouts). Useful when you don't know which prop markets a given event carries.2 params

List the market types available for a specific event (e.g. h2h, spreads, totals, player_points, pitcher_strikeouts). Useful when you don't know which prop markets a given event carries.

Parameters* required
event_id*string | number
sport_key*string
propline_get_oddsGet live odds. If event_id is supplied, returns full per-event props for that event; otherwise returns bulk game-line odds for the whole sport. Pass markets as a comma-separated list (e.g. 'h2h,spreads,totals' or 'player_points,player_rebounds'). Response includes a bookmakers...8 params

Get live odds. If event_id is supplied, returns full per-event props for that event; otherwise returns bulk game-line odds for the whole sport. Pass markets as a comma-separated list (e.g. 'h2h,spreads,totals' or 'player_points,player_rebounds'). Response includes a bookmakers...

Parameters* required
bookmakersstring
Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, betway, hardrock, fanatics, betus, betonlineag, lowvig, onexbet, tab_au, rebet, fliff, courtsi...
event_idstring | number
Optional. If set, returns props for this event.
include_book_idsboolean
When true, each bookmaker block carries book_event_id and each outcome carries book_outcome_id — that book's OWN ids for the event and the priced selection, for joining onto a book's native feed by...
include_depthboolean
When true, every outcome carries depth: up to three order-book levels beyond the served price, each {price (American), size (dollars)}. [] for books whose depth PropLine does not read (sportsbooks).
include_linksboolean
When true, each bookmaker block carries a link — that book's public event-page URL for click-out (Bovada/DraftKings/FanDuel/BetMGM/Kalshi/Polymarket/Smarkets; others null). Plain navigation, no aff...
marketsstring
Comma-separated market keys. Defaults to h2h on bulk; h2h,spreads,totals on event. Pass an explicit list to fetch player props (sport-specific — e.g. player_points,player_rebounds for NBA; pitcher_...
periodstring
Game-period filter. Omitted = full-game markets only. Canonical codes: q1..q4 (quarters), h1/h2 (halves), p1..p3 (hockey periods), i1..i9 (innings), f3/f5/f7 (first N innings). Comma-separated for...
sport_key*string
propline_get_odds_historyHobby+ endpoint. Returns the historical line-movement snapshot series for an event (every recorded price/point change per outcome over the event's lifetime). Free tier returns market structure with redacted snapshots and an upgrade pointer. Supports period-historical filters:...11 params

Hobby+ endpoint. Returns the historical line-movement snapshot series for an event (every recorded price/point change per outcome over the event's lifetime). Free tier returns market structure with redacted snapshots and an upgrade pointer. Supports period-historical filters:...

Parameters* required
bookmakersstring
Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, betway, hardrock, fanatics, betus, betonlineag, lowvig, onexbet, tab_au, rebet, fliff, courtsi...
changes_onlyboolean
When true, drop snapshots whose (price, point) match the previous one.
event_id*string | number
fromstring
ISO timestamp; only include snapshots at or after. Mutually exclusive with relative_from.
intervalstring
Downsample bucket. Latest snapshot per bucket wins.one of 30s · 1m · 5m · 15m · 30m · 1h
marketsstring
periodstring
Game-period filter. Omitted = full-game markets only. Canonical codes (q1..q4, h1/h2, p1..p3, i1..i9, f3/f5/f7), comma-separated, or 'all'.
relative_fromstring
Offset to commence_time, e.g. '-3h', '-30m', '-90s'. Mutually exclusive with from.
relative_tostring
Offset to commence_time, e.g. '-1m' or '0'. Mutually exclusive with to.
sport_key*string
tostring
ISO timestamp; only include snapshots at or before. Mutually exclusive with relative_to.
propline_get_odds_closingHobby+ endpoint. Returns the OPENING and CLOSING line per (book, market, outcome) for an event. Closing = the last snapshot at or before commence_time (price/point/closing_at); opening = the first snapshot PropLine holds for the outcome, however far before kickoff the book pos...6 params

Hobby+ endpoint. Returns the OPENING and CLOSING line per (book, market, outcome) for an event. Closing = the last snapshot at or before commence_time (price/point/closing_at); opening = the first snapshot PropLine holds for the outcome, however far before kickoff the book pos...

Parameters* required
bookmakersstring
Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, betway, hardrock, fanatics, betus, betonlineag, lowvig, onexbet, tab_au, rebet, fliff, courtsi...
event_id*string | number
marketsstring
opening_windowstring | number
Limit the opening lookback to this many days before kickoff (1-3650), or 'all' (default: the first snapshot held). 14 matches the resolved-props export's opening columns.
periodstring
Game-period filter. Omitted = full-game markets only. Canonical codes (q1..q4, h1/h2, p1..p3, i1..i9, f3/f5/f7), comma-separated, or 'all'.
sport_key*string
propline_grade_clvHobby+ endpoint. Grades PLACED bets against their closing lines. Closing line value is the only durable proxy for whether a bettor has edge: did the price they took beat the number the market settled on? Send the bets and each comes back with its closing price, the de-vigged c...2 params

Hobby+ endpoint. Grades PLACED bets against their closing lines. Closing line value is the only durable proxy for whether a bettor has edge: did the price they took beat the number the market settled on? Send the bets and each comes back with its closing price, the de-vigged c...

Parameters* required
bets*array
Placed bets to grade. selection is the subject: player name for a prop, team name for a game line.
devigstring
How the closing anchor's vig is removed before closing_fair_prob / ev_vs_close_pct. 'multiplicative' (default) or 'shin' (loads the overround onto the longshot). Same vocabulary as propline_get_eve...one of multiplicative · shin
propline_settle_betsHobby+ endpoint. Settles PLACED bets, singles or parlays, against final results: each comes back won, lost, push, void, half_won or half_lost, with actual_value (the stat or score it settled on), payout (stake included) and profit, plus a summary. The book and the line are fre...1 params

Hobby+ endpoint. Settles PLACED bets, singles or parlays, against final results: each comes back won, lost, push, void, half_won or half_lost, with actual_value (the stat or score it settled on), payout (stake included) and profit, plus a summary. The book and the line are fre...

Parameters* required
bets*array
Bets to settle. A single bet uses the leg fields directly; a parlay sets legs.
propline_price_parlayHobby+ endpoint. Fair price of a parlay across games (2-15 legs), from the same no-vig fair lines as propline_get_event_ev. Returns fair_price for the parlay, each leg's fair_price and best price + book, best_legs_price, books (every book that prices all the legs: the product...3 params

Hobby+ endpoint. Fair price of a parlay across games (2-15 legs), from the same no-vig fair lines as propline_get_event_ev. Returns fair_price for the parlay, each leg's fair_price and best price + book, best_legs_price, books (every book that prices all the legs: the product...

Parameters* required
devigstring
one of multiplicative · shin
legs*array
pricenumber
Parlay price offered (American).
propline_price_sgpHobby+ endpoint. Prices a same-game parlay at the BOOK'S OWN correlated odds — the price a FanDuel customer would be offered for that exact slip right now, not a model of it. bookmaker is fanduel (default, its own pricer), draftkings (its SGP widget's pricer), betonlineag / lo...4 params

Hobby+ endpoint. Prices a same-game parlay at the BOOK'S OWN correlated odds — the price a FanDuel customer would be offered for that exact slip right now, not a model of it. bookmaker is fanduel (default, its own pricer), draftkings (its SGP widget's pricer), betonlineag / lo...

Parameters* required
bookmakerstring
fanduel (default), draftkings, betonlineag, lowvig, or all (every book side by side).
event_id*string | number
legs*array
Legs named exactly as /odds names an outcome.
sport_key*string
e.g. baseball_mlb
propline_export_odds_historyBackfill-pass / Enterprise only. Bulk line-movement tick history as CSV — every recorded odds snapshot (price + line, per book, including period markets) across a whole sport, one row per (outcome, snapshot). This is the raw firehose no subscription tier can bulk-pull (Pro/Str...5 params

Backfill-pass / Enterprise only. Bulk line-movement tick history as CSV — every recorded odds snapshot (price + line, per book, including period markets) across a whole sport, one row per (outcome, snapshot). This is the raw firehose no subscription tier can bulk-pull (Pro/Str...

Parameters* required
bookmakerstring
Optional bookmaker filter
marketstring
Optional market key filter
since*string
ISO datetime lower bound on recorded_at (required, e.g. 2026-04-01T00:00:00Z). Keep the window narrow.
sport_key*string
Sport key, e.g. baseball_mlb
until*string
ISO datetime upper bound on recorded_at (required, e.g. 2026-05-01T00:00:00Z).
propline_get_futuresFree-tier endpoint. Returns season-long futures (outright) markets for a sport — championship/Super Bowl/division/conference winners, MVP and award winners, season win totals — aggregated across Bovada, FanDuel, DraftKings, Pinnacle, and Kalshi. One row per (futures event, boo...1 params

Free-tier endpoint. Returns season-long futures (outright) markets for a sport — championship/Super Bowl/division/conference winners, MVP and award winners, season win totals — aggregated across Bovada, FanDuel, DraftKings, Pinnacle, and Kalshi. One row per (futures event, boo...

Parameters* required
sport_key*string
Sport key — e.g. football_nfl, basketball_nba, baseball_mlb.
propline_get_scoresFree-tier endpoint. Returns recent and live game scores plus status (scheduled, live, final) for a sport. Useful for: 'is this game over yet, what was the final score'.2 params

Free-tier endpoint. Returns recent and live game scores plus status (scheduled, live, final) for a sport. Useful for: 'is this game over yet, what was the final score'.

Parameters* required
days_fromnumber
How many past days of completed games to include. Defaults to 1.
sport_key*string
propline_get_dfs_payoutsFree-tier reference math. Returns the PrizePicks Power Play (all legs must hit) and Flex Play (partial payouts) entry payout schedule for 2-6 legs, plus the per-leg breakeven win probability for each play. Pass leg_win_prob (e.g. 0.58) to also get expected_return (per $1) and...1 params

Free-tier reference math. Returns the PrizePicks Power Play (all legs must hit) and Flex Play (partial payouts) entry payout schedule for 2-6 legs, plus the per-leg breakeven win probability for each play. Pass leg_win_prob (e.g. 0.58) to also get expected_return (per $1) and...

Parameters* required
leg_win_probnumber
Optional assumed per-leg win probability in [0,1]. Adds expected_return + is_plus_ev to each play.
propline_get_mlb_grand_salamiFree-tier endpoint. Returns the synthetic daily MLB Grand Salami for a given UTC date — total runs scored across every MLB game on the slate plus each book's implied Grand Salami line (median of per-game primary totals across our MLB books incl. Pinnacle, Polymarket, Matchbook...1 params

Free-tier endpoint. Returns the synthetic daily MLB Grand Salami for a given UTC date — total runs scored across every MLB game on the slate plus each book's implied Grand Salami line (median of per-game primary totals across our MLB books incl. Pinnacle, Polymarket, Matchbook...

Parameters* required
datestring
YYYY-MM-DD UTC date. Defaults to today (UTC) when omitted.
propline_get_nhl_daily_goals_totalFree-tier endpoint. Returns the synthetic daily NHL goals total (hockey's equivalent of the MLB Grand Salami) for a given US Eastern date — total goals scored across every NHL game on the slate (including OT/SO) plus each book's implied Daily Goals Total line (median of per-ga...1 params

Free-tier endpoint. Returns the synthetic daily NHL goals total (hockey's equivalent of the MLB Grand Salami) for a given US Eastern date — total goals scored across every NHL game on the slate (including OT/SO) plus each book's implied Daily Goals Total line (median of per-ga...

Parameters* required
datestring
YYYY-MM-DD UTC date. Defaults to today (UTC) when omitted.
propline_get_resolution_summaryFree-tier endpoint. Returns the factual volume of player props PropLine has graded against real box scores over the last N days (aggregated counts only): total graded/settled, games, sports covered, plus per-sport and top-market breakdowns. Useful for: 'how much graded prop da...1 params

Free-tier endpoint. Returns the factual volume of player props PropLine has graded against real box scores over the last N days (aggregated counts only): total graded/settled, games, sports covered, plus per-sport and top-market breakdowns. Useful for: 'how much graded prop da...

Parameters* required
daysnumber
Look-back window, 1-90. Defaults to 30.
propline_get_event_idsFree-tier endpoint. Id crosswalk for one sport: one object per event from 3 days ago to 30 days ahead with PropLine's event id, commence_time, teams (+ team keys/ids), espn_event_id, mlb_game_pk, merged_from_event_ids, and each sportsbook's own event id + link under books. Use...1 params

Free-tier endpoint. Id crosswalk for one sport: one object per event from 3 days ago to 30 days ahead with PropLine's event id, commence_time, teams (+ team keys/ids), espn_event_id, mlb_game_pk, merged_from_event_ids, and each sportsbook's own event id + link under books. Use...

Parameters* required
sport_key*string
Sport key, e.g. baseball_mlb.
propline_lookup_event_idsFree-tier endpoint. Reverse id lookup: give a sportsbook's own event id (book + book_event_id, e.g. book='pinnacle'), an ESPN event id or an MLB gamePk and get PropLine's event back with its full id crosswalk, status, completed flag and final score. Any date. Up to 50 comma-se...4 params

Free-tier endpoint. Reverse id lookup: give a sportsbook's own event id (book + book_event_id, e.g. book='pinnacle'), an ESPN event id or an MLB gamePk and get PropLine's event back with its full id crosswalk, status, completed flag and final score. Any date. Up to 50 comma-se...

Parameters* required
bookstring
Book key, e.g. pinnacle, draftkings, kalshi.
book_event_idstring
That book's event id(s), comma-separated.
espn_event_idstring
mlb_game_pkstring
propline_get_book_accuracyFree-tier endpoint. How well each sportsbook prices player props: each book's closing prop prices are de-vigged and scored (Brier) against the real result and against the other books on the same line. Per book: props scored, brier, consensus_brier, skill_bp (> 0 = closer to th...2 params

Free-tier endpoint. How well each sportsbook prices player props: each book's closing prop prices are de-vigged and scored (Brier) against the real result and against the other books on the same line. Per book: props scored, brier, consensus_brier, skill_bp (> 0 = closer to th...

Parameters* required
daysnumber
Look-back window, 7-120. Defaults to 30.
sportstring
Optional sport key, e.g. baseball_mlb.
propline_get_golf_roundsFree-tier endpoint. A golfer's completed rounds, newest first, with strokes, score to par and hole counts (eagles, birdies, pars, bogeys, doubles), plus last-5/10/20 averages. Every player in the field, back to 2024; a round in progress is never included. Filter by tour (pga,...4 params

Free-tier endpoint. A golfer's completed rounds, newest first, with strokes, score to par and hole counts (eagles, birdies, pars, bogeys, doubles), plus last-5/10/20 averages. Every player in the field, back to 2024; a round in progress is never included. Filter by tour (pga,...

Parameters* required
limitnumber
Rounds to return, 1-200. Defaults to 20.
player*string
Player name (case/accents ignored) or ESPN athlete id.
sincestring
Optional YYYY-MM-DD lower bound.
tourstring
Optional comma-separated tours: pga, dp_world, liv, lpga, korn_ferry, champions. Omit for all.
propline_get_golf_tournamentsFree-tier endpoint. Golf tournaments we hold round data for, newest first, with player and round counts. Filter by tour (pga, dp_world, liv, lpga, korn_ferry, champions) and season.3 params

Free-tier endpoint. Golf tournaments we hold round data for, newest first, with player and round counts. Filter by tour (pga, dp_world, liv, lpga, korn_ferry, champions) and season.

Parameters* required
limitnumber
1-500. Defaults to 50.
seasonnumber
Optional season year.
tourstring
Optional comma-separated tours.
propline_get_injuriesFree-tier endpoint. The current injury report for NFL, NCAAF, NBA, WNBA, NHL or MLB: each listed player with status (Out, Questionable, Day-To-Day, 15-Day-IL...), status_code, injury, expected return and status_since (when the current status began). Source: ESPN, every 10 minu...3 params

Free-tier endpoint. The current injury report for NFL, NCAAF, NBA, WNBA, NHL or MLB: each listed player with status (Out, Questionable, Day-To-Day, 15-Day-IL...), status_code, injury, expected return and status_since (when the current status began). Source: ESPN, every 10 minu...

Parameters* required
sport_key*string
football_nfl, football_ncaaf, basketball_nba, basketball_wnba, hockey_nhl or baseball_mlb.
statusstring
Optional comma-separated status codes: out, doubtful, questionable, probable, day_to_day, injured_list, suspended, other.
teamstring
Optional team name or abbreviation, e.g. KC.
propline_get_injury_historyFree-tier endpoint. Every injury status change in a sport over the last 1-90 days, newest first: old_status -> new_status with the time we saw it (new_status null = came off the report). History starts 2026-10-18. Pair with odds history to see how lines moved on a ruling.3 params

Free-tier endpoint. Every injury status change in a sport over the last 1-90 days, newest first: old_status -> new_status with the time we saw it (new_status null = came off the report). History starts 2026-10-18. Pair with odds history to see how lines moved on a ruling.

Parameters* required
daysnumber
1-90. Defaults to 7.
playerstring
Optional player name (substring match).
sport_key*string
football_nfl, football_ncaaf, basketball_nba, basketball_wnba, hockey_nhl or baseball_mlb.
propline_get_refereesFree-tier endpoint. Card stats per referee: graded matches, yellow and red cards, cards per match, last match and next appointment. 32 soccer leagues (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS, Championship, Eredivisie, Liga MX, Brasileirao, UEFA cups, Liberta...4 params

Free-tier endpoint. Card stats per referee: graded matches, yellow and red cards, cards per match, last match and next appointment. 32 soccer leagues (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS, Championship, Eredivisie, Liga MX, Brasileirao, UEFA cups, Liberta...

Parameters* required
searchstring
Optional referee name (substring match).
sincestring
Optional start date, YYYY-MM-DD.
sport_key*string
A soccer league key, e.g. soccer_epl, soccer_la_liga, soccer_mls.
untilstring
Optional end date, YYYY-MM-DD.
propline_get_referee_matchesFree-tier endpoint. One referee's summary plus their matches, newest first, with each team's yellow and red cards (null until graded) and upcoming appointments. Same 32 soccer leagues as propline_get_referees. Get exact names from propline_get_referees.5 params

Free-tier endpoint. One referee's summary plus their matches, newest first, with each team's yellow and red cards (null until graded) and upcoming appointments. Same 32 soccer leagues as propline_get_referees. Get exact names from propline_get_referees.

Parameters* required
limitnumber
1-500. Defaults to 100.
name*string
Referee name, e.g. Michael Oliver.
sincestring
Optional start date, YYYY-MM-DD.
sport_key*string
A soccer league key, e.g. soccer_epl, soccer_la_liga, soccer_mls.
untilstring
Optional end date, YYYY-MM-DD.
propline_get_market_coverageFree-tier endpoint. Every market each book is pricing on a sport's games in the next N days, and on how many of those games. Returns the game count and, per book, game_lines and props entries {market, period, events, markets, last_update}. Useful for: 'which books have NFL pla...3 params

Free-tier endpoint. Every market each book is pricing on a sport's games in the next N days, and on how many of those games. Returns the game count and, per book, game_lines and props entries {market, period, events, markets, last_update}. Useful for: 'which books have NFL pla...

Parameters* required
daysnumber
Games starting in the next N days, 1-7. Defaults to 3.
periodsboolean
Include quarter / half / inning markets. Defaults to false.
sport_key*string
e.g. football_nfl, baseball_mlb.
propline_get_history_coverageFree-tier endpoint. When each book's odds history starts for a sport: history_start, game_lines_start, props_start, latest_event, event count, and whether the book is retired. Useful for: 'how far back do we have Fanatics MLB props'.1 params

Free-tier endpoint. When each book's odds history starts for a sport: history_start, game_lines_start, props_start, latest_event, event count, and whether the book is retired. Useful for: 'how far back do we have Fanatics MLB props'.

Parameters* required
sport_key*string
e.g. baseball_mlb.
propline_get_event_statsBook-agnostic raw box-score stats for an event. Returns per-player stats (e.g. strikeouts, hits, points, rebounds, shots-on-goal) decoupled from any sportsbook's lines. LIVE during games for major US sports (MLB + WNBA now; NFL, NCAAF, NBA, NHL at season start): while the even...2 params

Book-agnostic raw box-score stats for an event. Returns per-player stats (e.g. strikeouts, hits, points, rebounds, shots-on-goal) decoupled from any sportsbook's lines. LIVE during games for major US sports (MLB + WNBA now; NFL, NCAAF, NBA, NHL at season start): while the even...

Parameters* required
event_id*string | number
sport_key*string
propline_get_event_resultsPro-tier endpoint. Returns graded prop outcomes for a completed event — every Over/Under marked won, lost, push, or void with the actual stat value next to the line. The single most distinctive feature vs the-odds-api: they don't grade props at any tier. Free tier returns the...4 params

Pro-tier endpoint. Returns graded prop outcomes for a completed event — every Over/Under marked won, lost, push, or void with the actual stat value next to the line. The single most distinctive feature vs the-odds-api: they don't grade props at any tier. Free tier returns the...

Parameters* required
bookmakersstring
Comma-separated book keys to restrict to (e.g. bovada). Default returns all books; an unfiltered MLB game can run several MB, so pass one book when that is enough.
event_id*string | number
marketsstring
Comma-separated market keys to restrict to (e.g. pitcher_strikeouts,batter_hits).
sport_key*string
propline_get_event_contextGame context for an event — the conditions a prop settles under. MLB: probable starting pitchers and their throwing hand (L/R/S — platoon-split context for every batter prop), a confirmed-lineup flag, the home-plate umpire, and first-pitch weather (temperature, wind, precipita...2 params

Game context for an event — the conditions a prop settles under. MLB: probable starting pitchers and their throwing hand (L/R/S — platoon-split context for every batter prop), a confirmed-lineup flag, the home-plate umpire, and first-pitch weather (temperature, wind, precipita...

Parameters* required
event_id*string | number
sport_key*string
propline_get_event_movementLine movement + steam detection from the snapshot tick history. Per (book, market, outcome): opening line, latest line, signed implied-probability shift, point shift, direction. The steam[] array flags outcomes that multiple books moved the same direction — the classic sharp-m...7 params

Line movement + steam detection from the snapshot tick history. Per (book, market, outcome): opening line, latest line, signed implied-probability shift, point shift, direction. The steam[] array flags outcomes that multiple books moved the same direction — the classic sharp-m...

Parameters* required
bookmakersstring
Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, betway, hardrock, fanatics, betus, betonlineag, lowvig, onexbet, tab_au, rebet, fliff, courtsi...
event_id*string | number
include_book_idsboolean
When true, each outcome also carries book_outcome_id — the book's own selection id.
marketsstring
Comma-separated market keys. Defaults to h2h,spreads,totals.
periodstring
Game-period filter (q1..q4, h1/h2, p1..p3, i1..i9, f3/f5/f7; comma-separated, or 'all'). Omit for full-game.
sincestring
Measure movement from this moment instead of each line's first quote: ISO-8601 timestamp or a negative offset from now ('-6h', '-30m', '-2d'). Steam then covers only moves inside the window.
sport_key*string
propline_search_playersFind a player by name fragment and get their stable player_id (e.g. 'mlb:677951') plus every spelling the books use (known_names). Free tier. Pass the player_id as player_name to propline_get_player_history / propline_get_player_trends to avoid name-spelling ambiguity.3 params

Find a player by name fragment and get their stable player_id (e.g. 'mlb:677951') plus every spelling the books use (known_names). Free tier. Pass the player_id as player_name to propline_get_player_history / propline_get_player_trends to avoid name-spelling ambiguity.

Parameters* required
limitnumber
Max players to return, 1-100. Default 25.
search*string
Name fragment to match, e.g. 'judge'
sport_key*string
propline_get_player_historyPlayer prop history across recent games for one market. Returns each prior prop this player took with line, prices, resolution, actual value, is_main_line (the book's main line vs an alt-ladder rung) and line_moved_in_play. Pass main_line_only=true to drop alt rungs. Pro tier...6 params

Player prop history across recent games for one market. Returns each prior prop this player took with line, prices, resolution, actual value, is_main_line (the book's main line vs an alt-ladder rung) and line_moved_in_play. Pass main_line_only=true to drop alt rungs. Pro tier...

Parameters* required
limitnumber
Max number of past games (default 20, max 100)
main_line_onlyboolean
Only each book's main line (drops alt-ladder rungs). Omit for every line.
marketstring
Market key, e.g. 'pitcher_strikeouts' or 'player_points'
marketsstring
Deprecated alias: the first market of a comma-separated list is used when `market` is omitted
player_name*string
Player name as it appears in box scores — e.g. 'Aaron Judge', 'Nikola Jokic' — or a player_id from propline_search_players, e.g. 'mlb:592450'
sport_key*string
propline_get_player_gamesA player's recent games with every raw box-score stat per game — one call instead of one request per event. Use this to answer 'how has X actually performed lately?' and to build L5/L10/L20, season splits and head-to-head yourself. Pass `opponent` for H2H (accepts a full name,...5 params

A player's recent games with every raw box-score stat per game — one call instead of one request per event. Use this to answer 'how has X actually performed lately?' and to build L5/L10/L20, season splits and head-to-head yourself. Pass `opponent` for H2H (accepts a full name,...

Parameters* required
limitnumber
Games to return, 1-100. Default 20.
opponentstring
Optional head-to-head filter — team name, nickname or abbreviation.
player_name*string
Player name as it appears in box scores — e.g. 'Aaron Judge', 'Nikola Jokic' — or a player_id from propline_search_players, e.g. 'mlb:592450'
sport_key*string
stat_typestring
Optional comma-separated stat names to return; omit for all. Vocabulary is per-sport.
propline_get_player_trendsHit-rate trends / last-N-games over rate for a player — unique to PropLine's prop-resolution data. For each market the player has graded history in, returns over/under/push splits across the last 5/10/20/50 graded games, current streak, average actual stat, and the recent line...4 params

Hit-rate trends / last-N-games over rate for a player — unique to PropLine's prop-resolution data. For each market the player has graded history in, returns over/under/push splits across the last 5/10/20/50 graded games, current streak, average actual stat, and the recent line...

Parameters* required
dfs_odds_typestring
Optional PrizePicks pick-em flavor. When set, the trend is computed against that flavor's PrizePicks line only (e.g. compare a player's goblin-line hit-rate vs his standard-line trend). Omit for th...one of standard · goblin · demon
marketstring
Optional single market to scope trends to (e.g. 'player_points'). Omit for all markets.
player_name*string
Player name as it appears in box scores — e.g. 'Aaron Judge', 'Nikola Jokic' — or a player_id from propline_search_players, e.g. 'mlb:592450'
sport_key*string
propline_get_event_evPro-tier endpoint. Returns cross-book +EV per outcome for an event. We anchor on a sharp book, remove vig, derive a no-vig fair line, and compute EV% per book at the same line. Outcomes are sorted with +EV plays floated to the top of each line group. PrizePicks is excluded fro...8 params

Pro-tier endpoint. Returns cross-book +EV per outcome for an event. We anchor on a sharp book, remove vig, derive a no-vig fair line, and compute EV% per book at the same line. Outcomes are sorted with +EV plays floated to the top of each line group. PrizePicks is excluded fro...

Parameters* required
bookmakersstring
Comma-separated book keys (e.g. 'draftkings,fanduel') to price only the user's books. Narrows prices, not the anchor.
devigstring
How the anchor's vig is removed. 'multiplicative' (default) divides each implied probability by the booksum; 'shin' solves Shin's insider-trading model, which loads the overround onto the longshot...one of multiplicative · shin
event_id*string | number
fair_sourcestring
Optional anchor override: one book or a comma-separated list tried IN ORDER per line, from pinnacle, polymarket, kalshi, bovada, smarkets (anything else is a 400). Lines none of them anchor are dro...
marketsstring
max_ageinteger
Optional, seconds. Drops quoted prices the book has not delivered within that many seconds (each outcome carries last_update). The fair line is unaffected.
min_ev_pctnumber
Filter to outcomes with EV ≥ this percent (e.g. 2.0).
sport_key*string
propline_get_event_projectionsMarket-implied consensus projection per (market, player) for an event: the line where the no-vig P(over) crosses 50%, median across contributing sportsbooks. Use it to validate statistical or fantasy projections against the live market. These are MARKET-IMPLIED values derived...3 params

Market-implied consensus projection per (market, player) for an event: the line where the no-vig P(over) crosses 50%, median across contributing sportsbooks. Use it to validate statistical or fantasy projections against the live market. These are MARKET-IMPLIED values derived...

Parameters* required
event_id*string | number
marketsstring
Comma-separated market keys, e.g. 'player_pass_yds,player_receptions'.
sport_key*string
propline_get_best_lineCross-book line shopping (Hobby+ for prices; free tier gets the full structure with book identities + best-first ranking but prices nulled and redacted:true). For every (market, player, line) tuple on an event, returns the single best American price across all comparable books...5 params

Cross-book line shopping (Hobby+ for prices; free tier gets the full structure with book identities + best-first ranking but prices nulled and redacted:true). For every (market, player, line) tuple on an event, returns the single best American price across all comparable books...

Parameters* required
bookmakersstring
Comma-separated book keys (e.g. 'draftkings,fanduel') to shop only those books.
event_id*string | number
include_linksboolean
When true, every price row carries a link — that book's public event-page URL, the click-out for 'go bet this'. Books without a verified URL template return null. Also adds app_link — a mobile app-...
marketsstring
Comma-separated market keys (e.g. 'pitcher_strikeouts,h2h').
sport_key*string
propline_list_webhooksList the API key's webhook subscriptions (Streaming Lite tier and up; other tiers get a 403 with an upgrade URL). Read-only: signing secrets are always masked, and this server deliberately has no create/update/delete tools — manage subscriptions via the REST API or SDKs. Each...

List the API key's webhook subscriptions (Streaming Lite tier and up; other tiers get a 403 with an upgrade URL). Read-only: signing secrets are always masked, and this server deliberately has no create/update/delete tools — manage subscriptions via the REST API or SDKs. Each...

No parameters. Call it with no arguments.

propline_get_webhook_deliveriesRecent delivery attempts for one webhook (Streaming Lite tier and up), newest first — the debugging surface for 'why isn't my webhook firing'. Each row: status (pending/success/failed), HTTP response_code, attempts, delivered_at and the payload that was sent. A pending row wit...3 params

Recent delivery attempts for one webhook (Streaming Lite tier and up), newest first — the debugging surface for 'why isn't my webhook firing'. Each row: status (pending/success/failed), HTTP response_code, attempts, delivered_at and the payload that was sent. A pending row wit...

Parameters* required
before_idnumber
Cursor: smallest delivery id from the previous page.
limitnumber
Rows per page, 1-200. Default 50.
webhook_id*number
Webhook id (from propline_list_webhooks).
propline_replay_webhook_eventsRe-read a webhook subscription's events in order from a cursor — answers 'my endpoint was down, what did I miss?'. Every delivery carries an X-PropLine-Sequence header, a counter monotonic WITHIN one subscription; pass the highest one the user processed as since_seq. Do NOT us...3 params

Re-read a webhook subscription's events in order from a cursor — answers 'my endpoint was down, what did I miss?'. Every delivery carries an X-PropLine-Sequence header, a counter monotonic WITHIN one subscription; pass the highest one the user processed as since_seq. Do NOT us...

Parameters* required
limitnumber
Events per page, 1-500. Default 100.
since_seqnumber
Read events after this sequence. Default 0 = from the oldest retained event (which on an established subscription will correctly report truncated: true).
webhook_id*number
Webhook id (from propline_list_webhooks).
propline_create_free_api_keyCreate a free personal PropLine API key for the user and EMAIL it to them. Use this when the user wants their own key — e.g. they hit a shared-demo-key rate limit, a paid field came back redacted, or they ask how to get a key. Only call it with an email address the user explic...1 params

Create a free personal PropLine API key for the user and EMAIL it to them. Use this when the user wants their own key — e.g. they hit a shared-demo-key rate limit, a paid field came back redacted, or they ask how to get a key. Only call it with an email address the user explic...

Parameters* required
email*string
The user's own email address, as they gave it.

Sponsors

Configuration

PROPLINE_API_KEY*secret

PropLine API key. Free tier (1,000 req/day, no card) at https://prop-line.com

PROPLINE_BASE_URL

Override the API origin (default https://api.prop-line.com). For self-hosted setups only.

Readme

propline-mcp

npm version License: MIT mcp.market

Listed in the official MCP Registry as io.github.proplineapi/propline-mcp — discoverable from Claude Code, Claude Desktop, and any MCP-aware client.

Model Context Protocol server for the PropLine player props betting odds API. Plug it into Claude Desktop, Claude Code, or any MCP-compatible client and ask natural-language questions about live odds, prop resolution, cross-book +EV, scores, and box-score stats — the model picks the right tool, calls the API, and answers from real data.

No more "I'd need an API for that" deflections from your AI assistant. PropLine MCP turns sports-betting research into a chat.

What you can ask

Once installed, you can prompt the model with things like:


View the full README on GitHub

Details

Repository
github.com/proplineapi/propline-mcp
Website
prop-line.com
Package
propline-mcp
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026