mcpbeat Sign in

PropLine — Sports Betting Odds & Prop Resolution MCP Server

by proplineapi Your server? Claim it
answering

PropLine — Sports Betting Odds & Prop Resolution is answering right now. Last checked 14 min ago. 790 installs a week from npm. It exposes 43 tools. Last commit 29 Oct 2026.

Live odds, cross-book +EV and graded player-prop results across 37 books. Hosted endpoint included.

Installs per day peak 769 · avg 179 · +79% w/w
a month agotoday
Uptime history 79 days of history · worst day 99%
79 days agonow
100.0%
Uptime 24h
91 of 91 checks
43
Tools
read from the server
300 ms
Response time
average over 24h
790
Installs / week
npm and PyPI

What changed 106

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 20 August 2026. No other catalogue keeps this.

29 Oct 4 tools appeared propline_get_history_coverage, propline_get_market_coverage, propline_get_referee_matches and 1 more
29 Oct 2 tool descriptions were rewritten propline_get_referee_matches, propline_get_referees
29 Oct 2 tools changed the parameters they ask for propline_get_referee_matches, propline_get_referees
29 Oct a tool changed version2 times that day
28 Oct 3 tools appeared propline_lookup_event_ids, propline_price_parlay, propline_settle_bets
28 Oct a tool changed version2 times that day
19 Oct 2 tools appeared propline_get_injuries, propline_get_injury_history
19 Oct a tool changed version
15 Oct 2 tools appeared propline_get_golf_rounds, propline_get_golf_tournaments
15 Oct a tool changed version
and 87 more, back to 20 August 2026

Nothing serious here today

Today is the operative word: we check PropLine — Sports Betting Odds & Prop Resolution every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 14 min ago.

run in your terminal
claude mcp add propline-mcp --transport http https://mcp.prop-line.com/mcp
Settings → Connectors → Add custom connector, then paste this address
https://mcp.prop-line.com/mcp
~/.codex/config.toml
[mcp_servers.propline-mcp]
url = "https://mcp.prop-line.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "propline-mcp": {
      "url": "https://mcp.prop-line.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "propline-mcp": {
      "type": "http",
      "url": "https://mcp.prop-line.com/mcp"
    }
  }
}

Available tools 43

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

