PropLine — Sports Betting Odds & Prop Resolution
Server Details
Live odds, cross-book +EV and graded player-prop results across 21 books. Hosted endpoint included.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- proplineapi/propline-mcp
- GitHub Stars
- 1
- Server Listing
- PropLine
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
21 toolspropline_export_odds_historyExport odds historyRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ISO datetime lower bound on recorded_at (required, e.g. 2026-04-01T00:00:00Z). Keep the window narrow. | |
| until | Yes | ISO datetime upper bound on recorded_at (required, e.g. 2026-05-01T00:00:00Z). | |
| market | No | Optional market key filter | |
| bookmaker | No | Optional bookmaker filter | |
| sport_key | Yes | Sport key, e.g. baseball_mlb |
propline_get_best_lineGet best lineRead-onlyIdempotentInspect
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) are excluded; Underdog only at clean two-way lines. Optional bookmakers filter to shop only the books the user holds accounts at.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | Comma-separated market keys (e.g. 'pitcher_strikeouts,h2h'). | |
| event_id | Yes | ||
| sport_key | Yes | ||
| bookmakers | No | Comma-separated book keys (e.g. 'draftkings,fanduel') to shop only those books. | |
| include_links | No | 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. |
propline_get_dfs_payoutsGet DFS payoutsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| leg_win_prob | No | Optional assumed per-leg win probability in [0,1]. Adds expected_return + is_plus_ev to each play. |
propline_get_event_contextGet event contextRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| sport_key | Yes |
propline_get_event_evGet cross-book +EVRead-onlyIdempotentInspect
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, 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.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | ||
| event_id | Yes | ||
| sport_key | Yes | ||
| bookmakers | No | Comma-separated book keys (e.g. 'draftkings,fanduel') to price only the user's books. Narrows prices, not the anchor. | |
| min_ev_pct | No | Filter to outcomes with EV ≥ this percent (e.g. 2.0). |
propline_get_event_movementGet line movement & steamRead-onlyIdempotentInspect
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 16 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. Hobby+ full; free tier redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Game-period filter (q1..q4, h1/h2, p1..p3, i1..i9, f3/f5/f7; comma-separated, or 'all'). Omit for full-game. | |
| markets | No | Comma-separated market keys. Defaults to h2h,spreads,totals. | |
| event_id | Yes | ||
| sport_key | Yes | ||
| bookmakers | No | Comma-separated subset of book keys (e.g. 'draftkings,fanduel'). Default returns all available. |
propline_get_event_resultsGet graded prop resultsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| sport_key | Yes |
propline_get_event_statsGet event statsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| sport_key | Yes |
propline_get_futuresGet futuresRead-onlyIdempotentInspect
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, and Pinnacle. 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).
| Name | Required | Description | Default |
|---|---|---|---|
| sport_key | Yes | Sport key — e.g. football_nfl, basketball_nba, baseball_mlb. |
propline_get_mlb_grand_salamiGet MLB Grand SalamiRead-onlyIdempotentInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD UTC date. Defaults to today (UTC) when omitted. |
propline_get_nhl_daily_goals_totalGet NHL daily goals totalRead-onlyIdempotentInspect
Free-tier endpoint. Returns the synthetic daily NHL goals total (hockey's equivalent of the MLB Grand Salami) for a given UTC 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'.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD UTC date. Defaults to today (UTC) when omitted. |
propline_get_oddsGet oddsRead-onlyIdempotentInspect
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 13: Bovada, DraftKings, FanDuel, Pinnacle, BetMGM, BetRivers, Unibet, Underdog, PrizePicks, Kalshi, Polymarket, Matchbook, Smarkets — coverage varies by sport). 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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 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 multiple. 'all' = include every period alongside full-game. | |
| markets | No | 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_strikeouts,batter_home_runs for MLB). | |
| event_id | No | Optional. If set, returns props for this event. | |
| sport_key | Yes | ||
| bookmakers | No | Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, underdog, prizepicks, kalshi, polymarket, matchbook, smarkets). Default returns all available. | |
| include_links | No | 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 affiliate tagging. | |
| include_book_ids | No | 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 id instead of matching team/player names and lines. Kalshi ships both (event ticker + per-contract market ticker, e.g. KXMLBGAME-26AUG08NYYBOS-NYY); most other books ship an event id; books without a stable id return null. NB a two-sided market can share ONE book_outcome_id across both legs — a Kalshi contract is binary, so Over/Under are its YES/NO sides; the outcome's name says which side. |
propline_get_odds_closingGet opening & closing linesRead-onlyIdempotentInspect
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 in the same 14-day pre-kickoff window (opening_price/opening_point/opening_at). 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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 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'. | |
| markets | No | ||
| event_id | Yes | ||
| sport_key | Yes | ||
| bookmakers | No | Comma-separated subset of book keys (e.g. 'draftkings,fanduel'). Default returns all available. |
propline_get_odds_historyGet odds historyRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO timestamp; only include snapshots at or before. Mutually exclusive with relative_to. | |
| from | No | ISO timestamp; only include snapshots at or after. Mutually exclusive with relative_from. | |
| period | No | 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'. | |
| markets | No | ||
| event_id | Yes | ||
| interval | No | Downsample bucket. Latest snapshot per bucket wins. | |
| sport_key | Yes | ||
| bookmakers | No | Comma-separated subset of book keys (e.g. 'draftkings,fanduel'). Default returns all available. | |
| relative_to | No | Offset to commence_time, e.g. '-1m' or '0'. Mutually exclusive with to. | |
| changes_only | No | When true, drop snapshots whose (price, point) match the previous one. | |
| relative_from | No | Offset to commence_time, e.g. '-3h', '-30m', '-90s'. Mutually exclusive with from. |
propline_get_player_historyGet player prop historyRead-onlyIdempotentInspect
Player prop history across recent games. Returns each prior prop this player took with line, prices, resolution, and actual value. Pro tier returns full data; free tier returns redacted resolution/actual_value with an upgrade pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of past games (default 20, max 100) | |
| markets | No | Comma-separated subset of markets (e.g. 'player_points,player_rebounds') | |
| sport_key | Yes | ||
| player_name | Yes | Player name as it appears in box scores — e.g. 'Aaron Judge', 'Nikola Jokic' |
propline_get_player_trendsGet player trendsRead-onlyIdempotentInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Optional single market to scope trends to (e.g. 'player_points'). Omit for all markets. | |
| sport_key | Yes | ||
| player_name | Yes | Player name as it appears in box scores — e.g. 'Aaron Judge', 'Nikola Jokic' | |
| dfs_odds_type | No | 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 the default cross-book behavior. |
propline_get_resolution_summaryGet resolution summaryRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back window, 1-90. Defaults to 30. |
propline_get_scoresGet scoresRead-onlyIdempotentInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| days_from | No | How many past days of completed games to include. Defaults to 1. | |
| sport_key | Yes |
propline_list_event_marketsList event marketsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| sport_key | Yes |
propline_list_eventsList eventsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | If true, only return in-progress (live) events. Defaults to false. | |
| sport_key | Yes | Sport key from propline_list_sports — e.g. baseball_mlb, basketball_nba |
propline_list_sportsList sportsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityBmaintenanceProps-first sports odds API with a hosted MCP server. Live odds and player props (moneyline, spreads, totals) across US sportsbooks, normalized to JSON. Tools: get_odds, get_props, get_events, get_books. API-key auth, free tier.MIT No Attribution
- AlicenseAqualityBmaintenanceLive sports betting player props MCP server covering NBA, MLB, NFL, NHL, NCAA, and soccer. Unified from real sportsbooks into one REST API and a real MCP server (Streamable HTTP). Free tier, no card required.5MIT
- AlicenseBqualityDmaintenanceMCP-compatible server that gives AI agents access to alternative sports data across 30+ leagues — odds, events, probabilities, settlement, and futures for prediction markets, DFS platforms, and sportsbooks.2915MIT

Odds-API MCP Serverofficial
AlicenseAqualityBmaintenanceEnables AI assistants to access sports betting odds data from 265+ bookmakers across 34 sports, including events, odds, historical data, arbitrage, and value bets.2295MIT
Your Connectors
Sign in to create a connector for this server.