A ladder your agent can read, and an order path it can’t abuse

strike.trading’s only API is a hosted MCP server. Your agent gets the same ladder and the same order path as the terminal, inside limits only you can change.

MCP server URL
https://mcp.strike.trading

Quickstart

Add the server to your client. The first call opens a browser to sign in and approve it, and the agent appears under Agents in the terminal, in paper mode with the default agent limits. There is nothing to create first.

Claude Code

Terminal
claude mcp add --transport http strike https://mcp.strike.trading

Then run /mcp in Claude Code, pick strike and sign in. Add --scope user to make it available in every project, or commit it to a project’s .mcp.json:

.mcp.json
{
  "mcpServers": {
    "strike": {
      "type": "http",
      "url": "https://mcp.strike.trading"
    }
  }
}

Claude Desktop and claude.ai

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name it strike and paste the server URL. Leave the OAuth client fields empty; registration is automatic.
  3. Choose Connect, sign in to strike.trading and approve the connection.
Remote MCP server URL
https://mcp.strike.trading

On Team and Enterprise plans an owner adds the connector under Admin settings first; members then connect it from Settings → Connectors.

Cursor

Add this to .cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project. Cursor handles the OAuth sign-in.

.cursor/mcp.json
{
  "mcpServers": {
    "strike": {
      "url": "https://mcp.strike.trading"
    }
  }
}

Any other MCP client

Any client that speaks streamable HTTP and the MCP authorization spec will discover everything from the server URL. For reference:

Endpoints
MCP endpoint (streamable HTTP)   https://mcp.strike.trading
Protected resource metadata      https://mcp.strike.trading/.well-known/oauth-protected-resource
Authorization server (AuthKit)   https://auth.strike.trading
Authorization server metadata    https://auth.strike.trading/.well-known/oauth-authorization-server
Grants                           authorization_code + PKCE (S256), device_code, refresh_token
Client identification            client ID metadata document, or dynamic registration (RFC 7591)
Token audience                   https://mcp.strike.trading

Clients that only support stdio can use a bridge:

stdio bridge
npx -y mcp-remote https://mcp.strike.trading

Headless agents

An agent with no browser (a server, CI, a container) signs in with the OAuth device flow: it prints a short code and a link, you open the link on any device, sign in and enter the code.

How authorization works

  1. Your client finds the authorization server from the server URL. Sign-in and tokens are handled by WorkOS AuthKit at auth.strike.trading, with OAuth 2.1 and PKCE.
  2. You sign in to strike.trading with Google, Apple, GitHub, a passkey or an email code, and approve the connection.
  3. The client gets short-lived access tokens, scoped to you and that one agent, and refreshes them itself.
  4. The new agent starts in paper mode with the default agent limits. Its mode, limits and read-only switch are changed only in the terminal.
  5. The agent never sees your Tradier credentials. Revoke it from the Agents screen at any time: revoking cancels its open orders and refuses its tokens from the next call.

Details, including the agent limit per plan, are in Authorization.

Permissions

PermissionGrants
ladder:readLadders, distributions, best expression, your positions, orders, limits and this agent’s log. Always on
orders:writeplace_order and cancel_order, inside the agent’s limits. Off when you make the agent read-only

Paper or live is the agent’s mode, set in the terminal. Live needs Pro.

Paper mode

Paper orders take exactly the same path as live ones: the same limit checks, the same log, the same rejection codes, against Tradier’s sandbox instead of your live account. A rejected paper order and a rejected live order look identical, so you can test the failure cases before they cost anything. Sandbox data is delayed 15 minutes. Every agent on Free is paper-only.

Limits

Limits are enforced on the server and visible to the agent before it submits (call get_limits). An order that breaks one is rejected with the limit that fired; it is never quietly resized. Only you can loosen a limit, in the terminal. No MCP call can change one.

LimitYour defaultAgent default
Contracts per order5010
Net debit per order$5,000$500
Open spreads per symbol205
Daily loss, realized plus unrealizedNone$500, then read-only until the next session
Orders per minute3010
Trading windowMarket hoursMarket hours; no new orders in the last 2 minutes of a 0DTE session unless close-only is allowed

Rate limits

PlanReads per minuteWrites per minuteAgents
Free20Paper only1
Pro60103

Kill switch

Halt any agent from the terminal. Halting cancels its open orders immediately and rejects new ones until you resume it.

Action log

Every tool call is recorded with the agent, arguments, result, latency and the ID of the ladder snapshot it was computed from, so you can replay any decision against what the agent actually saw. Filter by agent, symbol or day, export CSV, and keep it for two years.

Tools

ToolScopeWhat it does
list_symbolsladder:readList every supported underlying with its spot price and listed expiries.
get_ladderladder:readGet the ladder for one symbol and expiry: every rung's market-implied probability of finishing above the strike, the above and below prices on a 0..1 scale per $1 of payoff, validity, spot, forward and time to expiry.
get_distributionladder:readGet the fitted risk-neutral distribution for one symbol and expiry as (strike, cdf) pairs, where cdf is P(S_T <= strike).
best_expressionladder:readCompare every instrument that pays off on the given view (above or below a strike at expiry), priced per $1 of payoff net of fees, ranked cheapest first.
get_positionsladder:readList the user's open spreads with entry, mark and P&L.
get_limitsladder:readGet this agent's limits, its mode (paper or live), what remains of today's budget, and whether it is halted.
place_orderorders:writePlace a 2-strike vertical that expresses a view on one rung.
cancel_orderorders:writeCancel an open or partially filled order placed by this user.
get_ordersladder:readList the user's orders and their state-change events, newest first.
get_logladder:readList this agent's own actions: every tool call with its arguments, result, latency and the ladder snapshot it was computed from.

Plus the subscribable resource ladder://{symbol}/{expiry} and the trade_plan prompt. Full reference in the docs.

Connect Tradier Read the docs