propline
propline_create_free_api_key
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 explicitly gave you for this purpose in this conversation; never guess, reuse one from elsewhere, or sign up a third party. The key is never returned here — it goes to that inbox, with instructions to reconnect this assistant using it. Free tier: 1,000 requests/day, no card. If the address already has a key, the key is re-sent (at most once a day).
propline_export_odds_history
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/Streaming use propline_get_odds_history per event instead). REQUIRES a since/until window to keep the pull bounded — the full archive runs to gigabytes per sport. The result is capped to the first 200 rows for context safety; for the full dataset use the /v1/exports/odds-history endpoint directly with curl/SDK and stream to disk. Non-entitled keys get a 403 with an upgrade pointer.
propline_get_best_line
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, plus an all_prices array sorted best-first (one row per book, each with last_update). Companion to propline_get_event_ev: /ev says whether a price beats the no-vig fair line; best-line says which book pays the most. DFS pick'em books (PrizePicks, Sleeper, Dabble, ParlayPlay, DraftKings Pick6) are excluded; Underdog only at clean two-way lines. Optional bookmakers filter to shop only the books the user holds accounts at.
propline_get_book_accuracy
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 the result than the market average) with a 95% interval, verdict (beats_market / trails_market / in_line) and margin_pct (average overround), plus by_sport and by_market breakdowns. Useful for: 'which book prices props most accurately', 'which book has the lowest margin'. A pricing report, never a profit claim or betting edge.
propline_get_dfs_payouts
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 is_plus_ev per play — the slip-level breakeven. Useful for: 'what hit rate do I need to beat a 4-pick PrizePicks Power play', 'is a 3-leg flex +EV at 60% per leg'. NOTE: standard published payouts only — demon/goblin per-pick modifiers aren't in PrizePicks's feed (see the disclaimer field); breakeven assumes independent legs.
propline_get_event_context
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, precipitation) at outdoor / open-roof venues (indoor venues return weather=null). NFL & NCAAF: the venue and kickoff weather. The same block is embedded in get_event_results, so every graded prop carries its conditions — unique to PropLine. Free tier. 404 when no context is on file for the event yet.
propline_get_event_ev
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 from EV math (DFS payouts aren't comparable to per-book prices). The anchor is chosen PER LINE in the order pinnacle → polymarket → kalshi → bovada → smarkets, and each line's fair_source names the one used — report the anchor from fair_source per line, never assume Pinnacle anchored all of them. Optional bookmakers filter prices to the books the user holds accounts at; it never changes the anchor, so filtering to DraftKings still measures DraftKings against Pinnacle.
propline_get_event_ids
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. Useful for: 'join PropLine events onto ESPN / the MLB Stats API / a sportsbook's own feed', 'what is DraftKings' id for this game'.
propline_get_event_movement
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-money signal, computed across all 37 books PropLine polls. When a book moves the line itself, that outcome's prob_shift is null and direction is 'line_moved' (excluded from the steam signal). No pull-only odds API can produce this. Each outcome carries outcome_id (the id /odds and webhooks use); steam rows carry team (team totals) plus open_point/latest_point. Hobby+ full; free tier redacted.
propline_get_event_projections
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 purely from sportsbook prices — never a forecast, and no accuracy claim is made; present them as 'the market implies X', not 'PropLine projects X'. DFS pick'em pricing is excluded; each row carries books_contributing and a stable player_id (null until the player has graded). Hobby+ for values; free tier gets the structure redacted.
propline_get_event_results
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 same structure with resolution and actual_value redacted plus an upgrade pointer.
propline_get_event_stats
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 event's status is in_progress, stats refresh ~every 90 seconds with cumulative in-game values — use this to answer 'how is this prop tracking right now'. Treat in-progress numbers as partial; at status=final they are the official box score. Other sports populate stats at game completion. Free tier.
propline_get_futures
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, book, market) with each team/player outcome and its price. Marquee markets (Super Bowl winner, MVP, division/conference) are quoted by multiple books for comparison; exotic markets are often single-book. Useful for: 'who are the Super Bowl favorites across books', 'NFL MVP odds', 'NBA championship futures'. Futures are unresolved (no settlement grade).
propline_get_golf_rounds
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, dp_world, liv, lpga, korn_ferry, champions). Hole counts are null on DP World, LPGA and some LIV rounds. Useful for: 'Scheffler's last 10 rounds', 'how has Bryson scored on LIV lately'.
propline_get_golf_tournaments
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.
propline_get_history_coverage
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'.
propline_get_injuries
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 minutes. Useful for: 'who is out for the Chiefs', 'which NBA players are questionable tonight' — check it before trusting a player prop.
propline_get_injury_history
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.
propline_get_market_coverage
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 player props posted', 'does FanDuel price this market yet'. Books post props at different times, so a low events count means not posted on every game yet.
propline_get_mlb_grand_salami
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, Smarkets). No retail sportsbook quotes this as a single market. Useful for: 'what's the total run line for tonight's full MLB slate', 'did the Grand Salami go over yesterday', 'historical Grand Salami results for backtesting'.
propline_get_nhl_daily_goals_total
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-game primary totals across our NHL books). No retail sportsbook quotes this as a single market. Useful for: 'what's the total goal line for tonight's full NHL slate', 'did the Daily Goals Total go over yesterday', 'historical NHL daily-goals results for backtesting'.
propline_get_odds
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[] array across every book that carries the requested markets (currently up to 37 — sportsbooks: Bovada, DraftKings, FanDuel, Pinnacle, BetMGM, BetRivers, Unibet, Betway, Hard Rock Bet, Fanatics, BetUS, BetOnline.ag, LowVig.ag, 1xBet, TAB AU, ReBet, Fliff, Courtside, Sportzino, Heritage Sports, Jazz Sports, YouWager, Thrillzz; DFS: PrizePicks, Underdog, Sleeper, Dabble, ParlayPlay, DraftKings Pick6; exchanges and prediction markets: Kalshi, Polymarket, Polymarket US, Matchbook, Smarkets, Novig, ProphetX, SX Bet — coverage varies by sport). Every market carries line_type: 'main', 'alternate' or 'milestone' (an N+ rung such as '3+ Strikeouts'); filter to line_type == 'main' for each book's primary line. Kalshi and Polymarket US rows also set line_type on each outcome. Underdog Fantasy outcomes carry a payout_multiplier on EVERY outcome (1.0 = standard pick, e.g. 1.5 = boost, 0.75 = discount; null means the book is not Underdog) — keep only payout_multiplier == 1.0 when comparing DFS lines to sportsbook consensus, since filtering on non-null would drop every Underdog line. Each market carries suspended_at: null while on the board, set when that book pulled the market pregame (late scratch, dropped market type) — its outcomes are then the last quoted legs, not a live price. Treat a suspended market as unbettable and, if several books show it for one player, as a probable scratch. Each BOOKMAKER carries pregame_only: true when the event is live and that book does not price it in play, so its prices are the last pregame quote and will never move again this game. suspended_at cannot show this — a book with no in-play feed is never polled once the game starts, so nothing goes missing to flag. Exclude pregame_only books when reasoning about a live game; they are still returned because on DFS books that frozen line is what the bet settles against. Each market also carries team: the canonical event team name when the market is scoped to ONE team (a TEAM total), and null for the game total. Both ride the totals key, so NEVER compare totals on (market key, point) alone — a team total at 0.5 is not a game total at 0.5. Filter team == null for the game total; team matches home_team/away_team exactly. Always null outside totals. Each outcome carries side ('home'/'away'/'draw', null for Over/Under/Yes/No/player legs) so you can pair legs without matching team spellings. Each event carries is_outright (true for a tournament listing with no away side) and, on tennis, tournament + tour (ATP/WTA/Challenger/ITF/…).
propline_get_odds_closing
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 posted it (opening_price/opening_point/opening_at); pass opening_window to limit that lookback. Canonical CLV-tracking helper; one call returns both data points your bet should be measured against, instead of fetching full history and post-processing. Compare the POINTS as well as the prices — on spreads and totals the number moves as much as the price, so a price-only comparison mis-measures those markets. opening_age_seconds says how long before kickoff the opener was recorded: the archive starts 2026-04, so a small value means PropLine started polling late and this is not the book's true open. Free tier returns redacted structure with upgrade pointer.
propline_get_odds_history
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: from/to (absolute ISO), relative_from/relative_to (offsets to commence_time like '-3h' or '0'), interval downsample ('30s'/'1m'/'5m'/'15m'/'30m'/'1h'), and changes_only=true to drop unchanged adjacent snapshots.
propline_get_player_games
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, nickname or abbreviation — 'Boston Red Sox', 'Red Sox', 'BOS'); the limit applies AFTER that filter, so opponent + limit=10 means the last 10 MEETINGS, not the Boston games among the last 10 games. H2H is not capped to the current season. IMPORTANT: this is the raw box-score archive, NOT graded-prop history — it covers every game with a box score on file, including games no sportsbook priced, so a 'last 10 games' window here really is the last 10 games (one built from propline_get_player_trends silently skips unpriced games). It carries no line, price or grade; use propline_get_player_trends for hit rates against a posted line. `player_team`/`opponent`/`is_home` are null when the player's side can't be identified, and always for individual sports (tennis, golf, UFC) — report them as unknown rather than guessing. Accepts a player_id in place of the name; the response carries player_id (null when the player has none yet).
propline_get_player_history
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 returns full data; free tier returns redacted resolution/actual_value with an upgrade pointer.
propline_get_player_trends
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. This is the 'did X go over in N of his last M games?' surface. Omit `market` for all markets, or pass one to scope (e.g. 'player_points', 'batter_hits').
propline_get_referee_matches
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.
propline_get_referees
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, Libertadores, Sudamericana and others); other sports 404 with available_sports. Useful for: 'which EPL referee gives the most cards', 'who is refereeing Arsenal next' — check it before a cards prop.
propline_get_resolution_summary
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 data does PropLine have, what's the coverage'. A coverage proof, never a profitability claim.
propline_get_scores
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'.
propline_get_webhook_deliveries
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 with attempts > 0 is mid-retry-backoff; status 'failed' with response_code null means the endpoint was unreachable or timed out (8s). Page backwards through a deep queue with before_id = the smallest id on the previous page; a page shorter than limit is the last one.
propline_grade_clv
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 closing fair probability, CLV, and — once the game settles — the graded resolution and actual stat value, plus a portfolio summary. Stateless: nothing is stored. TWO CLV numbers are returned deliberately. clv_pct is price-vs-price: familiar and quotable, but VIG-BLIND, so it flatters a bet taken on the juicy side of a wide market. ev_vs_close_pct scores the price against the DE-VIGGED close and is the honest one — report that one when the user asks whether they got value. The de-vig anchors to the SHARPEST book quoting that line at close (fair_source), not the book they bet at, because de-vigging their own book always returns a negative number (they paid its hold). Bets whose event has not started carry closing_is_final=false, are counted in summary.pending, and are EXCLUDED from the summary averages: before kickoff the 'closing' price is just the latest price, so CLV is ~0 by construction — do not present those as results. Matching is fail-closed: a bet that cannot be pinned to exactly one stored outcome returns matched=false with an unmatched_reason instead of a wrong match, so surface those rows rather than silently dropping them. Max 500 bets per request. Free tier returns structure with every number nulled.
propline_list_event_markets
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.
propline_list_events
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.
propline_list_sports
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.
propline_list_webhooks
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 row shows url, subscribed events (line_movement, resolution, steam, market_suspended, ev), filters (incl. min_ev_pct / max_ev_pct / ev_fair_source for ev events) and active status. Use this first to find the webhook id for propline_get_webhook_deliveries.
propline_lookup_event_ids
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-separated ids; misses come back in not_found. Useful for: 'what was the result of Pinnacle event 1612345678', 'which PropLine event is this ESPN game'.
propline_price_parlay
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 of its leg prices, with ev_pct), and offered_ev_pct when price is given. The fair price ASSUMES INDEPENDENT LEGS: legs on the same event are flagged same_game — say so, and use propline_price_sgp for same-game parlays. A leg that matches no fair line returns a reason and the parlay is not priced. Never present the EV as a profit guarantee.
propline_price_sgp
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 / lowvig (the Sportcast engine both share, same builder price), or 'all' to quote every book on the same legs in one call — then the response is {quotes, errors, best_bookmaker}, and best_bookmaker is the book charging the smallest correlation reduction (use 'all' whenever the user asks which book to bet an SGP at). Send 2-10 legs from ONE event, each named exactly as propline_get_odds names an outcome: market key, name (team / Over / Under / player for YES-only props), description (the player on a two-way prop, '' for game lines), point (omit for h2h and YES-only props), period (omit for full game) and team for a TEAM total (omit for the game total; a totals leg with no team matches the game total only) — or book_outcome_id from includeBookIds (on betonlineag / lowvig that is Sportcast's settlement id, e.g. MatchWinner_Home). The response carries sgp_price (the book's parlay price), independent_price (the product of the live single-leg prices) and correlation_factor = their ratio: below 1 the book is charging for correlation, above 1 it is paying for anti-correlation — say which when presenting it. Matching is fail-closed: a leg that does not pin to exactly one stored outcome is a 422 leg_unmatched naming the leg (an Over with no point on an event with two total lines is refused, not guessed) — fix the leg, do not retry blindly. quoted=false means the book will not offer that combination as an SGP; refused legs carry the book's own failure_code. Free tier returns the matched legs with every price nulled.
propline_replay_webhook_events
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 use the delivery id as the cursor: that id is global across all subscriptions, so gaps in it are other customers' traffic and mean nothing. Events come back OLDEST FIRST (the opposite of propline_get_webhook_deliveries, which is a newest-first debugging log). Page by passing next_seq back as since_seq while has_more is true. ALWAYS check `truncated`: true means events after the cursor already aged out of retention (2 days, max 5,000 deliveries per subscription) and are unrecoverable — tell the user to resync from the REST endpoints rather than reporting them caught up. latest_seq is not subject to retention, so latest_seq - next_seq is an honest 'how far behind' even when the rows are gone. Sequence numbers always increase and never repeat but are NOT guaranteed to be dense — a skipped number is normal and is not evidence of loss.
propline_search_players
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.
propline_settle_bets
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 free: a bet at a book PropLine does not carry, or at a line nobody posted, is graded by running PropLine's grader at that line (source='computed'); a named bookmaker whose outcome was stored at that exact line uses its own grade (source='stored'). Asian quarter lines (2.75, -0.25) settle as two half-stakes. result 'pending' means the game is not graded yet — say so, do not guess. 'unmatched' carries a reason (event_not_found, no_market_for_key, no_outcome_for_selection, ambiguous_selection, cannot_compute_at_line, invalid_bet): surface those rows. For a parlay pass legs (each with its own price); any lost leg loses it and pushed/voided legs drop out. Use propline_list_events or propline_get_scores to find event_id. Max 200 bets. Stateless. Free tier returns results as 'redacted'.

