Read in this order
Over MCP, steps 2 to 6 are condensed into four resources that cost nothing to read:
routeur://concepts/glossary, routeur://concepts/relations, routeur://concepts/leads-and-fees and routeur://concepts/prices. Reading them at the start of a session about pricing is the single most useful thing a client can do.
The ten facts
1. Prices are asks, in dollars per contract that pays $1
Every price is the lowest offer to sell, per contract paying $1, in USD, as an exact decimal string:"yes_ask_usd": "0.52" means 52 cents to buy Yes. no_ask_usd is what No costs. The implied chance is the midpoint of the Yes ask and one minus the No ask. Never parse a price into a float before comparing money; compare the strings or use decimal arithmetic. Report prices in cents and name the venue with every price.
2. The spread is what crossing costs
spread_usd = yes_ask_usd + no_ask_usd - 1, because a Yes and a No together always pay exactly $1. A market at 0.52 / 0.49 has a 1¢ spread. A wide spread means a thin book, and what looks like an edge may only be the spread. market_snapshot returns price.spread_usd with this note attached; the order book also carries yes_spread_usd and no_spread_usd (ask less bid on each side).
3. Liquidity grades, and the defaults that hide thin markets
Markets carry aliquidity grade from the recorded book and 24-hour volume:
Insight endpoints and their tools (
get_insights, get_moves, get_tape, get_flows, get_closing, list_opportunities, list_strategies, get_strategy) leave thin markets out by default: min_volume_usd defaults to 1000, max_spread_usd to 0.05, and include_thin to false (pass include_thin: true with min_volume_usd: 0 for no floor). find_opportunities defaults to executable_only: true and min_volume_usd: 1000. An empty result under the defaults means “nothing liquid met the filters”, not “nothing exists”.
4. Relation kinds, and what “informational” means
From the market you asked about (list_relations, explain_relation): implies (this Yes guarantees the other Yes), implied_by (the reverse), equivalent (same outcome always), contradicts (both cannot be Yes), overlaps (outcome sets intersect without containment). Lists stated from the left market’s side (list_cross_venue_pairs, list_opportunities, the stream) use equivalent, subset, superset, contradicts, overlaps; subset is the left market implying the right.
A relation is proven from both contracts’ structured terms and exact arithmetic, never from wording, against a specific rules_hash. Conflicting or ambiguous evidence is withheld. No relation returned means “not proven”, never “unrelated.” get_relation_proof shows the proof steps and says whether the stored relation is still reproduced from the current contract versions; 404 relation_not_found means both markets are listed but the latest graph does not relate their current versions.
Informational is a value of a lead’s depth.limited_by (alongside price, depth, minimum, fees, unavailable). It means the pair would fill, but the relation rests on a settlement the two venues could resolve differently, such as an economic release that is delayed or cancelled, so the lead is never offered as executable and its issues say so. Report such a lead as a price inconsistency, not as money.
5. Graph runs and freshness
The relation graph is rebuilt hourly, about ten minutes past the hour, from the latest complete crawl of each venue; a run takes about twenty seconds. Every graph-derived answer carriesgraph_run, an integer that increases by one per run (run 74 when this page was checked). Kalshi listings and asks are read every 15 minutes, Polymarket every 30, trades every minute, order books live from the venues’ feeds, unusual-flow signals every 5 minutes, calibration and strategies every 30 minutes. get_status reports the latest run and crawls. Prices carry observed_at; say how old they are.
6. Cursors and paging
list_quotes and get_book_history return at most 5,000 points per request and are narrowed by days or from/to rather than paged.
7. Id formats
A market is always addressed as
venue + id; the ids are the venues’ own, so they are what you would use on the venue itself. Market ids match ^[A-Za-z0-9][A-Za-z0-9_.-]{0,199}$. Every tool that returns a market returns its venue and id, and every tool that takes one takes those two.
8. A lead is money only when depth.executable is true
A lead is a two-leg purchase that pays at least $1 in every outcome a proven relation allows. cost_usd, gross_edge_usd, estimated_fee_usd and net_edge_usd are priced from recorded top-of-book asks. Only the best leads each run are sized against live books in depth; depth.executable: true means at least one whole pair could be bought for less than it pays after fees and minimum sizes, depth.pairs how many, depth.net_usd what they net. A lead with net_edge_usd: "0" and pairs: "0" is a price inconsistency the books could not fill. Leads are observations at the moment of a graph run, not quotes.
9. Strategies and calibration are settled history, before fees
Calibration gives, per 10-cent band,markets, avg_price_usd and yes_rate. Buying Yes at price p in a band that resolves Yes at rate r returned 100 × (r / p − 1) per $100 before fees. A strategy is one such band, side, venue, category and horizon, listed only with at least 100 settled markets, a 3% return and an edge on at least one horizon, ranked by the cautious end of its 95% range. Returns use the band’s average midpoint, not the ask you would pay; bands under 10¢ and over 90¢ are excluded. History is not a forecast, and a rule fitted on the history that selected it is not an out-of-sample test.
10. What is not possible
- Placing, sizing or recommending an order; reading any account, wallet, position or balance. There is no such tool and no write path.
- Opening the event stream over MCP (
GET /v1/streamis not a tool) or from a browserEventSource(it cannot send the key header). - Proving a relation from wording, or across venues outside sports today: economic ladders, crypto prices and one-winner events are proven within each venue only. Markets without structured terms are listed and searchable but never related.
- Reading Polymarket’s US exchange; only Kalshi and global Polymarket are covered.
- Order books older than 90 days, quote windows longer than 90 days, more than 5,000 points per history request, more than 300 search results, more than 50 markets on one stream filter.
- OAuth sign-in. Authentication is by API key only, so clients that require OAuth for custom connectors (ChatGPT today) cannot connect directly; see OpenAI.
- A forecast. Prices are what people paid, calibration is what settled markets did, and nothing here is investment advice.
Answering well
Name the venue andobserved_at with every price; give prices in cents. Quote the contract’s terms (rules, yes_label) rather than its headline. Say what the graph proves and what it does not. Say how the data could be wrong: prices move, fees are estimates, top-of-book size is not depth, and thin books make a price weak evidence. Budget calls: composed tools cost several requests, and one market_snapshot after one search_markets usually beats a sweep.
Related
- Agents & MCP, Tool reference, Agent workflows
- Glossary, Errors and conventions, Pagination, Data freshness
https://routeur.app/llms-full.txt: the same facts in plain text, served from the website.