Skip to main content

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 single find_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.
On 2026-09-17 12:39 UTC, graph run 74: 4 leads (36 with 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
Output observed 2026-09-17 12:52 UTC:
Every lead’s edge is negative after estimated fees and none is fillable, so the honest answer for leads and gaps on this run is “nothing”. The strategy rows rank open markets by what their band returned in settled history times how much they trade today; that is a list to research, not a guarantee.
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.
The structuredContent of the result, observed 2026-09-17 12:41 UTC:
With "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=true returned nothing on 2026-09-17. That is the usual state: leads are mispricings, and mispricings on liquid markets close fast. With include_thin=true one lead was executable for 1¢ net on a tennis match with $113 of volume, which is exactly why thin markets are left out by default.
  • open_matches and the matches you get can differ if the two requests use different floors. Pass the same min_volume_usd and max_spread_usd everywhere, 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_source says which, and trades means 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.
  • 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_relation and compare_venues from an agent.
  • Leads: how depth and fees are estimated.