ParlayAPI
io.github.JacobiusMakes/parlayapiVersion 0.3.8Sports odds, player props and source coverage for AI assistants. Connect with your own API key.
Status
Responds171 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:38 UTC
- Latency
- 171 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://parlay-api.com/mcp/httpResponds171 msNo sign-in
Claude Code
claude mcp add --transport http parlayapi https://parlay-api.com/mcp/httpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: parlayapi
Remote MCP server URL: https://parlay-api.com/mcp/httpCursor
{
"mcpServers": {
"parlayapi": {
"url": "https://parlay-api.com/mcp/http"
}
}
}VS Code
code --add-mcp '{"name":"parlayapi","type":"http","url":"https://parlay-api.com/mcp/http"}'Streamable HTTP
pypi: parlayapi-mcp 0.3.8Package only
PyPI (uvx)
claude mcp add parlayapi -- uvx parlayapi-mcp==0.3.8Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
22 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
parlayapi_account_infoGet info about the API key currently in use: tier, credits
remaining, billing period.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_best_betsWhat should I bet right now? Ranked +EV plays for a sport.
The discovery counterpart to parlayapi_verdict: scans the whole board,
grades every candidate with the same no-vig engine, keeps only bets that
are +EV at a book the user can bet at, and ranks them by edge. Also returns
edge_alerts (books showing a price far off the market). Player props only,
priced by several books, prediction markets and game moneylines excluded
(for a game line, use parlayapi_verdict). Scoped to the user's books.
Args:
sport_key: e.g. "baseball_mlb".
region: us (default) | eu | uk | au | ca.
books: exact CSV of books you can bet at (overrides region).
limit: max plays to return (default 20).
min_edge: minimum edge %% vs the no-vig fair line (default 2.0).
| Not declared | Not declared | Not declared | Not declared |
parlayapi_best_lineFind the best (highest) price for each outcome across bookmakers.
Useful for line-shopping bots. Returns one row per game / market /
side with the bookmaker offering the best price.
Args:
sport_key: e.g. "baseball_mlb"
market: h2h | spreads | totals
bookmakers: Restrict the search to these books (optional).
| Not declared | Not declared | Not declared | Not declared |
parlayapi_book_coverageReturn public per-book coverage gates.
No API key required. This is the proof surface for whether each
source survives freshness, normalization, database, REST-shape, and
stream-shape checks.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_checkout_linkRequest an owner-authenticated checkout URL or an email-link flow.
A configured key is forwarded for the backend to verify account ownership.
With no matching key, the backend returns an email-flow acknowledgement
rather than a checkout URL. That response does not confirm email delivery.
Tiers: starter, pro, business, enterprise, scale. For current prices, call
parlayapi_get_pricing.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_consensusGet consensus (average) odds across all bookmakers per market.
Returns average, best, and worst price per (event, market, player,
line), a sharp baseline for line-shopping. Soccer and other 3-way
markets return separate home, draw, and away consensus rows.
Args:
sport_key: e.g. "baseball_mlb", "soccer_epl".
markets: Comma-separated market_keys (optional), e.g. "moneyline,totals".
| Not declared | Not declared | Not declared | Not declared |
parlayapi_find_arbitrageFind cross-book arbitrage candidates from current quoted prices.
Scans every event for quoted prices whose combined implied probability
is under 100%. Results are candidates, not guaranteed executable profit:
prices can move or be unavailable, and limits, latency, commissions,
voids, settlement rules, or stake constraints can change the outcome.
Soccer and other 3-way (home/draw/away) markets are supported, including
candidates anchored on the draw.
Args:
sport_key: e.g. "baseball_mlb", "soccer_epl".
min_profit: Minimum profit % to include (e.g. 1.5 for 1.5%). Default 0.
exclude_exchanges: Drop arbs anchored on an exchange (novig/prophetx),
whose asks can be no-volume. Default False.
markets: Comma-separated market_keys to limit the scan (optional),
e.g. "h2h,spreads,totals".
| Not declared | Not declared | Not declared | Not declared |
parlayapi_find_evFind positive-EV bets vs a sharp book's no-vig fair line.
Compares every soft book's price against the no-vig fair probability
derived from a sharp book (default Pinnacle); rows where a soft book
offers better odds than the sharp fair price are +EV. Three-way soccer
markets use a dedicated no-vig pass over home/draw/away, so +EV on the
draw surfaces too.
Args:
sport_key: e.g. "baseball_mlb", "soccer_epl".
sharp_book: Sharp baseline book. Default "pinnacle".
min_edge: Minimum edge % to include (e.g. 3 for 3%). Default 2.
markets: Comma-separated market_keys (optional).
| Not declared | Not declared | Not declared | Not declared |
parlayapi_find_middlesFind cross-book middle opportunities.
A middle takes the Over at a low line on one book and the Under at a
higher line on another, so a window of whole numbers cashes BOTH bets
(e.g. Over 7.5 at one book, Under 9.5 at another means 8 or 9 wins both).
Scans game totals, spreads, AND player-total props (points, rebounds,
strikeouts, ...). Each result carries the window, the numbers that hit,
and per-$100 economics: profit_if_hit and net_if_above/below_window.
Args:
sport_key: e.g. "baseball_mlb", "basketball_nba".
min_gap: Minimum window width in points/runs/goals. Default 1.0.
markets: Comma-separated market_keys to limit the scan (optional),
e.g. "totals" or "player_points".
include_props: Include player-total props alongside game lines. Default True.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_get_oddsGet game-level odds for a sport from all configured bookmakers.
Args:
sport_key: e.g. "baseball_mlb", "soccer_epl"
markets: Comma-separated. h2h, spreads, totals.
regions: us, us2, uk, eu, fr, au, ca, mx, latam, br, asia. Comma-separated for multiple.
bookmakers: Comma-separated bookmaker keys (optional).
Examples: pinnacle, draftkings, fanduel, bovada, caesars.
odds_format: decimal | american
| Not declared | Not declared | Not declared | Not declared |
parlayapi_get_pricingReturn the current public pricing table.
No API key required. Use this when an agent needs to explain which
tier unlocks a workflow before sending a checkout link.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_get_propsGet player prop odds for a sport.
Args:
sport_key: e.g. "baseball_mlb", "basketball_nba"
markets: Comma-separated prop market keys (optional).
Examples: player_points, player_rebounds, player_strikeouts,
player_passing_yards, player_total_bases.
bookmakers: Comma-separated. Examples: prizepicks, underdog,
sleeper, draftkings, fanduel.
player: Filter to props mentioning this player name.
include_futures: Include season-long futures (default False).
| Not declared | Not declared | Not declared | Not declared |
parlayapi_list_sportsList available sport keys. Use these in subsequent calls.
Examples: baseball_mlb, basketball_nba, americanfootball_nfl,
icehockey_nhl, soccer_epl, mma_ufc, esports_lol, table_tennis_*.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_live_command_centerReturn the public best-line command center payload.
No API key required. Shows current games, participating books, and
best available real prices on the /live dashboard preview. This is
a discovery and demo surface, not a substitute for the paid odds
endpoints.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_live_searchSearch live teams, players, and sport keys.
No API key required. Useful when the user asks for a team, player,
or league by natural-language name and the agent needs the exact
sport_key to call next.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_live_sportsList currently active live sports on the retail /live surface.
No API key required. Returns sport keys plus live event and book
counts so agents can discover what is active right now.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_magic_linkEmail a magic-login link for an existing ParlayAPI account.
Always returns ok=true regardless of whether the email exists, to
prevent account enumeration. The user receives the link by email.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_parlay_verdictGrade a multi-leg parlay: should you bet it, and at which book?
Give 2 to 12 legs (each shaped like a parlayapi_verdict bet) and get the
combined no-vig fair price, the single best BOOK to place the whole slip at
(a real parlay is one slip, not best-of-each), the parlay's EV, the weakest
leg, same-game correlation warnings, and (with stake) the payout. Best-price
is scoped to books the user can bet at (set once via
parlayapi_set_bettable_books, or pass region/books here).
Args:
legs: list of leg objects, e.g.
[{"sport": "baseball_mlb", "home": "Detroit Tigers",
"away": "Kansas City Royals", "market": "h2h", "side": "Detroit Tigers"},
{"sport": "baseball_mlb", "team": "Detroit Tigers",
"market": "totals", "side": "over", "line": 8.5}]
Each leg: sport, market (h2h/spreads/totals or a player-prop key),
side (team, or over/under), home+away or team, player (for props), line.
region: us (default) | eu | uk | au | ca.
books: exact CSV of books you can bet at (overrides region).
stake: optional stake amount, to compute the payout if it hits.
book: optional, also report the parlay price at this specific book.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_set_bettable_booksRemember which books the user can bet at, so parlayapi_verdict scopes its
best-price and shop recommendations to them automatically (no need to pass
region/books every call).
Call this once when a user tells you where they bet ("I'm in the US on
DraftKings and FanDuel"). Pass region OR an exact books list.
Args:
region: us | eu | uk | au | ca.
books: exact CSV of book keys, e.g. "draftkings,fanduel,novig". Overrides region.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_signupCreate a free-tier ParlayAPI account for the given email.
Returns the API key, a magic-login URL the user can click to access
their dashboard, and a Stripe upgrade URL. Idempotent: if the email
already has an account, returns exists=true with the login URL only
(the existing API key is intentionally NOT exposed for security).
Use this when a user wants to start building with ParlayAPI and
does not have a key yet. After signup, ask the user to add the
returned api_key to their MCP server config under PARLAYAPI_KEY,
then restart the MCP client to pick it up.
Args:
email: User's email address.
intended_use: Optional one-line description of what they're
building. Used for analytics.
agent_id: Identifier for the agent making the call. Defaults
to "mcp-client".
| Not declared | Not declared | Not declared | Not declared |
parlayapi_source_qualityReturn public per-source freshness and quality metadata.
No API key required. Use this to prove that rows are flowing from
each source before choosing books for a customer workflow.
| Not declared | Not declared | Not declared | Not declared |
parlayapi_verdictShould I bet this? One-call verdict for a specific bet.
Returns the no-vig fair price for the exact bet, the best available price
and which book has it, how the user's price (if given) grades as EV, a
line-shopping nudge, and a plain-English call: BET / LEAN / FAIR / PASS
(or NO_DATA). Use this when a user asks whether a specific bet is worth
making, or whether they're getting a good number, instead of stitching
/ev + /consensus + /best-line yourself.
The best-price / shop recommendation is scoped to books the user can bet
at (default US, so a US bettor is never told to use a euro book). Set it
once with parlayapi_set_bettable_books and it is remembered per key, or
pass region / books here per call.
Args:
sport: sport_key, e.g. "baseball_mlb".
side: the team you'd bet (h2h / spreads), or "over" / "under" (totals / props).
market: h2h | spreads | totals | a player-prop key (player_hits, player_points, ...).
home, away: the two teams, to identify the game. Or pass `team` with one name.
team: one team name to find the game (alternative to home + away).
player: player name (required for player-prop markets).
line: the number for spreads, totals, or props.
book: the book you'd bet at (grades that book's current price).
price: the price you're offered (American like -110, or decimal like 1.91).
Overrides `book`, use it to grade a specific number in hand.
region: where you can bet: us (default) | eu | uk | au | ca.
books: exact CSV of books you can bet at (overrides region; use for
state-level geo-blocks, e.g. "draftkings,fanduel,novig").
bankroll: the user's bankroll; when the bet is +EV, returns a suggested
Kelly stake amount ("bet it, ~$X").
kelly: Kelly fraction (default 0.5 = half-Kelly, the bankroll-safe standard).
The response also carries an `edge_alert` when a book shows a pr | Not declared | Not declared | Not declared | Not declared |
Details
- Registry status
- Active
- Published
- Oct 2, 2026
- Updated
- Oct 2, 2026
- Categories (suggested)
- E-commerceSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared