Build a Human-Gated Robinhood Agent

Connect Claude Code to Robinhood MCP and approve a live fractional trade.

Introduction

30 Second Summary

Giving an AI access to a brokerage account raises the stakes immediately. Any useful workflow needs a deliberate pause before money enters the market.

In this project, you will build a human-gated trading workspace in Claude Code connected to the official Robinhood Trading MCP. The workflow requires two human checks before one learner-selected $1 to $10 fractional equity order reaches the market.

What You'll Build

You will demo a trading agent whose reviewed order cannot reach Robinhood Activity until you approve it twice.

By the end of this project, you'll have:

  • A read-only account check that shows settled buying power, current positions, fractional eligibility, and a live quote without placing a trade.
  • A pre-trade simulation that displays every warning before any live order exists.
  • A two-gate live order workflow that leaves a Claude session you can reconcile with Robinhood Activity.
  • Secret Mission: Run an MCP revocation drill that proves Robinhood access is gone before restoring the guarded connection.

What do I need before starting?

You need a Mac, a Robinhood Agentic account in good standing, eligible Claude Code access, $1 to $10 of settled buying power, and your own equity or ETF choice. The live-order portion is limited to regular market hours with up to $10 of principal exposed to market risk.

Before We Start

A live trade begins with a decision that belongs to you. This checkpoint defines what you selected before any AI tool can inspect your account or prepare an order.

Your sentence sets three boundaries for the experiment. It records your chosen equity or ETF as TICKER. It also records your reason plus an exact AMOUNT from $1 to $10.

Connect Claude Code to Robinhood

Your TICKER decision defines the security for this experiment. Your AMOUNT limit caps the principal you are willing to risk between $1 and $10.

Before Claude can inspect your Agentic account, Claude Code needs a verified local installation. It also needs an authenticated connection to the Robinhood Trading MCP.

This step keeps the integration inside one project directory. That scope gives the guarded trading workflow a clear home on your Mac.

In this step, get ready to:
  • Create an isolated project directory on your Mac.
  • Verify your Claude Code installation and complete authentication.
  • Connect the official Robinhood Trading MCP and inspect its tools.
Prepare the workspace and verify Claude Code

The version check runs from inside ~/robinhood-guarded-agent. Starting Claude Code from this directory anchors later project settings to the correct workspace.

  • Press Cmd+Space to open Spotlight on macOS.
  • Type Terminal into Spotlight.
  • Press Enter to open Terminal.
  • Prepare the project workspace and check Claude Code by running these commands:
mkdir -p ~/robinhood-guarded-agent
cd ~/robinhood-guarded-agent
claude --version

What Do These Commands Do?

  • The mkdir command creates the project directory if it does not already exist.
  • The cd command moves your terminal session into that directory.
  • The final check asks Claude Code to print its installed version.
  • Match the result from the version check to the tab that describes what you see.

✔️ I see a version number

That is the first dependency confirmed. A working installation prints a version number followed by (Claude Code).

ⓧ Command not found

  • Install Claude Code and rerun the version check by running these commands:
curl -fsSL https://claude.ai/install.sh | bash
claude --version

What Does This Installer Do?

The first command downloads Anthropic's native macOS installer through curl. The second command checks that your shell can now find Claude Code.

You should see a version number followed by (Claude Code).

Still Missing the Claude Command?

Close Terminal after the installer finishes. Open a fresh Terminal window so your shell reloads its command path.

If the command is still unavailable, help me troubleshoot the Claude Code installation. You can also review the official installation guide.

Claude Code starts an interactive session in this terminal. On first launch, your browser guides you through authentication.

  • Start Claude Code by running this command:
claude

What Happens on First Launch?

Claude Code opens a browser authentication flow for an eligible Claude account. The terminal session becomes ready after that authentication succeeds.

  • Complete the authentication prompts in your browser.
  • Return to the Claude Code session in Terminal.
  • Confirm that Claude Code accepts input at its interactive prompt.
Configure the Trading MCP

