robinhood-mcp
${var} — empty = portfolio report (read-only).
orders[:N]= last N orders (default 10).trade:<instruction>= place one order, e.g.trade: buy $50 of AAPL— the only branch that writes. Anything else = treat as a question about the account and answer it read-only.
Access the operator's Robinhood Agentic Trading account through the Robinhood MCP server (agent.robinhood.com/mcp/trading). Trades execute in a dedicated Agentic brokerage account the operator authorized — real money, irreversible. The default posture is read-only reporting; an order is placed only when ${var} explicitly instructs it.
Detection & auth
The server is wired by the dashboard MCP panel's one-click Connect (OAuth; tokens stored as MCP_ROBINHOOD_TRADING_TOKEN + MCP_ROBINHOOD_TRADING_OAUTH, refreshed each run by scripts/mcp-oauth-refresh.sh). Its tools surface as mcp__robinhood-trading__* — discover them from the server; the tool descriptions are the source of truth, don't assume a fixed list.
- No
mcp__robinhood-trading__*tool callable → the server isn't connected (or its secrets are missing, in which case the workflow logged a::warning::and skipped MCP). LogRH_MCP_NOT_CONNECTED, notify once pointing the operator at the dashboard → MCP → Connect Robinhood Trading, and exit. Don't try to reach the API with curl — there is no static key. - Tools exist but return 401/invalid-token → the OAuth refresh failed (rotating refresh tokens need
GH_SECRETS_PAT— seedocs/mcp-oauth.md). LogRH_MCP_AUTH_STALE, notify the operator to re-connect the server once in the dashboard, and exit. Don't retry the same call more than twice.
Steps
1. Read the account
Whatever the branch, start with the reads — portfolio value, buying power, positions (symbol, quantity, cost basis, current value, unrealized P/L), and open orders. For orders[:N], pull order history and take the most recent N (default 10) with status, side, symbol, quantity/notional, and fill price.
2. Trade branch (only when ${var} starts with trade:)
Operator-initiated only — never trade on a scheduled/default run, and never invent an order.