Skip to main content
SOAR runs a hosted Model Context Protocol server at 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.
If you are writing a program rather than driving one from a chat client, skip this and use the REST API directly. MCP is the same venue behind a different transport, not a second venue.

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 with curl. 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.
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 →
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.
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 →
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 →