A remote MCP server exposes tools that Claude Code can call through a network connection. The official Robinhood endpoint provides the account and equity tools used in this project.

  • End the active Claude Code session so your normal terminal prompt returns.
  • Confirm that the terminal prompt still points to ~/robinhood-guarded-agent.
  • Register the official Trading MCP by running this command:
claude mcp add robinhood-trading --transport http https://agent.robinhood.com/mcp/trading

What Does This Command Configure?

  • The server name robinhood-trading identifies this connection inside Claude Code.
  • The --transport http option configures a remote HTTP connection.
  • The endpoint https://agent.robinhood.com/mcp/trading points Claude Code to Robinhood's official Trading MCP.

You should see confirmation that the MCP server was added to Claude Code.

Could Not Add the Server?

Check that your Mac still has an internet connection. Confirm that the server name and endpoint match the command exactly.

If the command still fails, help me diagnose the Robinhood MCP setup.

  • Start a fresh Claude Code session by running this command:
claude

Why Start a Fresh Session?

The new session loads the MCP server you just registered. It also starts from ~/robinhood-guarded-agent so the connection stays associated with this workspace.

Authorize access and verify tools

The Trading MCP uses OAuth to authorize access to your Robinhood Agentic account. The browser handles authentication without placing credentials in your project files.

Check the Authorization Carefully

Linking a brokerage account deserves a careful pause. This connection can expose account details and trading tools to Claude Code.

Review the browser authorization before approving it. Make sure you are signing in to the Robinhood account you intend to use for this experiment.

  • Enter /mcp at the Claude Code prompt.
  • Select robinhood-trading from the server list.
  • Start the browser authentication flow for the selected server.
  • Complete the Robinhood authorization prompts in your browser.
  • Return to the Claude Code session in Terminal.

Before you check, which account and order capabilities do you expect the authenticated server to expose?

  • Enter /mcp at the Claude Code prompt again.
  • Select robinhood-trading to inspect its current status and available tools.

You should see robinhood-trading connected. Its available tools should include get_accounts, review_equity_order, and place_equity_order.

That is the connection complete: Claude Code can now see the required Robinhood account and equity-order tools.

Connection Missing or Unauthenticated?

  • Select robinhood-trading in /mcp to restart the browser authentication flow.
  • Complete every browser prompt before returning to Claude Code.
  • Check the server status again from /mcp.

If the connection still does not succeed, help me troubleshoot Robinhood MCP authentication.

Your authenticated workspace is ready. Next, you will use read-only tools to check the account before constructing any order.

Inspect the Account and Quote

Your authenticated Model Context Protocol (MCP) connection gives Claude Code a path into your Robinhood Agentic account. This step keeps that path read-only.

A read-only pass proves the connection can retrieve account data without creating an order. It also checks your buying power plus the fractional eligibility of your selected symbol.

In this step, get ready to:
  • Capture a redacted account baseline.
  • Confirm settled buying power covers $your chosen amount from 1 to 10.
  • Inspect market details for your selected ticker.
Request a read-only account snapshot

Robinhood account access includes balances plus positions. It also includes order history. Your first request limits Claude to read-only tools and asks it to hide account identifiers.

  • Switch back to the authenticated Claude Code session from earlier.
  • Ask Claude to build the account baseline by pasting this instruction:
Use only read-only Robinhood Trading MCP tools. Call get_accounts, get_portfolio, get_equity_positions, and get_equity_orders for my Agentic account. Do not call any review, place, or cancel tool. Summarize buying power and positions, redact account identifiers, and record the latest existing equity order so we have a baseline.

What Does This Request Check?

  • The get_accounts tool identifies the Robinhood Agentic account.
  • The get_portfolio tool returns a portfolio snapshot with buying power.
  • The get_equity_positions tool retrieves existing equity positions.
  • The get_equity_orders tool retrieves equity order history.
  • The redaction instruction keeps account identifiers out of Claude's summary.
  • Review the summary to confirm it identifies the account as Agentic.
  • Confirm the summary hides every account identifier.
  • Find the reported settled buying power.
  • Keep the latest existing equity order labeled as the baseline in the current Claude Code session.

