BETCRYPTO

Developers · MCP

Connect an AI assistant

BetCrypto runs a remote MCP server, so an AI assistant can look up odds from every venue we track and compare them — and, with Premium, chart price history, find price gaps and follow whale trades. It calls the same API, under the same tiers and quota.

Two addresses

Both reach the same server and tools. They differ in how your assistant proves who it is.

Start here: no account needed

https://betcrypto.now/mcp

The address to add. The free tools answer at once, with no account. When your assistant calls a Premium tool, Claude asks you to sign in to BetCrypto, then carries on as your account. Clients that let you set headers can send an API key as an Authorization: Bearer header instead.

Sign in

https://betcrypto.now/mcp/account

Your assistant signs you in to BetCrypto as soon as it connects, then acts as your account: the free tier, or Premium if your account has it. Use this one for ChatGPT, Claude Code, Cursor and VS Code, which sign in when they connect.

Set up your assistant

Claude — web, desktop and mobile

In Claude, open Customize → Connectors, choose + and then Add custom connector, and paste the address below. The free tools work straight away; the first time you ask for something Premium, Claude shows a Connect button to sign in to BetCrypto. On Team and Enterprise plans, an owner adds it under Organization settings → Connectors first.

https://betcrypto.now/mcp

ChatGPT

Turn on developer mode in ChatGPT's settings (on the web, for Plus, Pro, Business, Enterprise and Education plans), then create an app for a remote MCP server: paste the sign-in address and choose OAuth — or the keyless address with no authentication.

OpenAI's developer mode guide ↗

Claude Code

Add the sign-in address, then run /mcp inside Claude Code and follow the steps in your browser to sign in:

claude mcp add --transport http betcrypto https://betcrypto.now/mcp/account

Or send an API key instead of signing in:

claude mcp add --transport http betcrypto https://betcrypto.now/mcp \
  --header "Authorization: Bearer $BETCRYPTO_API_KEY"

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project. Cursor signs in with OAuth when it connects:

{
    "mcpServers": {
        "betcrypto": {
            "url": "https://betcrypto.now/mcp/account"
        }
    }
}

Or send an API key read from your environment:

{
    "mcpServers": {
        "betcrypto": {
            "url": "https://betcrypto.now/mcp",
            "headers": {
                "Authorization": "Bearer ${env:BETCRYPTO_API_KEY}"
            }
        }
    }
}

VS Code

Add this to .vscode/mcp.json, or to your user configuration (MCP: Open User Configuration). VS Code opens a browser to sign in the first time it connects:

{
    "servers": {
        "betcrypto": {
            "type": "http",
            "url": "https://betcrypto.now/mcp/account"
        }
    }
}

Or send an API key, which VS Code asks for once and stores securely:

{
    "inputs": [
        {
            "type": "promptString",
            "id": "betcrypto-api-key",
            "description": "BetCrypto API key",
            "password": true
        }
    ],
    "servers": {
        "betcrypto": {
            "type": "http",
            "url": "https://betcrypto.now/mcp",
            "headers": {
                "Authorization": "Bearer ${input:betcrypto-api-key}"
            }
        }
    }
}

Other clients

Any client that supports remote MCP servers over Streamable HTTP works. Give it either address and, if it lets you set headers, Authorization: Bearer with your API key.

Things to ask

Once it's connected, ask in your own words and the assistant picks the tools. For example:

  • “What are the odds the Fed cuts rates at its next meeting, and where is it cheapest to buy?”Uses search_eventsget_event
  • “Which NFL games kick off today in New York, busiest in the last 24 hours first?”Uses search_events
  • “Where do the prediction-market venues disagree most right now?”Uses search_events
  • “Summarise today's prediction-market brief.”Uses get_market_news
  • “How have the odds on Bitcoin reaching $150k moved on each venue this month?”Uses search_eventsget_price_history
  • “Find price gaps that still make money after fees and pay back within a week.”Uses find_price_gaps
  • “What were the biggest whale trades in the last 24 hours?”Uses list_whale_trades

Tools

Premium tools are listed to everyone. Called before you have signed in, they ask your assistant to sign you in; called without Premium, they answer with what Premium adds and what it costs, for the assistant to pass on.

search_events

Keyless

Find events by words, category, venue, kickoff day or volume, with each one's most likely outcomes and their consensus probability.

querystring
Words in the event title or its tags.
statusstring
The market's lifecycle, not the game's: upcoming, live, ended or settled. Leave it out for everything still open.One of upcomingliveendedsettled
game_statusstring
The game itself: scheduled, in_progress or final. Events that aren't games drop out.One of scheduledin_progressfinal
categorystring
A category slug from list_categories. Sub-categories are included.
platformstring
One or more venue slugs from list_platforms, comma-separated. Matches any of them unless platform_match is all.
platform_matchstring
any (the default), or all: only events listed on every venue in platform.One of anyall
kickoff_daystring
Only games kicking off today, tomorrow or in the week (today and the next six days), read in timezone, games under way included. Events without a kickoff drop out.One of todaytomorrowweek
kickoff_fromstring
Only games kicking off at or after this date or date-time, read in timezone.
kickoff_tostring
Only games kicking off at or before this date or date-time, read in timezone. A bare date runs to its end.
timezonestring
The IANA timezone dates are read in and kickoff_local is given in, such as America/New_York. Defaults to UTC.
min_volume_usdnumber
Only events with at least this much lifetime volume, in USD, across venues.
sortstring
Lifetime volume (the default), volume in the last 24 hours, soonest kickoff, newest, or the widest disagreement between venues.One of volumevolume_24hkickoffnewestdisagreement
limitinteger
Events per page (default 10), up to your tier's largest page.
outcomes_per_eventinteger
How many of each event's most likely outcomes to return (default 5).
pageinteger
Page number, from 1.

