What you’ll get
One ranked scan of everything Routeur suggests acting on: mispricing leads, price gaps between proven-equivalent markets, and open markets fitting a strategy, all above the same liquidity floors, each ranked by net edge times 24-hour volume so that a small edge in a deep market outranks a wide one nobody can trade. Then the same scan as a singlefind_opportunities tool call over MCP. On 2026-09-17 no lead or gap paid after fees; the strategy matches did, on history.
Prerequisites
- An API key in
ROUTEUR_API_KEY - Python 3 with
requests
1
The three lists, with the floors written out
min_volume_usd, max_spread_usd and include_thin work on every list that suggests something to act on. The defaults are $1,000 traded in 24 hours and a round trip of 5¢ or less; pass them explicitly so the three requests agree.include_thin=true), 0 gaps with a positive net_usd, and 20 strategies, 18 of them with open matches. Tightening to min_volume_usd=5000&max_spread_usd=0.02 left one lead.2
Scan and rank
Python
3
The same scan in one MCP tool call
find_opportunities reads the same three endpoints, applies min_volume_usd, keeps only leads whose books could be filled (executable_only, true by default), and returns compact rows with the ids to drill into. It costs up to four API requests against the key.structuredContent of the result, observed 2026-09-17 12:41 UTC:"executable_only": false the three unfillable leads come back too, each headlined “0 pairs fillable for $0 net after fees”. The tool reads only the best-ranked strategy’s matches, so its strategy rows are a subset of the script’s.Read the result
Pitfalls
- The three kinds do not share a scale. A lead’s edge is guaranteed by a proof; a gap’s is net of fees but not sized; a strategy’s is a historical average before fees. Rank within a kind, never across.
executable=truereturned nothing on 2026-09-17. That is the usual state: leads are mispricings, and mispricings on liquid markets close fast. Withinclude_thin=trueone lead wasexecutablefor 1¢ net on a tennis match with $113 of volume, which is exactly why thin markets are left out by default.open_matchesand the matches you get can differ if the two requests use different floors. Pass the samemin_volume_usdandmax_spread_usdeverywhere, as the script does.- Volume is the venue’s own figure where it reports one. Kalshi counts contracts at $1 face value, Polymarket USDC notional;
volume_sourcesays which, andtradesmeans it was summed from recorded fills instead. - The strategy loop can cost up to 12 requests (one list, up to ten details, plus the leads and insights). At the free tier’s 30 per minute, run it once, not in a loop.
Related
- Proof trail: read the proof behind a lead and decide from
depth. - Compare venues: every proven-equivalent pair ranked by gap, with and without the floors.
- Strategy matches: one rule’s open markets with the size behind each.
- Agent session:
find_opportunities,explain_relationandcompare_venuesfrom an agent. - Leads: how depth and fees are estimated.