You'll see a redacted account summary with buying power plus positions. You'll also see the latest existing equity order recorded as your comparison point.

Missing Account Data?

Return to /mcp to confirm robinhood-trading still shows as connected. Reauthenticate if the server reports that authorization is required.

If a read tool fails while the connection remains active, help me diagnose the read-only Robinhood MCP call.

Confirm enough settled buying power

Settled buying power determines whether the Agentic account can cover your chosen amount. Your balance must reach the amount you already committed to risk before you continue.

  • Compare the reported settled buying power with $your chosen amount from 1 to 10.

✔️ Buying power covers my amount

Good. Your Agentic account can cover the amount you selected without adding more cash.

ⓧ Buying power is below my amount

This transfer increases the cash available for trading. Limiting it to the shortfall preserves the risk limit you already chose.

  • Open the Robinhood app.
  • Select Account using the person icon.
  • Select Transfers.
  • Select Transfer.
  • Select Transfer money between accounts.

Transfer Only the Shortfall

Use the difference between your chosen amount and the settled buying power shown by Claude. This keeps the funded amount aligned with your original decision.

  • Enter only the amount needed to cover the shortfall.
  • Choose your eligible source account.
  • Choose the Agentic account as the destination.
  • Review the transfer details.
  • Submit the transfer.
  • Switch back to the Claude Code session from earlier.
  • Ask Claude to rerun get_portfolio with account identifiers redacted.

You'll see settled buying power at or above your chosen amount. That closes the funding gap without expanding the experiment.

Check the selected symbol

Fractional eligibility lets the order use your chosen dollar amount instead of a whole-share quantity. A current quote plus the prior close gives you the market details needed for the later preview.

  • Send Claude the read-only symbol request by pasting this instruction:
For [[TICKER="your selected ticker"]], call get_equity_tradability and get_equity_quotes. Tell me whether it is tradable, whether it supports fractional trading, the current quote, and the prior close. Do not recommend whether I should buy it and do not construct an order.

What Does This Request Check?

  • The get_equity_tradability tool reports whether the symbol can be traded.
  • The same tool reports whether the symbol supports fractional trading.
  • The get_equity_quotes tool returns the current quote.
  • The quote response also includes the prior close.
  • The final instruction keeps the investment decision with you.

✔️ My ticker supports fractional trading

Great. Your selected symbol supports the dollar-based order you plan to preview.

  • Confirm the response reports the symbol as tradable.
  • Confirm the response reports fractional trading as supported.
  • Read the current quote.
  • Read the prior close.

ⓧ My ticker is ineligible

An ineligible symbol cannot support this project's small fractional order. The replacement decision remains yours.

  • Choose a different equity or ETF yourself.
  • Update your selected ticker with the new symbol.
  • Repeat the read-only symbol request above.

Before you run the final check, do you expect every requirement to pass without any order tool being called?

  • Ask Claude to rerun the account snapshot request from the first substep.
  • Ask Claude to rerun the symbol request for your selected ticker.

You'll see the Agentic account with settled buying power at or above $your chosen amount from 1 to 10. You'll also see a current quote plus confirmation that your selected symbol is tradable and supports fractional trading.

Seeing a Missing Quote or Eligibility Result?

Check that the ticker contains the symbol you selected. Ask Claude to retry only get_equity_tradability plus get_equity_quotes.

If the response still lacks one of the required fields, help me inspect my ticker with read-only Robinhood MCP tools.

Your account plus symbol now pass the read-only checks. Next, you'll simulate the small order and prove that a preview creates no live trade.

Preview the Fractional Order

Your read-only checks confirmed that the Agentic account has enough settled buying power. They also confirmed that your selected symbol supports fractional trading.

A pre-trade simulation in Claude Code shows what the order would look like. It leaves the execution boundary untested.

In this step, get ready to:
  • Confirm the existing equity order baseline from your read-only account snapshot.
  • Simulate your chosen fractional order without submitting a live trade.
  • Compare the order history with the baseline before inspecting the current permission boundary.
Confirm the retained order baseline