get_event

Keyless

One event: its markets, and every venue's quote and link for the main market.

slugstring · required
The event's slug, from search_events.
marketstring
A market key from the event's markets, or all. Leave it out for the main market; other markets need Premium.

list_categories

Keyless

Categories, with how many open events each has.

No arguments.

list_platforms

Keyless

The venues BetCrypto aggregates.

No arguments.

get_market_news

Keyless

The latest market briefs, or one in full.

slugstring
A brief's slug from the list, to read it in full.
localestring
The language to read it in: en (default), es, pt, ru, ja, ko, zh_CN or zh_HK. Falls back to English.
limitinteger
How many briefs to list (default 5).

my_access

Keyless

Your tier and limits and, below Premium, what upgrading adds.

No arguments.

get_price_history

♛ Premium

Price history for each outcome on each venue, from 24 hours to all time.

slugstring · required
The event's slug.
marketstring
A market key from get_event. Leave it out for the main market.
rangestring
How far back to go (default 7d).One of 24h7d30d3mo6moall
pointsinteger
Most points per outcome per venue (default 24, up to 500). Fewer points keep the answer small.

find_price_gaps

♛ Premium

Cross-venue price gaps you can trade, ranked by profit after both venues' fees.

profitable_onlyboolean
Only gaps that still make money after fees.
categorystring
A category slug.
platformstring
One or more venue slugs, comma-separated.
max_hold_daysinteger
Only gaps whose money comes back within this many days.One of 1730
sortstring
Realizable dollars (the default), edge per contract, return on capital, volume, or shortest hold.One of realizableedgecapitalvolumehold
limitinteger
How many gaps (default 10).

list_whale_trades

♛ Premium

Whale-sized trades, by event, venue, window or size.

eventstring
Only trades on this event slug.
platformstring
One or more venue slugs, comma-separated.
time_windowstring
How far back to go (default 24h).One of 24h7d30dall
min_size_usdnumber
The smallest trade to include, in USD.
limitinteger
How many trades (default 10).

get_accuracy

♛ Premium

How often each venue's favourite wins, and how well calibrated its prices are.

No arguments.

What the server tells your assistant

Every client receives these instructions, in English, when it connects: how to read prices, what needs Premium, and how to handle links and requests for advice.

BetCrypto aggregates prediction markets (Polymarket, Kalshi, Gemini, Novig, Limitless, Azuro and Polymarket US) into canonical events, so one real-world question shows every venue's price side by side.

How to read prices (all 0-1, i.e. implied probability):
- implied_probability on an outcome is the cross-venue consensus: the median midpoint among the liquid venues with a comparable quote, and venue_spread says how far they disagree. Quote it when someone asks "what are the odds".
- best_buy_price / best_buy_platform is the cheapest place to buy that outcome.
- In per-venue quotes, compare venues on mid_price only where comparable is true. venue_price is venue-defined (an ask on Kalshi, a midpoint on Polymarket) and differencing it across venues measures bid-ask width, not disagreement.
- quote_age_seconds says how long ago the venue last confirmed a quote. A quote marked stale (older than 90 s in play, 20 min before the game, 6 h otherwise) counts toward none of the outcome's numbers; say so if you cite it.
- kickoff_at is when a game starts (UTC); game_status says whether the game is scheduled, in_progress or final. status is the market's lifecycle, so a game that hasn't started reads live while it trades. ends_at is when trading closes, not when the question resolves.

Access: without a key you get discovery tools (search_events, get_event main market, list_categories, list_platforms, get_market_news), shared per IP, cached 60 s. get_price_history, find_price_gaps, list_whale_trades, get_accuracy and non-main markets need Premium. Calling a Premium tool before the person has signed in asks your client to sign them in to BetCrypto (OAuth). When a tool says Premium is required or a limit was reached, call my_access and pass the upgrade offer on to the person you are helping; do not retry in a loop.

Links: every url in results goes through betcrypto.now/go/..., which forwards to the venue. Share those links as they are.

BetCrypto is an odds-comparison and information service. It accepts no wagers and gives no betting or financial advice; say so if asked for a recommendation, and remind people that prediction-market availability depends on where they live.

Limits and errors

  • Every tool call counts against the same per-minute and per-day quota as the API: per account when signed in or using a key, per IP address without one. Keyless results are shared and cached for 60 seconds.
  • If a Premium tool says Premium is required, the account your assistant signed in with isn't Premium, or the API key it sends belongs to one that isn't. Upgrade that account, or send a Premium key.
Tiers, quotas and error codes →