03, INSTALLATION & SETUP

Installation & Setup

Connect Aelix to your Robinhood Agentic account the safe way: clone the repo, trust the project MCP server, authenticate over OAuth, tighten the permission gate, and write a strategy before your first order.

This page is the full walkthrough from an empty desktop to a desk that can propose, but never silently place, a trade. It follows `docs/SETUP.md` step for step: get the repo, trust the project-scoped MCP server, authenticate to Robinhood over OAuth, verify the real tool names, tighten the permission gate, and write a strategy before anything trades.

Setup is deliberately conservative. The default posture is everything gated, every Robinhood tool call asks for your approval, and you loosen it deliberately, one read-only tool at a time. Nothing here weakens the guardrails in `CLAUDE.md`; it only wires the broker in behind them.

Prerequisites

  • A Robinhood individual investing account in good standing.
  • A desktop device, you can only open the Agentic account and authenticate there.
  • A funding amount decided in advance. This is the most the agent can ever lose. Start small.
  • Claude Code installed and logged in.

The Agentic account opens and authenticates on desktop only. Have the Robinhood mobile app on hand too, OAuth includes a verification step there.

Setup, end to end
1. CLONE      git clone … ─▶ cd rh-trading-agent   (.mcp.json ships the server)
2. TRUST      claude        ─▶ approve robinhood-trading (project-scoped MCP)
3. AUTH       /mcp          ─▶ OAuth in browser ─▶ verify in RH mobile app
                            ─▶ onboarding auto-opens ─▶ create + FUND Agentic acct
4. TIGHTEN    claude mcp get robinhood-trading ─▶ split tools deny / ask / allow
5. STRATEGY   write strategies/*.md            ─▶ caps + entry/exit rules
   ────────────────────────────────────────────────────────────────────────
   READY      first desk run stops at a preview card, you approve or pass

1. Get the repo locally

bash
git clone <your-private-repo-url> rh-trading-agent
cd rh-trading-agent

The repo's .mcp.json already defines the Robinhood Trading MCP server at project scope, so you do not need to run claude mcp add separately. The definition is a single HTTP endpoint:

.mcp.json
{
  "mcpServers": {
    "robinhood-trading": {
      "type": "http",
      "url": "https://agent.robinhood.com/mcp/trading"
    }
  }
}

If you prefer to register it explicitly instead of relying on the project file, the equivalent command is:

bash
claude mcp add robinhood-trading --transport http https://agent.robinhood.com/mcp/trading

2. Launch and trust the project server

bash
claude

The first time you open this project, Claude Code asks whether to trust the project-scoped MCP server from .mcp.json. Approve `robinhood-trading`. The repo's .claude/settings.json pre-lists it under enabledMcpjsonServers, so the trust prompt is a one-time confirmation:

.claude/settings.json
"enabledMcpjsonServers": [
  "robinhood-trading"
]

3. Authenticate (OAuth)

Authentication happens inside the session. Open the MCP panel:

shell
/mcp
Pick the server

Select robinhood-trading and authenticate

From the /mcp panel, choose `robinhood-trading` and start the auth flow.

Consent in browser

Approve on Robinhood's OAuth screen

A browser opens Robinhood's OAuth consent screen. The agent never sees your password, the OAuth handshake happens between you and Robinhood.

Verify on mobile

Complete the check in the Robinhood mobile app

There is a verification step in the Robinhood mobile app. Approve it there to finish connecting.

Create + fund

Onboarding auto-opens for the Agentic account

After connecting, Robinhood's onboarding auto-opens. Create your Agentic account and fund it with your dedicated budget, the amount you decided in advance. This isolated account is the only one the desk can trade.

4. Verify the tools and tighten permissions

By default, every Robinhood tool call requires manual approval, the ask rule applied to mcp__robinhood-trading__*. That is intentional for the first runs: you watch every call before it happens. To refine it, you first need the real tool names.

bash
claude mcp get robinhood-trading

You can also run /mcp in-session to list them. Once you know the names, edit .claude/settings.json: move read-only tools (positions, buying power, quotes) into allow so routine reads stop prompting, and keep order-placing tools in ask, or in deny while you are still testing a strategy and want zero live orders.

How the three tiers are evaluated

deny
Hard block. The tool cannot run, no prompt. Use it to physically wall off tools you never want touched, this repo denies the options order tools (place_option_order, cancel_option_order) because the desk is equities only.
ask
Gated. Every call pauses for your explicit in-session approval. This is where order tools live, place_equity_order stays in ask so a human always confirms.
allow
Runs without a prompt. Reserve it for read-only tools whose worst case is a wasted API call, quotes, positions, fundamentals, order history.

Here is the illustrative example from docs/SETUP.md. The tool names are placeholders, replace them with the actual names from claude mcp get:

.claude/settings.json (illustrative)
{
  "permissions": {
    "deny": ["mcp__robinhood-trading__cancel_all"],
    "ask": ["mcp__robinhood-trading__place_order"],
    "allow": [
      "mcp__robinhood-trading__get_positions",
      "mcp__robinhood-trading__get_buying_power"
    ]
  }
}

For reference, the .claude/settings.json checked into this repo already ships a worked split you can start from and tighten. A representative slice of the real tool names:

TierBehaviorExample tools (real names)
allowRuns, no prompt (read-only)get_accounts, get_portfolio, get_equity_positions, get_equity_quotes, get_equity_fundamentals, get_equity_orders, run_scan, review_equity_order
askPauses for approvalplace_equity_order, cancel_equity_order, create_scan, create_watchlist, add_to_watchlist
denyHard block (not equities)place_option_order, cancel_option_order

Representative tools from the repo's checked-in permission gate.

Note that review_equity_order sits in allow, it only builds a preview, it does not place anything. The tool that actually submits an order, place_equity_order, stays in ask. For the full breakdown of every list, see Configuration & Permissions.

5. Define a strategy before trading

Do not trade against an empty rulebook. Write your rules in strategies/, per-trade cap, max positions, entry/exit logic, stop conditions. CLAUDE.md requires every proposed trade to map to a written rule there, and the Risk Manager reads that folder before clearing any trade. If a cap is removed or left unset, the Risk Manager VETOes.

Kill switch

You can cut the broker connection at any time. Disconnect the MCP from the Robinhood app, or remove it locally:

bash
claude mcp remove robinhood-trading
Removes
The desk's access to the broker over MCP
Its ability to read positions or place orders
Does not touch
Your Robinhood account or its funds
Existing positions or open orders
The repo, strategies, or guardrails

Reminders & responsibilities

  • The funding amount is the hard ceiling on loss, nothing the agent does can exceed it, but a small cap does not validate the strategy behind a trade.
  • Keep order tools in `ask` (or `deny` while testing). A gated order is the whole point, see Guardrails.
  • Every trade must cite a written rule in strategies/, or the Risk Manager vetoes it, see Strategies.
  • When you are ready for a first run, follow the Quickstart and watch it stop at a preview card.

Where to go next

Connecting the Broker

MCP

How the robinhood-trading server wires in, tool namespacing, and the HTTP transport. See MCP.

Configuration & Permissions

GATE

The full deny → ask → allow breakdown and every tool's tier. See Configuration.

First desk run

QUICKSTART

The fastest path from a connected broker to a preview card. See Quickstart.

Desktop onlyOAuthProject-scoped MCPdeny → ask → allowFund smallEquities onlyBeta