Robinhood Crypto Trading API for AI agents: quotes, holdings, orders read-only; opt-in trading.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An execution toolkit for the official Robinhood Crypto Trading API, delivered over the Model Context Protocol.
Robinhood's crypto API exposes four order types and nothing else: market, limit, stop_loss, and stop_limit. There is no bracket, no OCO, no trailing stop, no TWAP, no iceberg, no scale-in ladder, no scheduled DCA, no portfolio rebalance. Those are the order types people actually want, and every one of them has the same requirement: something has to keep working after the request returns. A trailing stop that exists only for the duration of one tool call is not a trailing stop. This package synthesizes the thirteen order types Robinhood lacks and runs them as durable background jobs that survive the agent disconnecting, the server restarting, and the machine rebooting. Around that sit ~73 tools across 8 opt-in modules: quotes and holdings, FIFO cost basis and realized P&L, a trade journal, risk limits with an enforced kill switch, and integration diagnostics.
This is not Robinhood Chain, and it is not Robinhood equities. It targets the brokerage Crypto Trading API at
trading.robinhood.com, documented at docs.robinhood.com/crypto/trading.
The project site is an interactive Ed25519 signing bench. You assemble a real Robinhood trading request and produce a genuine signature in your own browser β the math runs client-side on Robinhood's published example key, nothing is sent anywhere β then watch it disprove Robinhood's own documentation: their published test vector verifies against a Python dict repr, not the JSON body every client actually sends. It is a single self-contained page in docs/, so it deploys anywhere static.
Deploy your own copy in one click:
| Target | How |
|---|---|
| GitHub Pages | Settings β Pages β Source: main / /docs. Serves at nirholas.github.io/robinhood-mcp/. No build step. |
| Cloudflare Pages | The button above, or wrangler pages deploy docs. Config in wrangler.toml. |
| Google Cloud | gcloud storage cp -r docs/* gs://<bucket>/ behind an HTTPS load balancer, or Cloud Run with any static server rooted at docs/. |
| Netlify / Vercel | The buttons above. Publish directory is docs/ (netlify.toml, vercel.json). |
Robinhood publishes no sandbox. There is no paper account, no test environment, no dry-run host. Every order this package can place is real money in a real brokerage account, and there is no way to rehearse. Read this section before you set ROBINHOOD_CRYPTO_ENABLE_TRADING=1.
Every guard below is enforced in code, inside the single Executor that all orders pass through, never in a tool description. An instruction in a prompt is a suggestion; a thrown error is not.
| Guard | What it does |
|---|---|
| Separate binary | The robinhood-mcp data server registers no tool that can trade. Attaching it to a general-purpose assistant cannot result in an order. |
| Explicit opt-in | The trading server and the daemon refuse to start unless ROBINHOOD_CRYPTO_ENABLE_TRADING=1. It cannot be launched by accident. |
| Per-order USD cap | Every order is priced before submission and rejected above ROBINHOOD_CRYPTO_MAX_ORDER_USD (default $100). It fails closed: if the USD value cannot be determined up front, the order is rejected rather than assumed cheap. |
| Cumulative USD cap | ROBINHOOD_CRYPTO_MAX_DAILY_USD refuses once the process has committed that much in total. |
| Symbol allowlist | With ROBINHOOD_CRYPTO_SYMBOL_ALLOWLIST set, only those pairs may trade. Everything else is refused. |
| Buy-only | ROBINHOOD_CRYPTO_BUY_ONLY=1 rejects every sell order. |
| Guarded vs autonomous | In the default guarded mode an order tool returns the exact request it would send plus a priced estimate, and places nothing until a second call carries confirm: true. ROBINHOOD_CRYPTO_AUTONOMOUS=1 skips that gate for unattended strategies. |
| Kill switch | risk_kill_switch_engage halts all execution and pauses every running job. Persisted to disk, read on every order and never cached, checked inside the Executor. |
Two things about those controls are worth stating plainly, because they are the ones people get wrong.
Autonomous removes the human, not the ceiling. The per-order cap, the cumulative cap, the allowlist and the buy-only flag all still apply in autonomous mode. An unattended agent is exactly the case where a runaway order is most likely and least observed.
The kill switch binds the daemon too. It lives beside the Executor rather than inside the risk tool module, because robinhood-mcp-daemon builds its own Executor and loads no tool modules at all. A halt installed by a module would leave the one unattended process in the system still placing orders. Because the state is read from disk on every order rather than cached, throwing the switch from an MCP session stops a daemon that has been running since before the switch existed. It fails closed: a row that cannot be parsed reads as engaged, because resuming trading over a corrupted row is exactly the failure a kill switch exists to prevent.
Two limits are honest about what they are not. The cumulative cap is a per-process, in-memory counter that resets on restart: it is a runaway-loop brake, not an accounting system or a hard budget. And a durable job's total spend is not capped at all. Per-order caps apply to each order a job places, but a TWAP with 50 slices under a $100 per-order cap can commit $5,000. Size jobs deliberately and check risk_status before starting anything unattended.
Finally, scope the API key itself. Robinhood lets you pick permissions per credential: if you only want reads, do not grant order placement, and the key cannot trade no matter what software holds it. IP allowlisting is also available and worth using.
Requires Node.js 22.5 or newer (the durable job store uses node:sqlite).
Nothing to install ahead of time: MCP clients launch the servers with npx.
This prints a fresh Ed25519 keypair as JSON on stdout, with instructions on stderr. Then:
ROBINHOOD_CRYPTO_API_KEY.ROBINHOOD_CRYPTO_PRIVATE_KEY. It is a base64-encoded 32-byte Ed25519 seed, not a 64-byte expanded keypair and not PKCS#8. Several Ed25519 libraries export seedβpublicKey; pasting that gives 64 bytes and fails every request. Treat the private key like a password: it authorizes trades, and this package never stores or transmits it anywhere except in the signature it computes locally.If you already have a keypair from elsewhere, verify_keypair (in the dev module) checks that a private key matches the public key you registered, without sending anything anywhere.
Two binaries ship in the package, and they are separate on purpose.
| Server | Binary | What it can do |
|---|---|---|
| Data | robinhood-mcp | Quotes, holdings, account, order history, cost basis, P&L. Cannot place an order. |
| Trading | robinhood-mcp-trading | Everything above, plus real orders, synthetic order types, and risk controls. |
Read-only. This is the one to start with, and the one to attach to a general-purpose assistant. Paste into claude_desktop_config.json (Claude Desktop), .mcp.json (Claude Code), or your client's equivalent:
Ask your assistant: "What is my Robinhood crypto buying power, and what is BTC trading at?"
Trading. A separate entry, because it places real orders:
Set the caps to numbers you are comfortable losing. They are the only thing standing between a misunderstood instruction and a real fill.
You can run both entries at once. The data server is safe to leave attached permanently; add the trading server when you intend to trade.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/robinhood-crypto)<a href="https://allmcps.com/mcp/robinhood-crypto"><img src="https://allmcps.com/api/badge/robinhood-crypto?style=directory" alt="Robinhood Crypto on AllMCPs" /></a>