{
  "markdown": "# Trade It MCP Server\n\n## [👉 Full Documentation Here 👈](https://docs.tradeit.app)\nNow available through the [_Official MCP Registry_](https://registry.modelcontextprotocol.io/?q=app.tradeit%2Fmcp)\n\n## Table of contents\n\n- [Overview](#overview)\n- [Getting started](#getting-started)\n- [Connecting](#connecting)\n- [Tools](#tools)\n  - [Safety model (draft-first)](#safety-model-draft-first)\n  - [`search_assets`](#search_assets)\n  - [`get_accounts`](#get_accounts)\n  - [`create_trade`](#create_trade)\n  - [`create_options_trade`](#create_options_trade)\n    - [OCC option symbol format](#occ-option-symbol-format)\n    - [Options JSON examples](#options-json-examples)\n  - [`execute_trade`](#execute_trade)\n- [Trade status reference](#trade-status-reference)\n- [Brokerage IDs (API helpers)](#brokerage-ids-api-helpers)\n- [Disclaimers](#disclaimers)\n\n## Overview\n\nThe 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.\n\n**Endpoints:**  \n- Streamable HTTP: `https://mcp.tradeit.app/mcp` \n- SSE: `https://mcp.tradeit.app/sse`\n\n**Brokerage Support:**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/robinhood-logo.svg\" alt=\"Robinhood Logo\" /> **[Robinhood](https://robinhood.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/charles_schwab-logo.svg\" alt=\"Charles Scwhab Logo\" /> **[Charles Schwab](https://schwab.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/etrade-logo.svg\" alt=\"ETrade Logo\" /> **[E*Trade](https://etrade.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/webull-logo.svg\" alt=\"Webull Logo\" /> **[Webull](https://webull.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/public-logo.svg\" alt=\"Public Logo\" /> **[Public](https://public.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/tastytrade-logo.svg\" alt=\"Tastytrade Logo\" /> **[Tastytrade](https://tastytrade.com)**\n\n**Crypto Exchange Support:**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/coinbase-logo.svg\" alt=\"Coinbase Logo\" /> **[Coinbase](https://coinbase.com)**\n- <img height=\"14\" width=\"14\" src=\"https://images.tradeit.app/brokerages/kraken-logo.svg\" alt=\"Kraken Logo\" /> **[Kraken](https://kraken.com)**\n\nMore to be added soon!\n\nThis 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.\n\n---\n\n## Getting Started\n\n1. First, create an account at https://tradeit.app.\n2. Sign up for the Pro plan's free trial.\n3. Connect your brokerage of choice.\n\n## Connecting\n1. Connect your MCP client to `https://mcp.tradeit.app/mcp` or `https://mcp.tradeit.app/sse`.\n2. Authenticate through the browser-based OAuth flow.\n3. You're now ready to start trading!\n\n---\n\n## Tools\n\nMCP tools connect your agent to linked brokerages: search symbols, list accounts, create **draft** orders, then execute only after confirmation.\n\n| MCP tool | What it does |\n| --- | --- |\n| `search_assets` | Look up a stock or crypto by ticker or name; returns price and metadata. |\n| `get_accounts` | List linked accounts and balances; also used when linking a new brokerage. |\n| `create_trade` | Create a **draft** equity/crypto buy or sell for review. |\n| `create_options_trade` | Create a **draft** single- or multi-leg options order for review. |\n| `execute_trade` | Submit a previously created draft to the broker **after** explicit user confirmation. |\n\n### Safety model (draft-first)\n\nTrades start as `draft` orders and are **not** sent to the broker until the user clearly confirms.\n\n**Intended flow:**\n\n1. Call `create_trade` or `create_options_trade` → you get a draft with a `trade_id`.\n2. Show the user the full order details and how to proceed.\n3. Call `execute_trade` **only** when the user explicitly asks to execute, confirm, or place the trade.\n4. Do **not** call `execute_trade` automatically or immediately after creating a draft.\n\nAfter 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).\n\n**Optional steps before creating a draft:**\n\n- `search_assets` — confirm ticker and context.\n- `get_accounts` — pick the right `account_id` when the user cares which account to use.\n\n**Execution flow:**\n\n```\nUser requests trade\n       ↓\n[Optional] search_assets — confirm ticker, get current price\n       ↓\n[Optional] get_accounts — identify correct account_id\n       ↓\ncreate_trade / create_options_trade → draft with trade_id, status: \"draft\"\n       ↓\nShow draft details; user confirms\n       ↓\nexecute_trade(trade_id)\n       ↓\nStatus: \"placed\" or \"failed\" (with details)\n```\n\n**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.\n\n---\n\n### `search_assets`\n\nLook up a stock or crypto by ticker or name.\n\n- **Parameter:** `query` (string) — e.g. `\"TSLA\"`, `\"Tesla\"`, `\"bitcoin\"`.\n- **Returns:** Price, ticker, exchange, asset type, and related metadata.\n\n**Example:**\n\n```json\n{ \"query\": \"TSLA\" }\n```\n\n**Natural-language examples:** *\"How's Apple doing?\"* · *\"What's the price of TSLA?\"*\n\n---\n\n### `get_accounts`\n\nList all linked brokerage accounts (and use this flow when the user wants to connect a new brokerage).\n\n- **Parameters:** none.\n- **Returns:** Accounts with `id`, `name`, `brokerage`, `balance`, `available_cash`. Use `account.id` as `account_id` in trade calls when a specific account is required.\n\n**Natural-language example:** *\"Show my accounts.\"*\n\n---\n\n### `create_trade`\n\nCreate a **draft** equity or crypto order.\n\n**Parameters:**\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `symbol` | string | Yes | Ticker, e.g. `\"TSLA\"`. |\n| `amount` | number | Yes | Size to trade. |\n| `unit` | `\"dollars\"` or `\"shares\"` | Yes | Unit for `amount`. |\n| `buy_or_sell` | `\"buy\"` or `\"sell\"` | Yes | Direction. |\n| `order_type` | `\"market\"`, `\"limit\"`, `\"stop\"`, `\"stop_limit\"` | No | Defaults to `\"market\"`. |\n| `limit_price` | number | If limit / stop_limit | Max or min price per share as applicable. |\n| `stop_price` | number | If stop / stop_limit | Stop trigger price. |\n| `time_in_force` | `\"day\"`, `\"gtc\"`, `\"ioc\"`, `\"fok\"` | No | Omit for brokerage default. |\n| `account_id` | number | No | Omit for default account. |\n\n**Order types:**\n\n| Type | Use when | Price fields |\n| --- | --- | --- |\n| `market` | Fill at current market | None |\n| `limit` | Only at `limit_price` or better | `limit_price` |\n| `stop` | Market order triggers at `stop_price` | `stop_price` |\n| `stop_limit` | Limit order triggers at `stop_price` | `stop_price` and `limit_price` |\n\n**JSON examples:**\n\nBuy $500 of Apple at market:\n\n```json\n{ \"symbol\": \"AAPL\", \"amount\": 500, \"unit\": \"dollars\", \"buy_or_sell\": \"buy\" }\n```\n\nBuy 10 shares of NVDA only if it drops to $800 or below:\n\n```json\n{ \"symbol\": \"NVDA\", \"amount\": 10, \"unit\": \"shares\", \"buy_or_sell\": \"buy\", \"order_type\": \"limit\", \"limit_price\": 800 }\n```\n\nSell 5 shares of Meta if the price falls to $450 (stop):\n\n```json\n{ \"symbol\": \"META\", \"amount\": 5, \"unit\": \"shares\", \"buy_or_sell\": \"sell\", \"order_type\": \"stop\", \"stop_price\": 450 }\n```\n\nBuy 10 AAPL if it breaks above $200, paying at most $202/share:\n\n```json\n{ \"symbol\": \"AAPL\", \"amount\": 10, \"unit\": \"shares\", \"buy_or_sell\": \"buy\", \"order_type\": \"stop_limit\", \"stop_price\": 200, \"limit_price\": 202 }\n```\n\nBuy $1,000 of Bitcoin:\n\n```json\n{ \"symbol\": \"BTC\", \"amount\": 1000, \"unit\": \"dollars\", \"buy_or_sell\": \"buy\" }\n```\n\nSell 100 shares of Tesla, good till canceled:\n\n```json\n{ \"symbol\": \"TSLA\", \"amount\": 100, \"unit\": \"shares\", \"buy_or_sell\": \"sell\", \"time_in_force\": \"gtc\" }\n```\n\n**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\"*\n\n---\n\n### `create_options_trade`\n\nCreate a **draft** single-leg or multi-leg options order (spreads, straddles, etc.).\n\n**Parameters:**\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `symbol` | string | Yes | Underlying ticker, e.g. `\"SPY\"`. |\n| `legs` | array | Yes | One or more legs (see below). |\n| `direction` | `\"debit\"` or `\"credit\"` | Multi-leg | `\"debit\"` = you pay; `\"credit\"` = you collect. |\n| `order_type` | `\"market\"`, `\"limit\"`, etc. | No | Defaults to `\"market\"`. |\n| `limit_price` | number | For limit | Net debit/credit limit for the package. |\n| `time_in_force` | `\"day\"` or `\"gtc\"` | No | Omit for default. |\n| `account_id` | number | No | Omit for default account. |\n\n**Each leg:**\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `type` | `\"option\"` or `\"equity\"` | Yes | Leg type. |\n| `action` | `\"buy\"` or `\"sell\"` | Yes | Side of the leg. |\n| `position_effect` | `\"open\"` or `\"close\"` | Options | Open a new position or close an existing one. |\n| `occ` | string or `null` | Options | OCC string (below); `null` for equity legs. |\n| `quantity` | number | Yes | Contracts (options) or shares (equity). |\n\n#### OCC option symbol format\n\nOCC strings follow: `YYMMDD` + `C` or `P` + 8-digit strike (strike × 1000, zero-padded).\n\n| Description | OCC |\n| --- | --- |\n| Jun 20, 2025 $250 call | `250620C00250000` |\n| Jun 20, 2025 $260 call | `250620C00260000` |\n| Mar 21, 2025 $500 put | `250321P00500000` |\n| Dec 19, 2025 $1,500 call | `251219C01500000` |\n| Jan 16, 2026 $50 put | `260116P00050000` |\n\nStrike encoding: multiply dollars by 1,000 and pad to 8 digits (e.g. $250 → `00250000`; $50.50 → `00050500`).\n\n#### Options JSON examples\n\n**Single call** — buy 1 SPY $520 call exp Jun 20, 2025:\n\n```json\n{\n  \"symbol\": \"SPY\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620C00520000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Bull call spread (debit)** — buy $250 call, sell $260 call, same expiry:\n\n```json\n{\n  \"symbol\": \"TSLA\",\n  \"direction\": \"debit\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620C00250000\", \"quantity\": 1 },\n    { \"type\": \"option\", \"action\": \"sell\", \"position_effect\": \"open\", \"occ\": \"250620C00260000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Bear put spread (debit):**\n\n```json\n{\n  \"symbol\": \"SPY\",\n  \"direction\": \"debit\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620P00520000\", \"quantity\": 1 },\n    { \"type\": \"option\", \"action\": \"sell\", \"position_effect\": \"open\", \"occ\": \"250620P00510000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Bull put spread (credit):**\n\n```json\n{\n  \"symbol\": \"SPY\",\n  \"direction\": \"credit\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"sell\", \"position_effect\": \"open\", \"occ\": \"250620P00510000\", \"quantity\": 1 },\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620P00500000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Spread with limit** — net debit $3.50 or better:\n\n```json\n{\n  \"symbol\": \"TSLA\",\n  \"direction\": \"debit\",\n  \"order_type\": \"limit\",\n  \"limit_price\": 3.50,\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620C00250000\", \"quantity\": 1 },\n    { \"type\": \"option\", \"action\": \"sell\", \"position_effect\": \"open\", \"occ\": \"250620C00260000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Close a long call** — sell to close 2 AAPL $200 calls exp Mar 21, 2025:\n\n```json\n{\n  \"symbol\": \"AAPL\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"sell\", \"position_effect\": \"close\", \"occ\": \"250321C00200000\", \"quantity\": 2 }\n  ]\n}\n```\n\n**Straddle** — long $250 call and $250 put, same expiry:\n\n```json\n{\n  \"symbol\": \"TSLA\",\n  \"direction\": \"debit\",\n  \"legs\": [\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620C00250000\", \"quantity\": 1 },\n    { \"type\": \"option\", \"action\": \"buy\", \"position_effect\": \"open\", \"occ\": \"250620P00250000\", \"quantity\": 1 }\n  ]\n}\n```\n\n**Natural-language examples:** *\"Buy 1 AAPL $300 call expiring next month\"* · *\"Covered call on MSFT at $500 strike\"* · *\"TSLA call spread: buy $475 / sell $485, next week\"* · *\"ATM straddle on SPY this Friday\"* · *\"2 AMZN puts, limit $3.50\"* · *\"Sell AMZN260130P00200000\"*\n\n---\n\n### `execute_trade`\n\nSend a **draft** to the brokerage after the user has reviewed it.\n\n- **Parameter:** `trade_id` (number) — the draft’s `id` from `create_trade` or `create_options_trade`.\n- **Returns:** Updated trade; status `\"placed\"` or `\"failed\"` (with error details).\n\n**Call only when** the user clearly confirms (e.g. execute, confirm, place it, go ahead). Confirm the trade that matches what they just reviewed.\n\n**Do not** call automatically right after creating a draft, without showing order details, or when status is not `\"draft\"`.\n\n---\n\n### Trade status reference\n\n| Status | Meaning |\n| --- | --- |\n| `draft` | Created; not yet sent to broker |\n| `pending` | Submitted; awaiting broker ack |\n| `placed` | Accepted; awaiting fill |\n| `partially_filled` | Partially filled |\n| `complete` | Fully filled |\n| `canceled` | Canceled |\n| `failed` | Rejected — check errors |\n| `disconnected` | Brokerage connection issue |\n\n### Brokerage IDs (API helpers)\n\n| Brokerage | ID | Options |\n| --- | ---: | --- |\n| Robinhood | 1 | Yes |\n| E\\*TRADE | 2 | Yes |\n| Coinbase | 3 | Crypto only |\n| Kraken | 5 | Crypto only |\n| Charles Schwab | 7 | Yes |\n| Webull | 8 | Yes |\n| Public | 11 | Yes |\n| Tastytrade | 12 | Yes |\n\n**Clarification:** Ask once, with everything you need, when: order type is ambiguous (e.g. “buy TSLA at $200” — limit vs stop), options are missing expiry/strike, multiple accounts apply and none is chosen, or a symbol could mean more than one asset. Skip redundant questions when defaults are clear (default amount, market order, primary account).\n\n### Disclaimers\n\n- Investing involves risk, including possible loss of principal.\n- Trade It is not a financial advisor and does not provide investment advice.\n- Options involve substantial risk and are not appropriate for all investors.\n- Trade It cannot withdraw funds, transfer assets, or take custody — it can only place trades through your linked brokerages.\n\n---\n\n",
  "bytes": 14630,
  "sha": "c7d91c7ff52441332667e251f465a5187819a2a1aeff13ba8a1ebc8b08ef1306",
  "repo_slug": "trade-it-inc/trade-it-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_tradeit_mcp_2d4a6df8/readme"
}