Your earlier account snapshot already contains the latest existing equity order. That retained order gives you a reference point for detecting any new live order.

  • Return to the redacted account summary in your current Claude Code session.
  • Locate the most recent existing equity order.
  • Confirm that its current status appears in the baseline.

You now have a specific existing order to compare against after the simulation.

Why Use the Existing Baseline?

An order preview can resemble a completed trade because it contains a symbol plus an amount. Comparing the account history with a known baseline gives you independent evidence about whether Robinhood received a new order.

Simulate the fractional order

The review_equity_order tool on the Robinhood Trading MCP simulates an equity order. Its response can include pre-trade warnings without creating a live order.

The prompt reuses your selected ticker. It also reuses the dollar amount your chosen amount from 1 to 10.

  • Send the simulation request by pasting this prompt into your current Claude Code session:
Prepare, but do not place, a dollar-based buy of $[[AMOUNT="your chosen amount from 1 to 10"]] for [[TICKER="your selected ticker"]] in my Agentic account. The amount must be from $1 to $10. Call get_equity_tradability, get_equity_quotes, and review_equity_order. Stop after the simulation. Return the symbol, side, dollar amount, order type, estimated quantity if the preview returns one, current quote, and every pre-trade warning. Never call place_equity_order.

What Does This Prompt Control?

  • The get_equity_tradability call refreshes the symbol's eligibility for fractional trading.
  • The get_equity_quotes call refreshes the current quote before the preview.
  • The review_equity_order call produces the simulated order plus its warnings.
  • The stop instruction keeps place_equity_order outside this preview workflow.
  • Inspect each Claude Code tool permission prompt that appears.
  • Approve only calls to get_equity_tradability, get_equity_quotes, or review_equity_order for this preview.
  • Deny any attempt to use place_equity_order.

Claude returns a simulated order summary with no submitted trade.

  • Compare the reported symbol with your selected ticker.
  • Confirm that the reported side is a buy.
  • Compare the reported dollar amount with your chosen amount from 1 to 10.
  • Review the reported order type.
  • Check the reported current quote.
  • Note the estimated quantity when the preview returns one.
  • Read every pre-trade warning in the response.

That is the first safety check complete: you have a detailed order preview without a submitted trade.

Seeing the Wrong Tool or Order Details?

  • Deny the call immediately if Claude attempts to use place_equity_order.
  • Repeat the prompt if the symbol differs from your selected ticker.
  • Stop the preview if the dollar amount falls outside your chosen value.

Ask for help with the simulation output: Help me check why my Robinhood order preview used the wrong tool or order details.

Test the execution boundary

The simulation response looks complete. A fresh order-history comparison reveals whether that preview changed the brokerage account.

Before you run the comparison, consider whether a simulation should add a new order to the account history.

  • Ask Claude to compare the current orders with the retained baseline by sending this prompt:
Call get_equity_orders for my Agentic account again. Compare the newest order with the baseline from before the simulation. Report whether review_equity_order created a live order. Do not place, cancel, or replace anything. Redact account identifiers.

What Does This Comparison Prove?

The newest order should still match the retained baseline. That unchanged history proves the review_equity_order call created a simulation without submitting a live order.

You should see no new equity order after the preview.

Does the Order History Look Different?

Stop if the newest order differs from the baseline. Check its symbol plus timestamp before continuing.

Get help comparing the two snapshots: Help me compare my Robinhood order baseline with the latest read-only order history.

The unchanged order history proves that previewing remained non-live. The next check examines whether a future placement call has a dedicated permission boundary.

Before you inspect the permission rules, consider whether you expect a dedicated Ask entry for the live placement tool.

  • Inspect Claude Code's current permission rules by entering this command:
/permissions

What Does This Screen Show?

The Ask list contains tool rules that require confirmation whenever a matching call is attempted. A dedicated placement rule would name the complete MCP tool identifier.

  • Inspect the Ask list for mcp__robinhood-trading__place_equity_order.

You will not find an explicit Ask rule for the equity placement tool. This intended shortfall shows that the project has no dedicated interception rule yet.

Your latest order still matches the retained baseline. The Ask list has no explicit rule for the live equity placement tool.