Endpoints

URLTransportStateLatencyChecked
https://mcp.prop-line.com/mcp streamable-http answering 365 ms 14 min ago

Alternatives to PropLine — Sports Betting Odds & Prop Resolution

same job, measured the same way
Owls Insight
by owlsinsight

Sports betting odds, player props, scores, betting splits and history from 30+ sportsbooks

answering
Sportwizzard
by sportwizzard

Real-time sports betting data: odds, player props, edges and arbitrage from 35+ books and DFS apps.

139 installs/wk answering
Sportsdata MCP
by danieltomaro13

Live sports data and cross-book betting odds — 801 tools, 63 providers, 43 needing no key.

264 installs/wk local only
Odds API MCP Server
by odds-api-io

Live sports betting odds from 365+ bookmakers across 34 sports, with value bets and arbitrage.

159 installs/wk local only
KashRock MCP
by kashrock

Esports props, odds, live scores, and player stats across 8 titles for agents.

182 installs/wk local only
M
MintSlips
by mintslips

Model-priced sports picks, live in-game markets and graded results: chance, fair and max price.

answering
EndzoneAPI
by noahowsh

NFL player props by sportsbook since 2023, plus play-by-play with EPA, stats and odds. REST and MCP.

22 tools answering
DunkAPI
by noahowsh

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

