11, MCP & Tools

MCP & Tools

The robinhood-trading MCP server is the single connector between Claude Code and the Robinhood Agentic broker, how it connects, and every tool grouped by permission tier.

Aelix reaches the broker through exactly one Model Context Protocol (MCP) server, named robinhood-trading. It is the only path to your account, there is no other API client, no scraper, and no second connection. Everything the desk reads or does at Robinhood goes through this server, and every call is subject to the permission tiers in `.claude/settings.json`.

The server is declared project-scoped in `.mcp.json`, so opening the project in Claude Code prompts you to trust it. Authentication is OAuth 2.0, performed in-session, the agent never sees your password.

The server definition

The connection lives in .mcp.json at the repo root. It uses the HTTP transport pointed at Robinhood's agent endpoint:

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

Because the server is project-scoped, .claude/settings.json pre-lists it under enabledMcpjsonServers so Claude Code knows it is expected.

Connecting & authenticating

You only need to do this once. Open the project, trust the server, then authenticate over OAuth from inside the session:

bash
# The .mcp.json above is enough, but you can also add it explicitly:
claude mcp add robinhood-trading --transport http https://agent.robinhood.com/mcp/trading

# In-session, authenticate (opens Robinhood's OAuth consent in a browser;
# a verification step happens in the Robinhood mobile app):
/mcp

# Inspect the server + its real tool names any time:
claude mcp get robinhood-trading

Tool inventory by permission tier

Permissions are evaluated deny → ask → allow, first match wins, and a matching ask rule prompts even when a broader allow also matches. The desk's tools fall into three tiers:

GroupRepresentative toolsTier
Account & portfolio (read)get_accounts, get_portfolio, get_equity_positions, get_equity_ordersallow
Market data (read)get_equity_quotes, get_equity_historicals, get_equity_fundamentals, get_equity_tradability, get_index_quotes, get_indexes, get_earnings_calendar, get_earnings_results, searchallow
Scans & watchlists (read)get_scans, run_scan, get_watchlists, get_watchlist_items, get_popular_watchlistsallow
Order preview (read)review_equity_orderallow
Scan & watchlist mutationscreate_scan, update_scan_config, update_scan_filters, create_watchlist, add_to_watchlist, remove_from_watchlist, follow_watchlistask
Equity ordersplace_equity_order, cancel_equity_orderask
Option ordersplace_option_order, cancel_option_orderdeny

Exact lists live in .claude/settings.json. Option order tools are denied because the underlying beta is equities-only.

Least privilege: who holds what

Tool access is scoped per role in each agent's frontmatter. Only the Portfolio Manager holds the order tools (review_equity_order, place_equity_order). The three analysts and the Risk Manager have no order tools at all, they physically cannot place a trade. Each role gets only the read tools its job needs:

  • Fundamental Analyst, get_equity_fundamentals, get_earnings_calendar, get_earnings_results, get_equity_quotes, search.
  • Technical Analyst, get_equity_historicals, get_equity_quotes, get_index_quotes, run_scan, get_scans, get_watchlist_items.
  • Macro / News Analyst, WebSearch, WebFetch, get_index_quotes, get_indexes, get_earnings_calendar.
  • Risk Manager, get_portfolio, get_equity_positions, get_accounts, get_equity_orders, get_equity_quotes (read-only).

See The Desk Team for each role's full definition and Configuration for how frontmatter and settings fit together.

Kill switch

You can sever the connection at any time, this is your hard stop. Disconnect the MCP from the Robinhood app, or remove it locally:

bash
claude mcp remove robinhood-trading
HTTP transportOAuth 2.0Project-scopeddeny → ask → allowEquities only