You have found the execution gap. Next, you will add a project policy plus an independently enforced approval prompt.

Enforce the Approval Gate

Your preview proved that the Robinhood Trading MCP can prepare your learner-selected order without placing it. The permissions check exposed the missing safety boundary.

The project policy in CLAUDE.md guides the model's behavior. A Claude Code Ask rule independently intercepts every equity placement attempt.

In this step, get ready to:
  • Create the project trading policy.
  • Configure the placement tool to require an Ask prompt.
  • Verify both safety layers in a fresh Claude Code session.
Create the policy and permission files

Persistent project instructions give every fresh session the same trading boundaries. Shared project settings control whether a matching tool call requires your permission.

The leading dot makes .claude easy to miss in a file sidebar. The Terminal command creates that settings directory directly.

  • Exit the active Claude Code session to return to the Terminal prompt.
  • Create .claude inside ~/robinhood-guarded-agent by running this command:
mkdir -p .claude

What does this command do?

The -p flag creates the hidden settings directory when it does not exist. It keeps an existing directory intact.

  • Confirm the Terminal returns to the prompt without reporting a problem.

Directory command not completing?

  • Confirm the Terminal prompt is inside ~/robinhood-guarded-agent.
  • Check that the command includes the leading dot in .claude.

Get help with creating the project settings directory.

  • Use your code editor's file sidebar to create CLAUDE.md inside ~/robinhood-guarded-agent.
  • Paste this policy into CLAUDE.md:
# Robinhood Trading Safety Policy

## Scope

- Work only with the Robinhood Agentic account.
- Long equity purchases only.
- The learner chooses the symbol and a dollar amount from $1 to $10.
- Do not recommend a security or make the investment decision.
- Do not expose account numbers or other account identifiers in summaries.

## Required workflow

1. Call `get_accounts`, `get_portfolio`, `get_equity_tradability`, and `get_equity_quotes`.
2. Reject any amount below $1 or above $10.
3. Call `review_equity_order` before any call to `place_equity_order`.
4. Present the account type, symbol, side, dollar amount, order type, quote, estimated quantity if returned, and every pre-trade warning.
5. Stop and wait for the learner to type exactly: `APPROVE LIVE TRADE`
6. After that phrase, call `place_equity_order` once. Do not retry automatically.
7. Call `get_equity_orders` and report the submitted order's current status.

## Prohibited behavior

- No options or crypto orders.
- No recurring strategies, triggers, unattended trading, rebalancing, or autonomous retries.
- No order cancellation or replacement without separate explicit approval.
- If regular market hours are not open, stop after preview and ask the learner to resume when regular market hours are open.

What does this policy control?

  • The Scope section limits the workflow to the Robinhood Agentic account.
  • The Required workflow section requires account checks before a preview.
  • The exact phrase APPROVE LIVE TRADE records the learner's decision before placement.
  • The Prohibited behavior section blocks unattended trading patterns.
  • Save CLAUDE.md.
  • Confirm the first line reads # Robinhood Trading Safety Policy.
  • Confirm the final line requires regular market hours before placement.

Policy content looks incomplete?

  • Confirm the file is named exactly CLAUDE.md.
  • Check that the file sits directly inside ~/robinhood-guarded-agent.

Get help with checking the project policy file.

✔️ Awesome, I've got everything!

Your saved policy contains the full scope, required workflow, confirmation phrase, and prohibited behavior.

ⓧ I'd like to double check the full code

# Robinhood Trading Safety Policy

## Scope

- Work only with the Robinhood Agentic account.
- Long equity purchases only.
- The learner chooses the symbol and a dollar amount from $1 to $10.
- Do not recommend a security or make the investment decision.
- Do not expose account numbers or other account identifiers in summaries.

## Required workflow

1. Call `get_accounts`, `get_portfolio`, `get_equity_tradability`, and `get_equity_quotes`.
2. Reject any amount below $1 or above $10.
3. Call `review_equity_order` before any call to `place_equity_order`.
4. Present the account type, symbol, side, dollar amount, order type, quote, estimated quantity if returned, and every pre-trade warning.
5. Stop and wait for the learner to type exactly: `APPROVE LIVE TRADE`
6. After that phrase, call `place_equity_order` once. Do not retry automatically.
7. Call `get_equity_orders` and report the submitted order's current status.