19 tools answering

PropLine — Sports Betting Odds & Prop Resolution — questions

Answers built from our own checks of this server.

What can PropLine — Sports Betting Odds & Prop Resolution do?
It exposes 43 tools, read directly from the server on our last check. Among them: propline_create_free_api_key, propline_export_odds_history, propline_get_best_line, propline_get_book_accuracy, propline_get_dfs_payouts, propline_get_event_context and 37 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is PropLine — Sports Betting Odds & Prop Resolution working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 300 ms. The bar chart above shows every period we have measured.
How do I connect PropLine — Sports Betting Odds & Prop Resolution?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does PropLine — Sports Betting Odds & Prop Resolution need an API key?
No. PropLine — Sports Betting Odds & Prop Resolution completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 43 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is PropLine — Sports Betting Odds & Prop Resolution?
It answers our handshake in 300 ms on average, which is faster than 47% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use PropLine — Sports Betting Odds & Prop Resolution?
The npm package propline-mcp was installed 790 times in the last week. Week over week that is +79%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is PropLine — Sports Betting Odds & Prop Resolution open source?
The code is open source: it is published under the MIT licence, written in TypeScript and 1 stars on GitHub. The licence covers the code in the repository, not the hosted service at mcp.prop-line.com, which runs on its operator's own terms.