Live · Go + Kubernetes

IBKR trading via clean REST API.

Relayer sits between your code and Interactive Brokers — managing the gateway connection, handling reconnects, and giving you HTTP endpoints for orders, quotes, positions and options. No TWS socket code. No gateway babysitting.

Managed gateway · HMAC-signed webhooks · Immutable audit log

20 tools · read + trade · OAuth

Talk to your portfolio. No code required.

Add Relayer as a connector in Claude, sign in with OAuth, and work your IBKR account in plain language — positions, quotes, option chains, orders, fills, and a cryptographic audit log. Grant read-only access or full trading; every order needs an explicit confirmation.

Use in
Works with
Infrastructure built for correctness, not speed-to-demo.
99.9%
Uptime SLA
<50ms
Avg API latency
10M+
API calls served
1:1
Pod per customer
Read or trade — you choose the scope.
20
Agent tools
Confirm
Required per order
100%
Calls logged
1 line
Config to connect
What Relayer handles

Everything between your code and IBKR.

The TWS wire protocol is complex, stateful, and unforgiving. Relayer owns that layer entirely — you get clean HTTP, HMAC-signed webhooks, and a durable audit log.

Managed gateway

Dedicated pod per customer — IB Gateway + Go sidecar — with auto-reconnect, position recovery, and staleness guards on cached prices.

1:1 pod isolation

REST API

Place, cancel and batch orders. Stream or snapshot quotes. Option chains, positions, account data — all via idiomatic HTTP.

No socket code

HMAC webhooks

Real-time trade events pushed to your endpoint — durable Redis queue, automatic retries, no missed fills.

Signed & durable

Immutable audit log

Every request and fill written to a hash-chained PostgreSQL log. Cryptographically tamper-evident and queryable.

Hash-chained

Plan-based rate limits

Entry and Pro tiers gate API call rates server-side, enforced in Redis per-customer. No client-side throttling needed.

Enforced in Redis

Multi-tenant isolation

Each customer is a separate Kubernetes pod. Auth via API keys, traffic proxied through the control plane.

Per-customer pods
Relayer MCP

Twenty tools. Read or trade — on your terms.

Every call is scoped by the token you grant. Reads are always on; order tools require a full-scope token and an explicit per-order confirmation the server enforces — a read-only token returns 403 on any write, whatever a prompt says. Every call lands in a tamper-evident audit log.

Reads 16read-only token
get_positionsOpen positions — qty, avg cost, market value, unrealized P&L
get_accountNet liquidation, buying power, available funds, margin
list_accountsIBKR accounts the login can act on (per-plan cap)
get_snapshot_quoteBid/ask/last/volume for one contract, with data_age_ms
get_snapshot_quotesSnapshot quotes for many contracts, in input order
get_last_priceJust the last traded price — the lightest quote call
get_option_chainExpirations, strikes, exchanges and multiplier
qualify_contractResolve an instrument to its canonical conId
batch_qualify_contractResolve many contracts in one call, in order
get_contract_detailsFull reference data — trading hours, tick rules
get_open_ordersCurrently working orders (not yet filled/cancelled)
list_ordersTracked orders and their lifecycle state
get_orderOne order's full state, fills and commissions
get_executionsIndividual fills — price, qty, time, commission
list_tradesDurable trade history, cursor-paginated
query_audit_logHash-chained event log by time, tool or order
Trade 4full-scope · confirm
place_orderPlace one order — requires an explicit confirm
place_ordersPlace many in one call — same confirm gate
cancel_orderCancel a working order by id — no confirm needed
cancel_all_ordersCancel everything working — de-risk instantly
Add a connector in ClaudeOAuth · scoped
# Claude → Settings → Connectors → Add custom connector
# Paste the Relayer MCP server URL:

  https://relayer.conformal.io/v1/mcp

# Claude discovers Relayer's OAuth automatically, then:
  1. Click Connect → sign in to Relayer
  2. Choose read-only or full access for this workspace
  3. Ask away — no config file, no pasted key
🔒 OAuth, not a pasted key. Connecting runs the standard MCP OAuth flow — you choose the scope Relayer issues to Claude: read-only, or full for trading. The token is bound to that connection and revocable anytime from Dashboard → Connected apps. A read-only token returns 403 on any write endpoint regardless of what a prompt instructs, and order placement always requires an explicit confirmation the model cannot fabricate.
Create your account → Full spec & JSON Schemas

Prefer a local stdio server? Build the relayer-mcp binary and run it with a scoped key from your dashboard — same tools, spawned by your desktop client.

Guardrails

Safe to point an agent at.

Letting a model act on a live brokerage account is only reasonable if the account, not the prompt, sets the rules. Every limit below is enforced server-side — the model never sees a way around them.

Scoped OAuth tokens

You choose read-only or full access at connect time. A read-only token returns 403 on every write endpoint, and any token is revocable from Dashboard → Connected apps.

Read-only or full · revocable

Confirm on every order

Order tools refuse without an explicit confirm the agent must set only after relaying the full order to you. It cannot be fabricated from a prompt.

Per-order · server-enforced

Rate limits & daily quota

Per-plan ceilings enforced atomically in Redis: Entry 120 orders + 600 reads / min, Pro 600 + 3,000. A daily order quota (10k / 100k) caps orders placed, not just requests.

Atomic in Redis

Tamper-evident audit

Every request and fill — reads included — is written to a hash-chained PostgreSQL log. Cryptographically verifiable and queryable by the agent itself.

Hash-chained

Per-customer isolation

Each account runs in its own Kubernetes pod with a dedicated IB Gateway. Credentials and sessions never cross tenants; traffic is proxied through the control plane.

1:1 pod

Cancels always work

De-risking is never gated. Cancel tools require no confirm and are exempt from the live-billing check — a delinquent or paused account can always flatten.

No confirm · always allowed
Built for the trade path, not the demo.
<50ms
Typical read
0
External calls on the hot path
Async
Fills → webhooks + audit
1:1
Pod · auto-reconnect
Live · production
—
Production trading volume
10M+
API calls served
99.9%
Uptime, since inception
0
Mandate breaches
Pricing

Start with paper. Go live when you're ready.

Entry Entry
$79/mo

  • 10,000 orders / day · 600 reads/min
  • MCP access (read + trade)
  • Live + paper trading
  • 1 IBKR account
  • 2 webhook endpoints
  • Audit log · 30-day window
  • Community support
Get started →
Getting started

Register, link, call.

Register, link, ask.

01

Create an account

Register, choose a plan, and get your API key. No credit card required for the 14-day trial.

02

Link your IBKR account

Enter your IB Gateway credentials. Relayer provisions your pod and verifies auth — typically under 60 seconds.

03

Call the API

POST to /v1/orders, GET from /v1/quotes. Receive fills via webhook or poll the audit log. Ship your strategy, not the plumbing.

03

Connect via OAuth

Add Relayer as a connector in Claude, sign in, and choose read-only or full access — no config file, no pasted key. Claude immediately has access to your positions, quotes and option chains, and, with full access, order placement.

Start building MCP beta

Ship your strategy, not the plumbing.

Talk to your portfolio, starting today.

Register in minutes. Your IBKR gateway pod is provisioned automatically — live API key, verified connection, ready to trade.

Connect Relayer via OAuth and ask Claude about your positions — or let it place orders with full access. No config file, zero setup.