├── glama.json ├── .gitignore ├── server.json ├── .github └── workflows │ └── publish.yaml ├── README.md └── LICENSE /glama.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://glama.ai/mcp/schemas/server.json", 3 | "maintainers": [ 4 | "DeanMauro", 5 | "AlexVasile26", 6 | "replsv" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS Files 2 | .DS_Store 3 | .DS_Store? 4 | ._* 5 | .Spotlight-V100 6 | .Trashes 7 | ehthumbs.db 8 | Thumbs.db 9 | Desktop.ini 10 | 11 | # Editor/IDE 12 | .vscode/ 13 | .idea/ 14 | *.swp 15 | *.swo 16 | *~ 17 | .project 18 | .classpath 19 | .settings/ 20 | *.sublime-project 21 | *.sublime-workspace 22 | 23 | # Environment variables 24 | .env 25 | .env.local 26 | .env.*.local 27 | *.env 28 | 29 | # Secrets 30 | key.pem 31 | 32 | # Logs 33 | *.log 34 | logs/ 35 | npm-debug.log* 36 | yarn-debug.log* 37 | yarn-error.log* 38 | 39 | # Dependencies (if added later) 40 | node_modules/ 41 | __pycache__/ 42 | *.py[cod] 43 | *$py.class 44 | *.so 45 | .Python 46 | venv/ 47 | env/ 48 | ENV/ 49 | 50 | # Build artifacts 51 | dist/ 52 | build/ 53 | *.egg-info/ 54 | .eggs/ 55 | 56 | # Temporary files 57 | *.tmp 58 | *.temp 59 | .cache/ 60 | *.cache 61 | 62 | # Test coverage 63 | coverage/ 64 | .nyc_output/ 65 | *.lcov 66 | 67 | # Package manager files (if needed) 68 | package-lock.json 69 | yarn.lock 70 | poetry.lock 71 | Pipfile.lock 72 | 73 | -------------------------------------------------------------------------------- /server.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", 3 | "name": "app.tradeit/mcp", 4 | "title": "Trade It", 5 | "version": "1.0.0", 6 | "status": "active", 7 | "description": "Trade stock, crypto, and options on Robinhood, ETrade, Webull, Charles Schwab, Coinbase, or Kraken.", 8 | "websiteUrl": "https://tradeit.app", 9 | "repository": { 10 | "url": "https://github.com/trade-it-inc/trade-it-mcp", 11 | "source": "github" 12 | }, 13 | "icons": [ 14 | { "src": "https://images.tradeit.app/site_logos/logo.png", "mimeType": "image/png", "theme": "light" }, 15 | { "src": "https://images.tradeit.app/site_logos/logo.svg", "mimeType": "image/svg+xml", "theme": "light" }, 16 | { "src": "https://images.tradeit.app/site_logos/logo_dark.png", "mimeType": "image/png", "theme": "dark" }, 17 | { "src": "https://images.tradeit.app/site_logos/logo_dark.svg", "mimeType": "image/svg+xml", "theme": "dark" } 18 | ], 19 | "remotes": [ 20 | { 21 | "type": "streamable-http", 22 | "url": "https://mcp.tradeit.app/mcp" 23 | }, 24 | { 25 | "type": "sse", 26 | "url": "https://mcp.tradeit.app/sse" 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /.github/workflows/publish.yaml: -------------------------------------------------------------------------------- 1 | name: Publish to MCP Registry 2 | 3 | on: 4 | # Triggers when the server.json file is changed on the main branch 5 | push: 6 | branches: 7 | - main 8 | paths: 9 | - 'server.json' 10 | 11 | # Allows for manual re-publishing from the Actions tab 12 | workflow_dispatch: 13 | 14 | jobs: 15 | publish: 16 | runs-on: ubuntu-latest 17 | permissions: 18 | contents: read 19 | 20 | steps: 21 | - name: Checkout code 22 | uses: actions/checkout@v5 23 | 24 | - name: Install mcp-publisher 25 | run: | 26 | curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher 27 | chmod +x mcp-publisher 28 | 29 | - name: Authenticate to MCP Registry 30 | run: | 31 | echo "${{ secrets.MCP_PUBLISH_KEY }}" | base64 --decode > key.pem 32 | PRIVATE_KEY_HEX=$(openssl pkey -in key.pem -text -noout | sed -n '/^priv:/,/^pub:/p' | grep -v "^priv:" | grep -v "^pub:" | tr -d ' :\n') 33 | ./mcp-publisher login http --domain ${{ vars.MCP_SERVER_DOMAIN }} --private-key $PRIVATE_KEY_HEX 34 | 35 | - name: Publish server to MCP Registry 36 | run: ./mcp-publisher publish -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Trade It MCP Server 2 | Now available through the [_Official MCP Registry_](https://registry.modelcontextprotocol.io/?q=app.tradeit%2Fmcp) 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | **Endpoints:** 11 | - Streamable HTTP: `https://mcp.tradeit.app/mcp` 12 | - SSE: `https://mcp.tradeit.app/sse` 13 | **Mode:** Remote-only (no local deployment required) 14 | 15 | ## Overview 16 | 17 | 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. 18 | 19 | Supports Charles Schwab, Robinhood, E*TRADE, Webull, Coinbase, and Kraken. More to be added soon! 20 | 21 | 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. 22 | 23 | --- 24 | 25 | ## Tools 26 | 27 | - 💬 **Create Trade** 28 | Creates a trade order to buy or sell an asset. 29 | 30 | ORDER TYPES: 31 | - **market** (default) → Executes immediately at current market price. No price fields required. 32 | - **limit** → Executes only at a specific limit_price or better. Requires `limit_price`. 33 | - **stop** → Triggers a market order when stop_price is reached. Requires `stop_price`. 34 | - **stop_limit** → Triggers a limit order when stop_price is reached. Requires BOTH `stop_price` and `limit_price`. 35 | 36 | EXAMPLES: 37 | - "Buy $1000 of Tesla" 38 | - "Buy $1000 of Tesla, but only if the price drops to $150 or lower" 39 | - "Sell 10 shares of Apple if the price falls to $140 or lower" 40 | - "Buy a share of Apple if it hits $200" 41 | - "Buy 10 shares of Apple if the price rises to $140, but don't pay more than $142 per share" 42 | 43 | DEFAULTS: 44 | - If no amount is given, your default amount is used. 45 | - If no account is given, your default account is used. 46 | - If no order type is given, the trade is a market order. 47 | - If auto-execute is enabled in settings, the trade will execute immediately. Otherwise, it gets created in draft state and requires a call to `Execute Trade` to complete. This allows you to review and confirm trades. 48 | 49 | - 💬 **Create Option Trade (Beta)** 50 | Creates a trade order to buy or sell an options contract. 51 | 52 | EXAMPLES: 53 | - "Buy 1 call option on Apple with a $300 strike price expiring next month" 54 | - "Sell a covered call on my Microsoft shares at $500 strike" 55 | - "Open a call spread: buy 1 TSLA $475 call and sell 1 TSLA $485 call, both expiring next week" 56 | - "Buy an ATM straddle on SPY, expiring this Friday" 57 | - "Buy 2 AMZN 200 1/30 P, limit price $3.50" 58 | - "Sell AMZN260130P00200000" 59 | 60 | - 💬 **Execute Trade** 61 | Execute the trade on your brokerage. 62 | 63 | - 💬 **Show Account Details** 64 | List your linked brokerages along with their current value and cash balance. 65 | Example: `"Show my accounts"` 66 | 67 | - 💬 **Search Asset** 68 | Get current price and metadata for any stock or cryptocurrency. 69 | Example: `"How's Apple doing?"` or `"What's the price of TSLA?"` 70 | 71 | --- 72 | 73 | ## Getting Started 74 | 75 | 1. First, create an account at https://tradeit.app. 76 | 2. Sign up for the Pro plan's free trial. 77 | 3. Connect your brokerage of choice. 78 | 79 | ## Connecting 80 | 1. Connect your MCP client to `https://mcp.tradeit.app/mcp` or `https://mcp.tradeit.app/sse`. 81 | 2. Authenticate through the browser-based OAuth flow. 82 | 3. You're now ready to start trading! 83 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | --------------------------------------------------------------------------------