https://mcp.trysoar.com/mcp. Connect an MCP-aware assistant to it and the assistant
can search markets, read a ladder, check your portfolio, and place or cancel orders —
authenticated as you, over OAuth, with no key to copy or store.
The venue trades paper money. Balances and P&L are consistently accounted for and
cannot be withdrawn. Nothing you do here is a real financial transaction.
Connect it
Claude, Claude Code, ChatGPT and Codex — the exact steps, and the scopes to grant.
What it can do
Eleven tools, split by whether they move anything.
The write tools appear only when your token carries a write scope, and your client
asks before each call. Both layers are described in Connect.
There is no streaming tool. SOAR’s realtime feed authenticates with an API key or an
app session, not with the OAuth token this server holds on your behalf — so there is
nothing it can subscribe to for you. Ask again to refresh instead.
Why it exists
Everything here is reachable withcurl. The server exists because a handful of fields
are correct-looking and wrong when read naively, and it would rather resolve them once
than let every assistant that connects rediscover them.
The price you paid is not the price that printed
The price you paid is not the price that printed
A fill carries both.
price_cents is yours — what you actually paid or
received, and the field that reconciles against your cash. tape_price_cents is the
public print both counterparties see.They differ by 100 − 2p, which is 40¢ a share at a 30¢ print. Computing P&L from
the tape price is wrong silently, in the direction that looks plausible.Binary markets →A fresh covered pair looks like a loss and is not
A fresh covered pair looks like a loss and is not
Marks are liquidation-side — what you could sell out at right now. A
yes+no
pair you bought across the spread marks below the 100¢ it is guaranteed to pay at
settlement, so it reads as a loss the moment you have it.soar_get_portfolio reports covered_pairs_value_cents next to the mark for exactly
this reason. Read it before concluding you are underwater.Errors say what to do, in a field you can branch on
Errors say what to do, in a field you can branch on
Every failure carries a
code and a disposition. Branch on those; the English
detail is not contractual.retry_idempotent_only is the one that costs money. It does not mean “nothing
happened.” Re-send with the same client_order_id — the venue deduplicates on it
— or poll with soar_get_orders. Never retry with a fresh id.result_unknown →Tickers are opaque, and the dots are load-bearing
Tickers are opaque, and the dots are load-bearing
ANTHROPIC-VALUATION-26Q3-1.05T is one rung. Never sanitize a ticker, never split it
on a hyphen, and never assemble one — read event_ticker and series_ticker off the
response.Survival ladders →Ladders, in one call
Most markets are one rung of a survival ladder — a row of valuation thresholds on the same company, where each price is the probability the valuation exceeds that threshold.soar_get_ladder reads the row as a distribution: the gaps between adjacent
rungs are the probability mass in each band.
Rung prices must fall as strikes rise. When they do not, that is a real inefficiency,
and the tool names it rather than leaving you to spot it.
Survival ladders →