Quickstart
The fastest path from clone to first desk run, private repo, connect the Robinhood MCP over OAuth, fund a small Agentic budget, set your caps, and drive the desk in plain language.
This is the shortest route from an empty folder to your first desk run. You'll make the repo private, clone it, connect the Robinhood Trading MCP server over OAuth, fund an isolated Agentic account with a small dedicated budget, write your risk caps, and then talk to the Portfolio Manager in plain language. The desk researches, risk-checks, and stops at a preview card, you approve; it places.
Every step below is grounded in the repo's own `README.md` and `docs/SETUP.md`. For the full, annotated walkthrough, refining permissions, verifying tool names, tightening guardrails, read Installation & Setup after you finish here.
Before you start
You need four things: a Robinhood individual account in good standing, a desktop device, Claude Code installed and logged in, and a funding amount you've decided in advance.
- Robinhood individual investing account, in good standing. The desk connects on top of it and trades only inside a separate Agentic account.
- A desktop device, you can only open the Agentic account and complete authentication on desktop.
- Claude Code, installed and logged in, the desk runs entirely inside a Claude Code session.
- A small dedicated budget, decided up front, this is the most the agent can ever lose. Start small.
The funding cap limits loss; it does not make a strategy sound. You stay responsible for monitoring.
From clone to first run
The whole path is seven moves. Each is expanded with the exact commands below.
Make the repo private
Before pushing anything anywhere, set the repository to private. It holds guardrails and strategy notes, never secrets, and never the OAuth token.
Clone it
A plain git clone is enough, the shipped .mcp.json already declares the robinhood-trading server at project scope.
Open, trust, authenticate, fund
Launch claude, trust the project MCP server, run /mcp to authenticate over OAuth, then create and fund the Agentic account.
Set your caps
Write your risk caps in `strategies/`. If a cap is missing, the Risk Manager VETOes every trade.
Drive the desk
Ask the PM in plain language to screen your watchlist or run the desk on specific tickers.
Approve at the preview
The desk stops at a preview card. You approve in-session; only then does it place, still gated by the ask rule.
1 · Make the repo private
This repository holds the guardrails, strategy notes, agents, dashboard, and setup docs, never secrets, and never the OAuth token (those live outside the repo). Even so, set it to private before you push anything. Do this first.
2 · Clone the repo
Clone your private repo. The shipped .mcp.json already defines the Robinhood Trading MCP server at project scope, so you don't need a separate claude mcp add step, the plain clone is enough.
git clone <your-private-repo-url> rh-trading-agent
cd rh-trading-agentPrefer to register it by hand? claude mcp add robinhood-trading --transport http https://agent.robinhood.com/mcp/trading adds the same HTTP server.
3 · Open, trust, authenticate, and fund
Open the project with claude. The first time, Claude Code asks whether to trust the project-scoped MCP server from .mcp.json, approve robinhood-trading (it's already pre-listed under enabledMcpjsonServers in .claude/settings.json). Then, inside the session, run /mcp, pick robinhood-trading, and authenticate: a browser opens Robinhood's OAuth consent screen (the agent never sees your password), with a verification step in the Robinhood mobile app. Once connected, Robinhood's onboarding auto-opens so you can create your Agentic account and fund it with your dedicated budget.
claude # 1. open the project; trust the robinhood-trading server
# /mcp # 2. in-session: pick robinhood-trading -> OAuth in browser
# # then complete the verify step in the Robinhood mobile app
# (onboarding opens) # 3. create the Agentic account, fund your dedicated budget
cp .env.example .env # 4. record your Agentic account number in .envTo see the real tool names once connected, run claude mcp get robinhood-trading (or /mcp in-session). By default every Robinhood tool call is gated by an ask rule on mcp__robinhood-trading__*, that's intentional for the first runs. Refining that gate is covered in Configuration.
4 · Set your strategy caps
CLAUDE.md requires every proposed trade to map to a written rule in `strategies/`, and the Risk Manager reads that folder before clearing any trade. If a cap is removed, blank, or left as TODO, the Risk Manager VETOes, so fill these in before you trade. The defaults below are conservative starting values you own and edit; they're illustrative, not advice.
| Cap | Default | Purpose |
|---|---|---|
| Per-trade cap | 15% of equity | Hard ceiling on any one place_equity_order. |
| Max concentration | 25% of equity in one symbol | Blocks over-concentration; includes all adds. |
| Max open positions | 6 | Forces diversification in a small account. |
| Max daily orders | 4 | Throttles churn; counts buys + sells per day. |
| Per-position stop-loss | −8% from average entry | Every entry must define this before it's placed. |
| Daily loss halt | −5% account day P&L | Stop, report, and ask for the rest of the day. |
| Cash buffer | ≥10% of equity in cash | Never fully deploy. |
Default risk caps from strategies/README.md, edit to match your budget.
5 · Start the dashboard
The dashboard is a read-only mirror, not a controller, it visualizes the desk-state.json snapshot the PM writes after each run and cannot place orders. Start it in a separate terminal.
cd ui
npm install
npm run dev # opens http://localhost:5180A demo public/desk-state.example.json ships so the UI looks alive on a fresh clone; your first live run replaces it. The app polls the snapshot every ~5s and cache-busts each poll, so writes appear within about five seconds without a reload.
6 · Drive the desk
You talk to the Portfolio Manager, the main Claude Code session, in plain language. It fans out to the three analysts in parallel, routes their verdicts through the Risk Manager, and comes back with a preview. Try prompts like these.
Screen my watchlist and bring me the top 2 ideas with full team analysis.
Run the desk on AAPL and NVDA, fundamental, technical, macro, then
risk-check a small starter position in the better one.
After the desk run, write the state to ui/public/desk-state.json.The desk senses the account, screens your watchlist, researches the survivors with three analysts, synthesizes a candidate tied to a written rule, and risk-checks it. Those steps produce no order. See The Desk Run for the full pipeline and The Desk Team for who does what.
Kill switch
You can cut the desk off from your broker at any time, either disconnect the MCP from the Robinhood app, or remove the server locally.
claude mcp remove robinhood-tradingCommon gotchas
- Restart after editing agents
- The sub-agents in
.claude/agents/load when Claude Code starts. After adding or editing them, restart the session so roles likefundamental-analystare recognized with their restricted tool sets. - Permission order is deny → ask → allow
- First match wins, and a matching
askrule prompts even when a more specificallowalso matches. Keep order-placing tools inask(ordenywhile testing), not overridden by a broad allow. Details in Configuration. - Unset caps mean VETO
- If
strategies/caps are missing, blank, orTODO, the Risk Manager blocks every trade. Fill them in before your first run, see Strategies. - The dashboard can't trade
- The UI at
http://localhost:5180only mirrorsdesk-state.json. Approval and execution happen only in the Claude Code session. More in Dashboard.