## Prohibited behavior

- No options or crypto orders.
- No recurring strategies, triggers, unattended trading, rebalancing, or autonomous retries.
- No order cancellation or replacement without separate explicit approval.
- If regular market hours are not open, stop after preview and ask the learner to resume when regular market hours are open.

What should match?

Compare every heading, rule, tool name, and confirmation phrase with your saved file. An exact match keeps the workflow predictable across fresh sessions.

The permission file creates the enforced checkpoint outside the model's reasoning. Every call to the named placement tool reaches the Ask list.

  • Use your code editor's file sidebar to create settings.json inside ~/robinhood-guarded-agent/.claude.
  • Paste this configuration into .claude/settings.json:
{
  "permissions": {
    "ask": [
      "mcp__robinhood-trading__place_equity_order"
    ]
  }
}

What does this configuration enforce?

The permissions object defines how Claude Code handles tool calls. The ask list requires confirmation for every matching call.

The rule targets mcp__robinhood-trading__place_equity_order exactly. Read-only tools remain available without weakening the placement boundary.

  • Save .claude/settings.json.
  • Confirm the file contains one entry under ask.
  • Confirm that entry is mcp__robinhood-trading__place_equity_order.

Permission file not matching?

  • Confirm the file path is ~/robinhood-guarded-agent/.claude/settings.json.
  • Check every quotation mark around the permission rule.
  • Remove any trailing comma after the permission rule.

Get help with checking the permission configuration.

✔️ Awesome, I've got everything!

Your project settings contain the single Ask rule required for equity placement.

ⓧ I'd like to double check the full code

{
  "permissions": {
    "ask": [
      "mcp__robinhood-trading__place_equity_order"
    ]
  }
}

What should match?

Compare the braces, quotation marks, list structure, and complete permission name with your saved file. The configuration must remain valid JSON.

Reload and validate the policy

Claude Code reads project instructions and shared settings when a session starts. A fresh session proves that both files load from ~/robinhood-guarded-agent.

  • Switch back to Terminal in ~/robinhood-guarded-agent.
  • Start a fresh Claude Code session by running this command:
claude

Why start a fresh session?

A fresh session reloads the project memory file. It also applies the shared permission settings before any tool call can occur.

  • Enter /context inside Claude Code.
  • Inspect the Memory files section for the project-root CLAUDE.md.

You should see CLAUDE.md listed as a loaded memory file. This confirms the trading policy is active in the new session.

  • Enter /doctor inside Claude Code.

You should see no settings or JSON errors. Your policy now loads cleanly beside the project permission file.

Policy missing or settings invalid?

  • Confirm Claude Code started from ~/robinhood-guarded-agent.
  • Compare both files with the full-code checks above.
  • Restart Claude Code after saving any correction.

Get help with diagnosing the project configuration.

Inspect the enforced permission

The Ask list is the independent execution boundary for the live placement tool. It requires your decision even when the model has already seen the confirmation phrase.

Before you check, where do you expect the equity placement tool to appear?

  • Enter /permissions inside Claude Code.
  • Find mcp__robinhood-trading__place_equity_order under Ask.

You should see the placement tool under Ask. Every future equity placement attempt now requires a separate Claude Code permission prompt.

What do the three checks prove?

  • The /context result proves the project trading policy is loaded.
  • The /permissions result proves equity placement requires your approval.
  • The /doctor result proves the project settings contain no detected configuration problem.

That is the hard safety boundary in place: every future placement attempt now reaches you before the tool runs.

Your policy is loaded. Your placement gate is enforced. Next, you can run the complete workflow with both human checks protecting the live order.

Submit and Audit the Live Order

The project policy now makes Claude stop for your exact confirmation phrase. The Ask rule in Claude Code independently intercepts the live placement tool.

This final run applies those controls to one real Robinhood Agentic Trading order. It also preserves the evidence needed to audit the outcome.

