Ask your AI to find a strategy.
Connect Rivo to Claude or ChatGPT and ask in plain English. It tests hundreds of rules against every big trade on Polymarket and Kalshi, checks which ones held up on data they were never tuned on, and tells you the answer. A minute to set up, no code required.
Works with Claude, ChatGPT, Cursor and anything else that uses MCP.
What a session looks like
You type one sentence. The agent does the rest.
> Find me a rule that beat the market on longshots.
→ describe_universe({})
57,412 trades · 90 days · 53,208 settled · 5 categories · 2 platforms
→ sweep({ field: "priceMax", values: [0.10, 0.15, 0.20, 0.30] })
0.10: -44% 0.15: +45% 0.20: +60% 0.30: +28%
→ backtest({ criteria: { priceMax: 0.2, minAmountUsd: 10000 }, holdout: true })
in-sample +58% · out-of-sample +58% · holds: true
→ save_strategy({ name: "Longshot Hunters", backfill: true })
saved · 449 trades claimed · daily digest on
Longshots under 20¢ with over $10K behind them returned +58% across 449 settled trades, and held on data they were never tuned on. Saved as "Longshot Hunters". New matches will appear in the daily digest.
Connect in a minute
Create a key in Settings → Developer, then add the server to your MCP client. Nothing to install.
{
"mcpServers": {
"rivo": {
"url": "https://api.rivo.markets/mcp",
"headers": { "Authorization": "Bearer rivo_live_..." }
}
}
}Or call the REST API directly:
curl -X POST https://api.rivo.markets/v1/backtest \
-H "Authorization: Bearer rivo_live_..." \
-H "Content-Type: application/json" \
-d '{
"criteria": {
"priceMax": 0.2,
"minAmountUsd": 10000,
"eventTypes": [
"open",
"add",
"flip"
]
},
"stake": 100
}'import requests
r = requests.post(
"https://api.rivo.markets/v1/backtest",
headers={"Authorization": "Bearer rivo_live_..."},
json={
"criteria": {
"priceMax": 0.2,
"minAmountUsd": 10000,
"eventTypes": ["open", "add", "flip"],
},
"stake": 100,
},
)
print(r.json()["data"])const res = await fetch("https://api.rivo.markets/v1/backtest", {
method: "POST",
headers: {
Authorization: "Bearer rivo_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
criteria: {
priceMax: 0.2,
minAmountUsd: 10000,
eventTypes: ["open", "add", "flip"],
},
stake: 100,
}),
});
const { data } = await res.json();{
"success": true,
"data": {
"matched": 489,
"settled": 449,
"wins": 105,
"losses": 344,
"open": 40,
"winRate": 0.234,
"stakeUsd": 100,
"stakedUsd": 44900,
"pnlUsd": 25910,
"returnPct": 57.7,
"window": { "sinceDays": 90, "stake": 100 }
}
}Full setup per client, authentication and limits live in the documentation.
Tools
Every tool is also a REST endpoint. Same handler, same behaviour. Each links to its full reference.
describe_universeGET/v1/universeWhat data exists to test against: categories, counts, date coverage, and the price and size distributions.
ReferencebacktestPOST/v1/backtestScore a rule against markets that already resolved, and return wins, losses and return.
ReferencesweepPOST/v1/backtest/sweepScore one rule across a range of values for a single numeric field, in one call.
ReferencecomparePOST/v1/backtest/compareScore several unrelated rules side by side in one call, each with a label.
ReferencebreakdownPOST/v1/backtest/breakdownSplit one rule's results by category, platform, month or price band.
Referencesearch_marketsGET/v1/markets/searchFind recently active markets by name, with the whale trades behind each.
Referencequery_whale_eventsPOST/v1/eventsThe individual trades a rule matches, when you want rows rather than a score.
Referencesave_strategyPOST/v1/strategiesTurn a rule into a live strategy that keeps claiming matching trades and alerts you.
Referencelist_strategiesGET/v1/strategiesYour saved strategies with their current record.
Referenceget_performanceGET/v1/strategies/{id}/performanceFull performance for one strategy: settled record, realized and open PnL, and the return curve.
ReferenceFrequently asked questions
What do I need to get started?+
A Rivo subscription and an API key, which you create in Settings under Developer. The key is shown once and stored only as a hash.
Is the MCP server local or remote?+
Remote. There is nothing to install: point your MCP client at the endpoint and pass your key as a bearer token. The server runs alongside the main API.
How is the return calculated?+
The way prediction market contracts settle. A winning contract pays 1 and a losing one pays 0, so a $100 stake at 20 cents returns $400 profit on a win and loses $100 on a loss. Stake defaults to a flat $100 per trade, which keeps two rules comparable rather than dominated by whichever caught the largest position.
Are the results real money results?+
No. They are paper results assuming a fill at the price the observed trade printed at, with no fees or slippage. Not investment advice.
The full reference is a page away.
Every endpoint with parameters, samples in three languages, and the exact response shapes. Built the way you would expect an API to be documented.