Model-rated +EV live picks your bot or AI agent can trade.
Not just model picks: every live bet carries the model's chance to hit and its after-fee expected value at the current price, re-checked every minute, and the bets the model rates positive-EV are flagged. Read them over REST or MCP; you, your bot or your agent places the trade.
- Read-only: never places bets
- EV is the model's estimate
- Information only · 21+
$ curl …/api/v1/live \
-H "Authorization: Bearer ms_live_…"
{ "cards": [{
"sport": "nfl", "status": "live",
"state_line": "Q2 2:24 · BAL 6, ATL 14",
"bet": {
"label": "Derrick Henry under 1 touchdowns",
"side": "no", "ask": 0.59, "fair": 0.6767,
"ev": 0.0697, "plus_ev": true,
"ev_label": "+EV 7.0¢ per contract (model estimate)",
"ticker": "KXNFLTD-26OCT11BALATL-…"
}
}, …],
"disclaimer": "Information only, not betting advice. …" }
Not just model picks. Model-rated +EV live picks.
During a game the model prices every live market it covers against the current price, after the exchange fee. Each live card carries that expected value, and the bets the model rates positive-EV are flagged, so you, your bot or your agent can filter to them and trade.
- Model chancethe model's fair price for the NO side67.7¢
- Live pricewhat the NO side costs right now−59.0¢
- Exchange feetaker fee at that price−1.7¢
- After-fee EV, per contractabove zero: flagged+7.0¢
plus_ev: true
EV is the model's estimate at the moment the card is checked, not a guarantee. On past games, picks like this one ran about 5–8¢ per contract below the model's EV. MintSlips never places a trade.
A real card from a live game, re-checked every minute while the game was on.
Your bot. Your rules. Our live model.
MintSlips never trades for anyone. The API gives you the model's live picks and their after-fee EV; what you do with them is yours to build.
An auto-trading bot on the live +EV picks
Stream the live cards, keep the bets the model rates +EV above your own threshold, and send the order from your code to your own exchange account. The live record shows how the live picks have settled so far.
import json, os, requests H = {"Authorization": f"Bearer {os.environ['MINTSLIPS_KEY']}"} URL = "https://mintslips-public.mintslips.workers.dev/api/v1/stream" with requests.get(URL, headers=H, stream=True) as r: event = None for line in r.iter_lines(decode_unicode=True): if line.startswith("event:"): event = line[6:].strip() elif line.startswith("data:") and event == "live.bet_changed": bet = json.loads(line[5:])["data"]["card"].get("bet") if bet and bet["plus_ev"] and bet["ev"] >= 0.03: # your code, your exchange account, your call my_place_order(bet["ticker"], bet["side"], limit=bet["ask"])
my_place_order is yours to write against your own exchange account.
The stream is a Pro feature; on any tier you can poll /api/v1/live instead.
| sport | games | bets | units | ROI |
|---|---|---|---|---|
| Pro football | 14 | 370 | +1.06u | +0.3% |
| College football | 20 | 266 | +21.15u | +8.2% |
| Hockey | 5 | 15 | −0.19u | −1.5% |
Each settled live-card bet once, at the size its card suggested and the price shown when the card switched to it, after fees, counted under the cards' current rules. A small sample. Past results do not predict future results.
See every settled live bet on the results page →Your logic on top
Filter to the bets you trust: a higher EV floor, only some sports, only late in games. Add your own model as a second opinion and size with your own bankroll rule.
/live/boardInstant alerts
Ping a Discord, Telegram or phone the moment a live bet the model rates +EV appears, with the price and the model's chance.
/streamwebhooksPrice checker
Before you place anything, send the odds you're offered and get back whether they're within the pick's max price.
/checkcheck_priceAsk your agent
"Which live bets are +EV under 60¢ right now?" Claude or ChatGPT answers from the MCP tools, in plain English, with the numbers.
MCPget_live_cardsexplain_pickResearch and backtests
Pull graded results and monthly history to test your own filters, check the model's calibration, or compare your fills with the shown prices.
/results/history/exportExposure tracker
Log what you've taken and cap how much rides on one direction in one game, so a run of similar bets can't stack up the same risk.
/liveyour fillsFrom key to +EV live picks in one call.
Get a key
Sign in on mintslips.com and create an API key on the docs page. It's shown once; keep it secret.
Call the API or connect MCP
Fetch the board over REST, or add the MCP server so your agent can call the tools itself.
You, your bot or your agent trades
Chance to hit, fair price and after-fee EV for every bet, with the model's +EV ones flagged. The trade is yours to place, on your own account.
Today's board, as JSON.
One authenticated GET returns every pick with its numbers. Same data the picks page shows, shaped for code.
# today's board
curl https://mintslips-public.mintslips.workers.dev/api/v1/board \
-H "Authorization: Bearer $MINTSLIPS_KEY"
import os, requests r = requests.get( "https://mintslips-public.mintslips.workers.dev/api/v1/board", headers={"Authorization": f"Bearer {os.environ['MINTSLIPS_KEY']}"}, ) for pick in r.json()["picks"]: print(pick["pick_id"], pick["prob"], pick["max_pay_cents"])
const res = await fetch( "https://mintslips-public.mintslips.workers.dev/api/v1/board", { headers: { Authorization: `Bearer ${process.env.MINTSLIPS_KEY}` } }, ); const { picks } = await res.json(); for (const p of picks) console.log(p.pick_id, p.prob, p.max_pay_cents);
# is the price you were offered within the pick's max price? curl https://mintslips-public.mintslips.workers.dev/api/v1/check \ -H "Authorization: Bearer $MINTSLIPS_KEY" \ -H "content-type: application/json" \ -d '{"pick_id": "20261011-SOCCER1", "offered": {"cents": 90}}' # → "within_max_price": true, "label": "within max price"
probThe stated chance every leg hits, 0 to 1.fair_centsThe fair price of a $1 contract at that chance.max_pay_centsThe most the pick is priced to be worth paying.legsEach leg's description and its own chance.disclaimerOn every response. Estimates, not guarantees.
One MCP server. Three ways in.
Your agent gets six read-only tools. None of them can place, suggest placing or automate a bet.
Claude Code
One command adds the server with your key.
claude mcp add --transport http mintslips \ https://mintslips-public.mintslips.workers.dev/mcp \ --header "Authorization: Bearer ms_live_…"
Claude Desktop
Through mcp-remote, in claude_desktop_config.json.
{
"mcpServers": {
"mintslips": {
"command": "npx",
"args": ["-y", "mcp-remote",
"https://mintslips-public.mintslips.workers.dev/mcp",
"--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer ms_live_…" }
}
}
}Claude.ai and ChatGPT
Add a custom connector with this URL, then sign in with your MintSlips account. No key to paste.
https://mintslips-public.mintslips.workers.dev/mcp
The numbers behind every pick.
Board
Today's picks with chance to hit, fair price, max price and the legs.
Live +EV cards
One in-game bet per game with its after-fee EV at the live price, re-checked every minute.
Price check
Send the odds you're offered; get back whether they are within the max price.
Results
Every graded pick by day: hits, misses and voids alike.
Streaming and webhooksPro
New picks, live changes and gradings pushed as they happen.
History exportPro
A month of picks as NDJSON in one download.
/api/v1/boardToday's picks, or a past day's graded picksall tiers/api/v1/liveLive bets with after-fee EV, +EV flaggedfree: 15 min delay/api/v1/checkIs an offered price within the max price?all tiers/api/v1/resultsGraded picks, up to 31 days a callmember+/api/v1/streamServer-sent events as things changeproLaunching soon.
No checkout yet. Join the waitlist and we'll email you when keys open.
- the free daily pick
- 100 calls a day
- live cards delayed 15 minutes
- the full board and live cards
- 1,000 calls a day
- MCP access
- the picks site included
- real-time stream and webhooks
- history export
- 10,000 calls a day
Get an API key
the day it opens.
One email when the API opens. Nothing else.
Information only, not betting advice. 21+.
The priced picks page is still here, updated every day.