Real principal is at risk in this step. The two approval pauses give you room to inspect every detail before anything is submitted.

In this step, get ready to:
  • Prepare the final live-order preview under the loaded safety policy.
  • Approve one matching order through both human gates.
  • Reconcile the submitted status with Robinhood Activity.
Run the guarded workflow during regular market hours

During regular market hours, a dollar-based buy follows the regular-hours market-order path. The final execution price can differ from the quoted price.

  • Continue only if regular market hours are open.

Before you send the request, do you expect Claude to stop after the preview or attempt the live order?

  • In your Claude Code session from earlier, prepare the guarded preview by pasting this request:
Follow CLAUDE.md exactly. For [[TICKER="your selected ticker"]], prepare a dollar-based buy of $[[AMOUNT="your chosen amount from 1 to 10"]] in my Agentic account. Check the account, tradability, and quote, then call review_equity_order. Show the final order summary and every warning, then stop. Do not call place_equity_order until I type APPROVE LIVE TRADE.

What Does This Request Do?

  • The get_accounts call confirms the Agentic account.
  • The get_portfolio call checks the available buying power.
  • The get_equity_tradability call confirms the symbol remains eligible for fractional trading.
  • The get_equity_quotes call retrieves the current quote.
  • The review_equity_order call produces the pre-trade simulation plus its warnings.

Claude should display the final preview before stopping. No placement permission should appear yet.

The first gate worked. Your order remains a simulation while you review its details.

Did Claude Try to Place the Order Early?

  • Reject any placement request that appears before you enter the confirmation phrase.
  • Confirm that the project-root CLAUDE.md remains loaded through /context.

Ask for help if Claude ignored the preview boundary: Help me diagnose why Claude attempted place_equity_order before my confirmation phrase.

Pass both human approval gates

The exact phrase confirms your intent inside the conversation. The Claude Code permission prompt enforces a separate boundary outside the model.

  • Verify that the account type is Agentic.
  • Confirm that the symbol matches your selected security.
  • Confirm that the side is a buy.
  • Confirm that the dollar amount equals your chosen value from $1 to $10.
  • Check the displayed order type.
  • Compare the quote with the final preview.
  • Review the estimated quantity if Claude returned one.
  • Read every pre-trade warning.

Approve Only a Matching Preview

The preview is your final model-level checkpoint. Every displayed field must match the decision you made.

  • Stop if any field differs from your decision.
  • Leave the order unsubmitted when a warning changes your decision.

Before you type the phrase, which independent control do you expect to intercept the placement call next?

  • Type APPROVE LIVE TRADE in Claude Code only when every preview detail matches your decision.

Claude now attempts place_equity_order. Claude Code presents the separate permission prompt enforced by your Ask rule.

  • Inspect the tool input shown in the permission prompt.
  • Compare the tool input with the approved preview.
  • Approve only this placement call.

One matching order is submitted without an automatic retry. That is the hard part done: one live call passed through both human gates.

No Separate Permission Prompt?

  • Leave the placement call unapproved if Claude Code does not show a separate prompt.
  • Return to /permissions.
  • Confirm that mcp__robinhood-trading__place_equity_order remains under Ask.

Get help restoring the gate: Help me restore the Claude Code Ask rule before any live order call.

Reconcile the submitted order

Independent reconciliation compares the agent's report with the broker record. This catches a missing submission or an unexpected status without creating a duplicate.

Before you request the latest status, do you expect Claude's result to match the entry in Robinhood Activity?

  • Retrieve the submitted order status by pasting this request into Claude Code:
Call get_equity_orders and report the latest matching order and current status without retrying, canceling, replacing, or submitting another order.

What Does This Check Do?

  • The get_equity_orders call reads the order history from Robinhood.
  • The matching check isolates the order you just submitted.
  • The restrictions prevent retries or changes during reconciliation.

Claude should report the latest matching order plus its current status. The request should not trigger another placement permission.

  • Open the Robinhood app.
  • Select your Agentic account.
  • Open Activity.
  • Find the entry matching your selected symbol.
  • Compare its dollar amount with the submitted amount.
  • Compare its current status with Claude's report.
  • Keep the current Claude Code session as your audit trail.

