voxodds

All-in outcome rankings with live depth, fees, verified rules, EV checks, and track records.

Should I use this

Quality & Safety

B
Description quality
98%
Schema completeness
81%
Naming quality
98%
Poisoning risk
0%
Permission match
100%
Protocol compliance
100%

Findings (8)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin get_market_odds
  • MEDIUMTool description contains URL to non-standard domainin get_executable_quote
  • MEDIUMTool description contains URL to non-standard domainin compare_executable_quotes
  • MEDIUMTool description contains URL to non-standard domainin list_executable_opportunities
  • MEDIUMTool description contains URL to non-standard domainin list_arbitrage_candidates
  • MEDIUMTool description contains URL to non-standard domainin compare_platforms
  • LOWTool 'compare_executable_quotes' description lacks action verbin compare_executable_quotes

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,397Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (3.44% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "voxodds": {
      "url": "https://voxodds.com/mcp"
    }
  }
}

Remote endpoints

https://voxodds.com/mcpstreamable-http

What it can do

Tool inventory

Tools (18)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡submit_forecast(market_id, outcome, probability, forecaster_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "market_id": {
      "description": "Market id from list_trending_markets or get_market_odds",
      "title": "Market Id",
      "type": "string"
    },
    "outcome": {
      "description": "Exact outcome name of that market, e.g. 'Yes'",
      "title": "Outcome",
      "type": "string"
    },
    "probability": {
      "description": "Your probability for that outcome, 0.01-0.99",
      "title": "Probability",
      "type": "number"
    },
    "forecaster_id": {
      "description": "Your stable public handle: 3-32 chars, a-z, 0-9 and dashes",
      "title": "Forecaster Id",
      "type": "string"
    }
  },
  "required": [
    "market_id",
    "outcome",
    "probability",
    "forecaster_id"
  ],
  "title": "submit_forecastArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "submit_forecastOutput"
}
🟢get_market_odds(question)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "description": "Natural-language question about a future event, e.g. 'Will the Fed cut rates in December?'",
      "title": "Question",
      "type": "string"
    }
  },
  "required": [
    "question"
  ],
  "title": "get_market_oddsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_market_oddsOutput"
}
🟢get_executable_quote(platform, market_id, side, amount_usd)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "description": "'polymarket' or 'kalshi'",
      "title": "Platform",
      "type": "string"
    },
    "market_id": {
      "description": "Polymarket market id or Kalshi ticker",
      "title": "Market Id",
      "type": "string"
    },
    "side": {
      "default": "Yes",
      "description": "Outcome to buy, usually 'Yes' or 'No'",
      "title": "Side",
      "type": "string"
    },
    "amount_usd": {
      "default": 100,
      "description": "All-in budget in USD, estimated taker fees included",
      "title": "Amount Usd",
      "type": "number"
    }
  },
  "required": [
    "platform",
    "market_id"
  ],
  "title": "get_executable_quoteArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_executable_quoteOutput"
}
🟢compare_executable_quotes(polymarket_id, kalshi_ticker, side, amount_usd)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "polymarket_id": {
      "description": "Polymarket market id",
      "title": "Polymarket Id",
      "type": "string"
    },
    "kalshi_ticker": {
      "description": "Kalshi market ticker",
      "title": "Kalshi Ticker",
      "type": "string"
    },
    "side": {
      "default": "Yes",
      "description": "Outcome to buy on both venues, usually 'Yes' or 'No'",
      "title": "Side",
      "type": "string"
    },
    "amount_usd": {
      "default": 100,
      "description": "All-in budget in USD per venue, estimated taker fees included",
      "title": "Amount Usd",
      "type": "number"
    }
  },
  "required": [
    "polymarket_id",
    "kalshi_ticker"
  ],
  "title": "compare_executable_quotesArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "compare_executable_quotesOutput"
}
🟢list_executable_opportunities(amount_usd, family, side)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "amount_usd": {
      "default": 100,
      "description": "All-in budget in USD, estimated taker fees included",
      "title": "Amount Usd",
      "type": "number"
    },
    "family": {
      "default": "",
      "description": "Optional market family key returned by this tool, e.g. 'democratic_nominee_2028'",
      "title": "Family",
      "type": "string"
    },
    "side": {
      "default": "",
      "description": "Optional 'Yes' or 'No' to restrict the side",
      "title": "Side",
      "type": "string"
    }
  },
  "title": "list_executable_opportunitiesArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_executable_opportunitiesOutput"
}
🟢list_arbitrage_candidates(max_capital_usd, family)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "max_capital_usd": {
      "default": 100,
      "description": "Maximum capital in USD across both legs",
      "title": "Max Capital Usd",
      "type": "number"
    },
    "family": {
      "default": "",
      "description": "Optional market family key returned by this tool",
      "title": "Family",
      "type": "string"
    }
  },
  "title": "list_arbitrage_candidatesArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_arbitrage_candidatesOutput"
}
🟢list_sportsbook_surebets(sport_key, capital_usd)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "sport_key": {
      "default": "upcoming",
      "description": "Sport key such as 'basketball_nba', or 'upcoming' for all",
      "title": "Sport Key",
      "type": "string"
    },
    "capital_usd": {
      "default": 100,
      "description": "Total stake in USD split across the outcomes",
      "title": "Capital Usd",
      "type": "number"
    }
  },
  "title": "list_sportsbook_surebetsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_sportsbook_surebetsOutput"
}
🟢get_world_cup_odds

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_world_cup_oddsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_world_cup_oddsOutput"
}
🟢get_world_cup_brief

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_world_cup_briefArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_world_cup_briefOutput"
}
🟢get_world_cup_matchday(date)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "date": {
      "default": "",
      "description": "Archived tool; optional YYYY-MM-DD",
      "title": "Date",
      "type": "string"
    }
  },
  "title": "get_world_cup_matchdayArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_world_cup_matchdayOutput"
}
🟢list_trending_markets(category, search, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "default": "",
      "description": "Optional category: Politics, Crypto, Sports, Geopolitics, Economics, Tech or Culture",
      "title": "Category",
      "type": "string"
    },
    "search": {
      "default": "",
      "description": "Optional keyword that must appear in the market question",
      "title": "Search",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "description": "Maximum number of markets to return",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "list_trending_marketsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_trending_marketsOutput"
}
🟢check_bet(event, side, odds_offered, sport, your_probability, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "event": {
      "description": "The event in plain words, e.g. 'Lakers vs Celtics tonight'",
      "title": "Event",
      "type": "string"
    },
    "side": {
      "description": "The side the user wants to back, e.g. 'Lakers'",
      "title": "Side",
      "type": "string"
    },
    "odds_offered": {
      "default": "",
      "description": "Odds offered by the user's book: decimal '2.10', american '+110' or fractional '11/10'",
      "title": "Odds Offered",
      "type": "string"
    },
    "sport": {
      "default": "upcoming",
      "description": "Sport key such as 'basketball_nba', or 'upcoming'",
      "title": "Sport",
      "type": "string"
    },
    "your_probability": {
      "default": 0,
      "description": "Optional: your own probability 0-1 to log as an audited receipt (needs forecaster_id)",
      "title": "Your Probability",
      "type": "number"
    },
    "forecaster_id": {
      "default": "",
      "description": "Optional public handle for that receipt",
      "title": "Forecaster Id",
      "type": "string"
    }
  },
  "required": [
    "event",
    "side"
  ],
  "title": "check_betArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "check_betOutput"
}
🟢find_best_price(event, side, sport)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "event": {
      "description": "The event in plain words",
      "title": "Event",
      "type": "string"
    },
    "side": {
      "description": "The side the user has decided to back",
      "title": "Side",
      "type": "string"
    },
    "sport": {
      "default": "upcoming",
      "description": "Sport key such as 'basketball_nba', or 'upcoming'",
      "title": "Sport",
      "type": "string"
    }
  },
  "required": [
    "event",
    "side"
  ],
  "title": "find_best_priceArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "find_best_priceOutput"
}
🟢compare_platforms(query, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "description": "Optional keywords to filter Polymarket questions",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Maximum number of Polymarket markets to return",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "compare_platformsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "compare_platformsOutput"
}
🟢get_edge_signals(limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 10,
      "description": "Maximum number of signals to return",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "get_edge_signalsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_edge_signalsOutput"
}
🟢get_track_record

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_track_recordArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_track_recordOutput"
}
🟢get_forecaster_record(forecaster_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "forecaster_id": {
      "description": "The handle you used with submit_forecast",
      "title": "Forecaster Id",
      "type": "string"
    }
  },
  "required": [
    "forecaster_id"
  ],
  "title": "get_forecaster_recordArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_forecaster_recordOutput"
}
🟢get_research_theses

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_research_thesesArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_research_thesesOutput"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools