Trade It MCP Server
👉 Full Documentation Here 👈
Now available through the Official MCP Registry
Table of contents
- Overview
- Getting started
- Connecting
- Tools
- Trade status reference
- Brokerage IDs (API helpers)
- Disclaimers
Overview
The Trade It MCP Server brings stock, crypto, and options trading support to agents. It enables natural-language interaction with stock and crypto brokerages—execute trades, query portfolio performance, and surface market insights by sending plain-English requests through the MCP protocol.
Endpoints:
- Streamable HTTP:
https://mcp.tradeit.app/mcp - SSE:
https://mcp.tradeit.app/sse
Brokerage Support:
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/robinhood-logo.svg" alt="Robinhood Logo" /> Robinhood
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/charles_schwab-logo.svg" alt="Charles Scwhab Logo" /> Charles Schwab
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/etrade-logo.svg" alt="ETrade Logo" /> E*Trade
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/webull-logo.svg" alt="Webull Logo" /> Webull
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/public-logo.svg" alt="Public Logo" /> Public
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/tastytrade-logo.svg" alt="Tastytrade Logo" /> Tastytrade
Crypto Exchange Support:
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/coinbase-logo.svg" alt="Coinbase Logo" /> Coinbase
- <img height="14" width="14" src="https://images.tradeit.app/brokerages/kraken-logo.svg" alt="Kraken Logo" /> Kraken
More to be added soon!
This server is remote so you don't need to run anything locally to connect. Just point your MCP-compatible agent platform to the URL above.
Getting Started
- First, create an account at https://tradeit.app.
- Sign up for the Pro plan's free trial.
- Connect your brokerage of choice.
Connecting
- Connect your MCP client to
https://mcp.tradeit.app/mcporhttps://mcp.tradeit.app/sse. - Authenticate through the browser-based OAuth flow.
- You're now ready to start trading!
Tools
MCP tools connect your agent to linked brokerages: search symbols, list accounts, create draft orders, then execute only after confirmation.
| MCP tool | What it does |
|---|---|
search_assets | Look up a stock or crypto by ticker or name; returns price and metadata. |
get_accounts | List linked accounts and balances; also used when linking a new brokerage. |
create_trade | Create a draft equity/crypto buy or sell for review. |
create_options_trade | Create a draft single- or multi-leg options order for review. |
execute_trade | Submit a previously created draft to the broker after explicit user confirmation. |
Safety model (draft-first)
Trades start as draft orders and are not sent to the broker until the user clearly confirms.
Intended flow:
- Call
create_tradeorcreate_options_trade→ you get a draft with atrade_id. - Show the user the full order details and how to proceed.
- Call
execute_tradeonly when the user explicitly asks to execute, confirm, or place the trade. - Do not call
execute_tradeautomatically or immediately after creating a draft.
After creating a draft, make sure the user knows they can place the order when ready (e.g. via your client’s Execute control, if available).
Optional steps before creating a draft:
search_assets— confirm ticker and context.get_accounts— pick the rightaccount_idwhen the user cares which account to use.
Execution flow:
User requests trade
↓
[Optional] search_assets — confirm ticker, get current price
↓
[Optional] get_accounts — identify correct account_id
↓
create_trade / create_options_trade → draft with trade_id, status: "draft"
↓
Show draft details; user confirms
↓
execute_trade(trade_id)
↓
Status: "placed" or "failed" (with details)Account / order defaults: If the user omits amount, account, or order type, Trade It applies their default amount, default account, and market orders where applicable. If auto-execute is enabled in Trade It settings, behavior may skip the manual execute step in some setups; when in doubt, still treat execution as user-confirmed.
search_assets
Look up a stock or crypto by ticker or name.
- Parameter:
query(string) — e.g."TSLA","Tesla","bitcoin". - Returns: Price, ticker, exchange, asset type, and related metadata.
Example:
{ "query": "TSLA" }Natural-language examples: "How's Apple doing?" · "What's the price of TSLA?"
get_accounts
List all linked brokerage accounts (and use this flow when the user wants to connect a new brokerage).
- Parameters: none.
- Returns: Accounts with
id,name,brokerage,balance,available_cash. Useaccount.idasaccount_idin trade calls when a specific account is required.
Natural-language example: "Show my accounts."
create_trade
Create a draft equity or crypto order.
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Ticker, e.g. "TSLA". |
amount | number | Yes | Size to trade. |
unit | "dollars" or "shares" | Yes | Unit for amount. |
buy_or_sell | "buy" or "sell" | Yes | Direction. |
order_type | "market", "limit", "stop", "stop_limit" | No | Defaults to "market". |
limit_price | number | If limit / stop_limit | Max or min price per share as applicable. |
stop_price | number | If stop / stop_limit | Stop trigger price. |
time_in_force | "day", "gtc", "ioc", "fok" | No | Omit for brokerage default. |
account_id | number | No | Omit for default account. |
Order types:
| Type | Use when | Price fields |
|---|---|---|
market | Fill at current market | None |
limit | Only at limit_price or better | limit_price |
stop | Market order triggers at stop_price | stop_price |
stop_limit | Limit order triggers at stop_price | stop_price and limit_price |
JSON examples:
Buy $500 of Apple at market:
{ "symbol": "AAPL", "amount": 500, "unit": "dollars", "buy_or_sell": "buy" }Buy 10 shares of NVDA only if it drops to $800 or below:
{ "symbol": "NVDA", "amount": 10, "unit": "shares", "buy_or_sell": "buy", "order_type": "limit", "limit_price": 800 }Sell 5 shares of Meta if the price falls to $450 (stop):
{ "symbol": "META", "amount": 5, "unit": "shares", "buy_or_sell": "sell", "order_type": "stop", "stop_price": 450 }Buy 10 AAPL if it breaks above $200, paying at most $202/share:
{ "symbol": "AAPL", "amount": 10, "unit": "shares", "buy_or_sell": "buy", "order_type": "stop_limit", "stop_price": 200, "limit_price": 202 }Buy $1,000 of Bitcoin:
{ "symbol": "BTC", "amount": 1000, "unit": "dollars", "buy_or_sell": "buy" }Sell 100 shares of Tesla, good till canceled:
{ "symbol": "TSLA", "amount": 100, "unit": "shares", "buy_or_sell": "sell", "time_in_force": "gtc" }Natural-language examples: "Buy $1000 of Tesla" · "Buy $1000 of Tesla only if the price drops to $150 or lower" · "Sell 10 shares of Apple if the price falls to $140" · "Buy a share of Apple if it hits $200" · "Buy 10 shares of Apple if it rises to $140, but don't pay more than $142"
create_options_trade
Create a draft single-leg or multi-leg options order (spreads, straddles, etc.).
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Underlying ticker, e.g. "SPY". |
legs | array | Yes | One or more legs (see below). |
direction | "debit" or "credit" | Multi-leg | "debit" = you pay; "credit" = you collect. |
order_type | "market", "limit", etc. | No | Defaults to "market". |
limit_price | number | For limit | Net debit/credit limit for the package. |
time_in_force | "day" or "gtc" | No | Omit for default. |
account_id | number | No | Omit for default account. |
Each leg:
| Field | Type | Required | Description |
|---|---|---|---|
type | "option" or "equity" | Yes | Leg type. |
action | "buy" or "sell" | Yes | Side of the leg. |
position_effect | "open" or "close" | Options | Open a new position or close an existing one. |
occ | string or null | Options | OCC string (below); null for equity legs. |
quantity | number | Yes | Contracts (options) or shares (equity). |
OCC option symbol format
OCC strings follow: YYMMDD + C or P + 8-digit strike (strike × 1000, zero-padded).
| Description | OCC |
|---|---|
| Jun 20, 2025 $250 call | 250620C00250000 |
| Jun 20, 2025 $260 call | 250620C00260000 |
| Mar 21, 2025 $500 put | 250321P00500000 |
| Dec 19, 2025 $1,500 call | 251219C01500000 |
| Jan 16, 2026 $50 put | 260116P00050000 |
Strike encoding: multiply dollars by 1,000 and pad to 8 digits (e.g. $250 → 00250000; $50.50 → 00050500).
Options JSON examples
Single call — buy 1 SPY $520 call exp Jun 20, 2025:
{
"symbol": "SPY",
"legs": [
{ "type": "option", "action": "buy", "position_effect": "open", "occ": "250620C00520000", "quantity": 1 }
]
}Bull call spread (debit) — buy $250 call, sell $260 call, same expiry:
{
"symbol": "TSLA",
"direction": "debit",
"legs": [
{ "type": "option", "action": "buy", "position_effect": "open", "occ": "250620C00250000", "quantity": 1 },
{ "type": "option", "action": "sell", "position_effect": "open", "occ": "250620C00260000", "quantity": 1 }
]
}Bear put spread (debit):
{
"symbol": "SPY",
"direction": "debit",
"legs": [
{ "type": "option", "action": "buy", "position_effect": "open", "occ": "250620P00520000", "quantity": 1 },
{ "type": "option", "action": "sell", "position_effect": "open", "occ": "250620P00510000", "quantity": 1 }
]
}Bull put spread (credit):
{
"symbol": "SPY",
"direction": "credit",
"legs": [
{ "type": "option", "action": "sell", "position_effect": "open", "occ": "250620P00510000", "quantity": 1 },
{ "type": "option", "action": "buy", "position_effect": "open", "occ": "250620P00500000", "quantity": 1 }
]
}Spread with limit — net debit $3.50 or better:
{
"symbol": "TSLA",
"direction": "debit",
"order_type": "limit",
"limit_price": 3.50,
"legs": [
{ "type": "option", "action": "buy", "position_effect": "open", "occ": "250620C00250000", "quantity": 1 },
{ "type": "option", "action": "sell", "position_effect": "open", "occ": "250620C00260000", "quantity": 1 }
]
}Close a long call — sell to close 2 AAPL $200 calls exp Mar 21, 2025:
{
"symbol": "AAPL",
"legs": [
{ "type": "option", "action": "sell", "position_effect": "close", "o
…