Rank traders
MCP tool: list_traders
Start here when the question is who to copy. copyScore and copyGrade are our own quality measure and are a better default than raw profit, which usually puts one lucky whale on top.
observedNetPnlUsd is what we watched the trader make across the trades we recorded. officialPnlUsd is what the venue reports about them. They answer different questions and can disagree.
Query parameters
platformstring"polymarket" or "kalshi". Omit for both.
sortstringdefault: profit"profit", "copy_score", "observed_net_pnl", "official_pnl" or "official_volume". Prefer copy_score when looking for someone to actually follow.
limitnumberdefault: 501 to 100.
offsetnumberdefault: 0For paging.
Response
copyGrade is A to D. A trader with few observedTrades can still carry a high officialPnlUsd, so read the counts before the money.
curl "https://api.rivo.markets/v1/traders?sort=copy_score&limit=25" \
-H "Authorization: Bearer rivo_live_..."import requests
r = requests.get(
"https://api.rivo.markets/v1/traders",
headers={"Authorization": "Bearer rivo_live_..."},
params={
"sort": "copy_score",
"limit": 25,
},
)
print(r.json()["data"])const res = await fetch("https://api.rivo.markets/v1/traders?sort=copy_score&limit=25", {
headers: { Authorization: "Bearer rivo_live_..." },
});
const { data } = await res.json();response
{
"success": true,
"data": [
{
"platform": "polymarket",
"traderId": "0x9f2c...b7a4",
"displayName": "coldbrew",
"copyScore": 78,
"copyGrade": "A",
"observedTrades": 214,
"observedWins": 131,
"observedLosses": 71,
"observedNetPnlUsd": 48210.55,
"officialPnlUsd": 51992.1,
"followerCount": 37,
"isFollowed": false
}
]
}