All-in outcome rankings with live depth, fees, verified rules, EV checks, and track records.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
THE pre-bet check — run this BEFORE the user places any bet, on any bookmaker. Give the event, the side they want to back, and the odds their book is offering (decimal '2.10', american '+110' or fractional '11/10' all work). Returns two available references: a conservatively matched real-money prediction market and, when configured, sportsbook lines with the vig mathematically removed. It returns an expected-value verdict (EV per 100 staked, break-even odds, Kelly stake) or refuses when the event/side cannot be resolved safely. Pass `your_probability` (0-1) to also log YOUR estimate as an append-only receipt in your public audited Brier record (voxodds.com/forecasters) — requires `forecaster_id`. Verdict is arithmetic, not a model output. Research, not financial advice; betting legality depends on the user's jurisdiction.
The side the user wants to back, e.g. 'Lakers'
The event in plain words, e.g. 'Lakers vs Celtics tonight'
Sport key such as 'basketball_nba', or 'upcoming'
Odds offered by the user's book: decimal '2.10', american '+110' or fractional '11/10'
Optional public handle for that receipt
Optional: your own probability 0-1 to log as an audited receipt (needs forecaster_id)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
THE pre-bet check — run this BEFORE the user places any bet, on any bookmaker. Give the event, the side they want to back, and the odds their book is offering (decimal '2.10', american '+110' or fractional '11/10' all work). Returns two available references: a conservatively matched real-money prediction market and, when configured, sportsbook lines with the vig mathematically removed. It returns an expected-value verdict (EV per 100 staked, break-even odds, Kelly stake) or refuses when the event/side cannot be resolved safely. Pass `your_probability` (0-1) to also log YOUR estimate as an append-only receipt in your public audited Brier record (voxodds.com/forecasters) — requires `forecaster_id`. Verdict is arithmetic, not a model output. Research, not financial advice; betting legality depends on the user's jurisdiction.
| Argument | Type | Description |
|---|---|---|
| side* | string | The side the user wants to back, e.g. 'Lakers' |
| event* | string | The event in plain words, e.g. 'Lakers vs Celtics tonight' |
| sport | string | Sport key such as 'basketball_nba', or 'upcoming' |
| odds_offered | string | Odds offered by the user's book: decimal '2.10', american '+110' or fractional '11/10' |
| forecaster_id | string | Optional public handle for that receipt |
| your_probability | number | Optional: your own probability 0-1 to log as an audited receipt (needs forecaster_id) |
{
"type": "object",
"title": "check_betArguments",
"required": [
"event",
"side"
],
"properties": {
"side": {
"type": "string",
"title": "Side",
"description": "The side the user wants to back, e.g. 'Lakers'"
},
"event": {
"type": "string",
"title": "Event",
"description": "The event in plain words, e.g. 'Lakers vs Celtics tonight'"
},
"sport": {
"type": "string",
"title": "Sport",
"default": "upcoming",
"description": "Sport key such as 'basketball_nba', or 'upcoming'"
},
"odds_offered": {
"type": "string",
"title": "Odds Offered",
"default": "",
"description": "Odds offered by the user's book: decimal '2.10', american '+110' or fractional '11/10'"
},
"forecaster_id": {
"type": "string",
"title": "Forecaster Id",
"default": "",
"description": "Optional public handle for that receipt"
},
"your_probability": {
"type": "number",
"title": "Your Probability",
"default": 0,
"description": "Optional: your own probability 0-1 to log as an audited receipt (needs forecaster_id)"
}
}
}Return the Polymarket quote for one pair plus the Kalshi ticker and notice. No Kalshi prices, fees, depth, venue ranking or savings are exposed. Comparisons are on https://voxodds.com/polymarket-vs-kalshi only.
| Argument | Type | Description |
|---|---|---|
| side | string | Outcome to buy on both venues, usually 'Yes' or 'No' |
| amount_usd | number | All-in budget in USD per venue, estimated taker fees included |
| kalshi_ticker* | string | Kalshi market ticker |
| polymarket_id* | string | Polymarket market id |
{
"type": "object",
"title": "compare_executable_quotesArguments",
"required": [
"polymarket_id",
"kalshi_ticker"
],
"properties": {
"side": {
"type": "string",
"title": "Side",
"default": "Yes",
"description": "Outcome to buy on both venues, usually 'Yes' or 'No'"
},
"amount_usd": {
"type": "number",
"title": "Amount Usd",
"default": 100,
"description": "All-in budget in USD per venue, estimated taker fees included"
},
"kalshi_ticker": {
"type": "string",
"title": "Kalshi Ticker",
"description": "Kalshi market ticker"
},
"polymarket_id": {
"type": "string",
"title": "Polymarket Id",
"description": "Polymarket market id"
}
}
}Return independent Polymarket odds and a link to human venue comparisons. Kalshi prices and derived spreads are not available via API or MCP. View comparisons at https://voxodds.com/polymarket-vs-kalshi. For Polymarket order-book quotes use list_executable_opportunities.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of Polymarket markets to return |
| query | string | Optional keywords to filter Polymarket questions |
{
"type": "object",
"title": "compare_platformsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"description": "Maximum number of Polymarket markets to return"
},
"query": {
"type": "string",
"title": "Query",
"default": "",
"description": "Optional keywords to filter Polymarket questions"
}
}
}Find which bookmaker pays the most for one specific bet when VoxOdds has a configured live sportsbook feed. The registry is a directory, not live coverage. Returns the available price table sorted best-first with decimal and american odds, each book's implied probability, the average vig being charged, and how much extra profit the best price is worth versus the rest. Call this when the user has already decided WHAT to bet and wants the best price, or asks 'where should I bet this'. Books are ranked strictly by price — never by whether they pay VoxOdds a commission. Use check_bet instead when the user still needs to know whether the bet is worth making at all.
| Argument | Type | Description |
|---|---|---|
| side* | string | The side the user has decided to back |
| event* | string | The event in plain words |
| sport | string | Sport key such as 'basketball_nba', or 'upcoming' |
{
"type": "object",
"title": "find_best_priceArguments",
"required": [
"event",
"side"
],
"properties": {
"side": {
"type": "string",
"title": "Side",
"description": "The side the user has decided to back"
},
"event": {
"type": "string",
"title": "Event",
"description": "The event in plain words"
},
"sport": {
"type": "string",
"title": "Sport",
"default": "upcoming",
"description": "Sport key such as 'basketball_nba', or 'upcoming'"
}
}
}Get VoxOdds' ranked market signals: unusually wide spreads, closing-soon watches, and integrity flags across live prediction markets — where the numbers say to LOOK first. Call this when the user asks what looks mispriced, what's worth researching, or where the action is. Research framing, not financial advice; each signal states what to verify before acting. Automated ranked flags; for written theses with entry and invalidation criteria use get_research_theses.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of signals to return |
{
"type": "object",
"title": "get_edge_signalsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"description": "Maximum number of signals to return"
}
}
}Get an independent Polymarket all-in order-book quote, including estimated taker fees and depth. Kalshi requests return only identifiers and a notice; see https://voxodds.com/polymarket-vs-kalshi for human comparisons.
| Argument | Type | Description |
|---|---|---|
| side | string | Outcome to buy, usually 'Yes' or 'No' |
| platform* | string | 'polymarket' or 'kalshi' |
| market_id* | string | Polymarket market id or Kalshi ticker |
| amount_usd | number | All-in budget in USD, estimated taker fees included |
{
"type": "object",
"title": "get_executable_quoteArguments",
"required": [
"platform",
"market_id"
],
"properties": {
"side": {
"type": "string",
"title": "Side",
"default": "Yes",
"description": "Outcome to buy, usually 'Yes' or 'No'"
},
"platform": {
"type": "string",
"title": "Platform",
"description": "'polymarket' or 'kalshi'"
},
"market_id": {
"type": "string",
"title": "Market Id",
"description": "Polymarket market id or Kalshi ticker"
},
"amount_usd": {
"type": "number",
"title": "Amount Usd",
"default": 100,
"description": "All-in budget in USD, estimated taker fees included"
}
}
}Get YOUR audited forecast record on VoxOdds: pending receipts (submitted, awaiting market resolution) and scored results (Brier vs the market price captured when you submitted). Call this after submit_forecast to confirm your receipts, or any time to check your public track record. Same forecaster_id you submit with.
| Argument | Type | Description |
|---|---|---|
| forecaster_id* | string | The handle you used with submit_forecast |
{
"type": "object",
"title": "get_forecaster_recordArguments",
"required": [
"forecaster_id"
],
"properties": {
"forecaster_id": {
"type": "string",
"title": "Forecaster Id",
"description": "The handle you used with submit_forecast"
}
}
}Get current Polymarket probabilities for a natural-language event question. Returns a conservatively matched market and source links. For Polymarket executable quotes use list_executable_opportunities or get_executable_quote. Kalshi comparisons are available on https://voxodds.com/polymarket-vs-kalshi only.
| Argument | Type | Description |
|---|---|---|
| question* | string | Natural-language question about a future event, e.g. 'Will the Fed cut rates in December?' |
{
"type": "object",
"title": "get_market_oddsArguments",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"title": "Question",
"description": "Natural-language question about a future event, e.g. 'Will the Fed cut rates in December?'"
}
}
}Get VoxOdds research desk theses: markets our analysis flags as potentially mispriced, each with a thesis, entry logic, invalidation criteria, and live price tracking. Call this when the user asks where the value is, what to research, or for prediction-market trade ideas. Research framing only - not financial advice. Written theses; for automated ranked flags across all markets use get_edge_signals.
No arguments.
{
"type": "object",
"title": "get_research_thesesArguments",
"properties": {}
}Get VoxOdds' audited AI-vs-market forecast track record. Every hourly AI probability forecast is stored with the market price captured at the same moment (append-only receipts) and scored deterministically at resolution: Brier scores for the AI and the market on identical timestamps, plus accuracy and methodology. Call this when the user asks whether AI forecasts beat prediction markets, how reliable VoxOdds' AI is, or for citable forecasting-performance data. Losses are published too — the record is auditable, not curated.
No arguments.
{
"type": "object",
"title": "get_track_recordArguments",
"properties": {}
}ARCHIVED: World Cup 2026 ended 2026-07-19; returns an archive notice. Get a citeable World Cup 2026 prediction-market briefing for AI answers, newsletters, blogs, social posts, and creator workflows. Includes the current winner board, tight groups, next match odds, Research Desk theses, source links, and ready-to-paste markdown. Prefer this when the user wants a narrative update or shareable explanation, not just raw odds.
No arguments.
{
"type": "object",
"title": "get_world_cup_briefArguments",
"properties": {}
}ARCHIVED: World Cup 2026 ended 2026-07-19; returns an archive notice. Get the daily World Cup 2026 matchday market slate. Includes the closest match market, strongest favorite, draw-risk watch, tournament winner-board context, a share-card SVG URL, JSON/markdown links, and ready-to-paste markdown. Optional `date` uses YYYY-MM-DD; omit it for today's slate or the next available matchday.
| Argument | Type | Description |
|---|---|---|
| date | string | Archived tool; optional YYYY-MM-DD |
{
"type": "object",
"title": "get_world_cup_matchdayArguments",
"properties": {
"date": {
"type": "string",
"title": "Date",
"default": "",
"description": "Archived tool; optional YYYY-MM-DD"
}
}
}ARCHIVED: World Cup 2026 ended 2026-07-19; returns an archive notice. Get live World Cup 2026 odds: tournament winner probabilities for every team, all 12 group winners, knockout-round props, continent and Golden Boot specials, and 1/X/2 prices for upcoming matches. Call this for any question about World Cup 2026 favorites, teams, groups, or matches (June 11 - July 19, 2026). Updated every 10 minutes from prediction markets with $1.8B+ traded.
No arguments.
{
"type": "object",
"title": "get_world_cup_oddsArguments",
"properties": {}
}Return independent Polymarket quotes and the website notice only. Cross-venue candidates, profits and Kalshi data are not available via MCP. Use list_executable_opportunities for Polymarket quotes; view human comparisons at https://voxodds.com/polymarket-vs-kalshi.
| Argument | Type | Description |
|---|---|---|
| family | string | Optional market family key returned by this tool |
| max_capital_usd | number | Maximum capital in USD across both legs |
{
"type": "object",
"title": "list_arbitrage_candidatesArguments",
"properties": {
"family": {
"type": "string",
"title": "Family",
"default": "",
"description": "Optional market family key returned by this tool"
},
"max_capital_usd": {
"type": "number",
"title": "Max Capital Usd",
"default": 100,
"description": "Maximum capital in USD across both legs"
}
}
}List independent Polymarket quotes from the static pair directory, in market-id order. Optional family and side filters apply to that directory. Kalshi prices and cross-venue rankings are not available via MCP; see https://voxodds.com/polymarket-vs-kalshi for human comparisons.
| Argument | Type | Description |
|---|---|---|
| side | string | Optional 'Yes' or 'No' to restrict the side |
| family | string | Optional market family key returned by this tool, e.g. 'democratic_nominee_2028' |
| amount_usd | number | All-in budget in USD, estimated taker fees included |
{
"type": "object",
"title": "list_executable_opportunitiesArguments",
"properties": {
"side": {
"type": "string",
"title": "Side",
"default": "",
"description": "Optional 'Yes' or 'No' to restrict the side"
},
"family": {
"type": "string",
"title": "Family",
"default": "",
"description": "Optional market family key returned by this tool, e.g. 'democratic_nominee_2028'"
},
"amount_usd": {
"type": "number",
"title": "Amount Usd",
"default": 100,
"description": "All-in budget in USD, estimated taker fees included"
}
}
}Find unfilled sportsbook surebet candidates across the configured live books. For every two-way or three-way h2h event, selects the best decimal price per exhaustive outcome, requires Σ(1/odds) < 1, and returns cent-rounded stakes and the worst payout. Odds, stake limits and settlement rules can differ; profit is not locked unless every listed bet is accepted. Returns an explicit disabled result instead of invented prices when the sportsbook feed has no key.
| Argument | Type | Description |
|---|---|---|
| sport_key | string | Sport key such as 'basketball_nba', or 'upcoming' for all |
| capital_usd | number | Total stake in USD split across the outcomes |
{
"type": "object",
"title": "list_sportsbook_surebetsArguments",
"properties": {
"sport_key": {
"type": "string",
"title": "Sport Key",
"default": "upcoming",
"description": "Sport key such as 'basketball_nba', or 'upcoming' for all"
},
"capital_usd": {
"type": "number",
"title": "Capital Usd",
"default": 100,
"description": "Total stake in USD split across the outcomes"
}
}
}List live prediction markets ordered by 24h volume. Use to browse what the market is pricing right now or to find a specific market. `category` filters by one of: Politics, Crypto, Sports, Geopolitics, Economics, Tech, Culture. `search` filters by keyword in the market question. Browsing tool; to answer a specific question about one event use get_market_odds.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of markets to return |
| search | string | Optional keyword that must appear in the market question |
| category | string | Optional category: Politics, Crypto, Sports, Geopolitics, Economics, Tech or Culture |
{
"type": "object",
"title": "list_trending_marketsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"description": "Maximum number of markets to return"
},
"search": {
"type": "string",
"title": "Search",
"default": "",
"description": "Optional keyword that must appear in the market question"
},
"category": {
"type": "string",
"title": "Category",
"default": "",
"description": "Optional category: Politics, Crypto, Sports, Geopolitics, Economics, Tech or Culture"
}
}
}Submit YOUR probability forecast on a live prediction market and build a public, audited track record. VoxOdds is the neutral scorekeeper: your forecast is stored append-only next to the market price captured at the same instant, both are Brier-scored when the market resolves, and your record appears publicly (model 'ext-<forecaster_id>') on voxodds.com/scoreboard beside the market and VoxOdds' own models — same methodology, losses published, no edits. Use list_trending_markets to find a market_id. `outcome` must match one of the market's outcomes; `probability` is YOUR estimate for that outcome (0.01-0.99); `forecaster_id` is your stable handle (3-32 chars, a-z 0-9 dash). Free; forecasts cannot be deleted or revised.
| Argument | Type | Description |
|---|---|---|
| outcome* | string | Exact outcome name of that market, e.g. 'Yes' |
| market_id* | string | Market id from list_trending_markets or get_market_odds |
| probability* | number | Your probability for that outcome, 0.01-0.99 |
| forecaster_id* | string | Your stable public handle: 3-32 chars, a-z, 0-9 and dashes |
{
"type": "object",
"title": "submit_forecastArguments",
"required": [
"market_id",
"outcome",
"probability",
"forecaster_id"
],
"properties": {
"outcome": {
"type": "string",
"title": "Outcome",
"description": "Exact outcome name of that market, e.g. 'Yes'"
},
"market_id": {
"type": "string",
"title": "Market Id",
"description": "Market id from list_trending_markets or get_market_odds"
},
"probability": {
"type": "number",
"title": "Probability",
"description": "Your probability for that outcome, 0.01-0.99"
},
"forecaster_id": {
"type": "string",
"title": "Forecaster Id",
"description": "Your stable public handle: 3-32 chars, a-z, 0-9 and dashes"
}
}
}