Both surfaces should show the same submitted order. Its amount should stay within your selected $1 to $10 range.

Record the Current Status

A pending or rejected status still provides a broker outcome to record. A second submission could create an unwanted duplicate.

  • Record the current status exactly as shown.
  • Leave the existing order unchanged.

That closes the loop. Your Claude session now records the preview plus both approvals.

Robinhood Activity provides the independent broker record for the same outcome.

Secret mission

Run an MCP Revocation Drill

Your workflow can place a trade only after two human checks. Now revoke Robinhood authorization to prove the data path closes. Restore the guarded connection without touching a live order tool.

Clean Up Your Resources

Clean Up Your Resources

Your local project files have no direct ongoing cost. Neither does the MCP connection.

Your submitted order or resulting position still exposes up to $10 of principal to market risk.

Cost warning

A submitted order or resulting position remains in Robinhood after local cleanup.

  • Check Activity in your Robinhood Agentic account for any pending order.
  • Manage any resulting position separately in Robinhood.

Other fees may apply to the fractional-share trade.

Resources you used:

  • The local ~/robinhood-guarded-agent/CLAUDE.md policy file.
  • The local ~/robinhood-guarded-agent/.claude/settings.json permission file.
  • The local robinhood-trading configuration in Claude Code.
  • The OAuth authorization stored for the remote server.

Keep everything running

No action needed. Choose this if you want to continue with manually supervised trading experiments.

  • Keep CLAUDE.md unchanged.
  • Keep .claude/settings.json unchanged.
  • Retain robinhood-trading only for manually supervised experiments.
  • Complete a separate risk review before adding unattended or recurring instructions.

Pause - I'll come back to this later

Pause the MCP connection while keeping your local policy files available for later.

  • Return to /mcp in the Claude Code session from earlier.
  • Select robinhood-trading.
  • Toggle the server off.
  • Check Activity in your Robinhood Agentic account for any pending order.

Delete - I don't want to use this again

Deletion removes the local workspace plus its MCP access. Robinhood keeps the submitted order history plus any resulting position.

  • Return to /mcp in the Claude Code session from earlier.
  • Select robinhood-trading.
  • Choose Clear authentication to revoke the server authorization.
  • Exit Claude Code.
  • Remove the local robinhood-trading MCP configuration by running this command:
claude mcp remove robinhood-trading

What does this command remove?

Claude Code removes the local server configuration for robinhood-trading.

Removal also deletes the stored OAuth tokens plus the client registration for this remote server.

  • Confirm Terminal returns to its prompt without an error.

MCP configuration still present?

  • Use the exact configured server name robinhood-trading.
  • Return to the Terminal environment where Claude Code worked earlier.
  • Ask for help removing the MCP configuration.
  • Remove ~/robinhood-guarded-agent by running this command:
rm -rf ~/robinhood-guarded-agent

What does this command remove?

This command permanently deletes CLAUDE.md from the local workspace.

It also deletes .claude/settings.json from the same workspace.

  • Confirm Terminal returns to its prompt without an error.

Project folder still present?

  • Check that the command targets ~/robinhood-guarded-agent exactly.
  • Ask for help deleting the local workspace.

You have closed the local Robinhood AI access path.

Nice Work!

Nice Work!

Strong finish! You built a human-gated trading workflow in Claude Code. The official Robinhood Trading MCP now supports a supervised path from account checks to a reconciled live order.

You've learned how to:

  • Use read-only account checks to confirm buying power. Verify fractional eligibility for your selected symbol. Retrieve its live quote without placing a trade.
  • Run a pre-trade simulation for a fractional order from $1 to $10. Prove the preview created no live order.
  • Create a persistent trading policy in CLAUDE.md. Add an enforced Ask rule for place_equity_order. Pass both human gates. Reconcile the submitted order with Robinhood Activity.
  • Complete the Secret Mission revocation drill. Prove Robinhood account data becomes unavailable after access revocation. Restore the guarded connection without invoking a trading tool.

Ready to quiz yourself?