Atlas / MCP servers / nirholas / robinhood-toolkit

robinhood-toolkitCAUTION

mcp/nirholas/robinhood-toolkit

Build on Robinhood Chain and Robinhood Crypto: verified network constants, a chain SDK, a read-only MCP server, runnable examples, and 64 build prompts.

Verdict
CAUTION
Grade
D
Trust score
68 /100
Exposed tools
22 14r · 8w · 0d
Transport
stdio · streamable-http
License
NOASSERTION
Stars
7
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

robinhood-toolkit

Build on Robinhood Chain and Robinhood Crypto. Tools, runnable examples, and 64 build prompts.

Quick start · Build prompts · Examples · Networks · Deploy

Robinhood opened up to developers on two fronts: Robinhood Chain, an Arbitrum Orbit L2 that went to public mainnet on 2026-07-01 with permissionless contract deploys, and the Robinhood Crypto REST API for programmatic trading. A third front, agentic trading over MCP, currently covers equities and options with crypto support announced as rolling out.

This repository is the practical layer on top of all three: network constants you can trust, code that runs as written, and a prompt library you can hand to a coding agent to build any piece of it.

Why this exists

The official documentation tells you what the endpoints are. It does not tell you how to wire a datafeed into a candlestick chart, how to structure a strategy loop that will not liquidate you at 4am on a 24/7 venue, or how to get the same codebase onto five different hosts. That gap is what this fills.

Every fact here was verified against a live source. Network parameters were confirmed by direct RPC calls rather than copied from documentation. Anything that could not be verified is labeled UNVERIFIED inline with instructions for checking it yourself.

Network parameters

Read from source at commit 9d358a95a896OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add robinhood-chain-mcp --env ROBINHOOD_MAINNET_RPC_URL=${ROBINHOOD_MAINNET_RPC_URL} --env ROBINHOOD_TESTNET_RPC_URL=${ROBINHOOD_TESTNET_RPC_URL} -- npx -y [email protected]
03

Exposed tools (22)

14 read · 8 write · 0 destructive.

ToolRiskDescription
cancel_crypto_orderwrite
cancel_orderwriteCancel an open order.
estimate_order_costwrite
get_accountsreadList brokerage accounts.
get_balanceread
get_chain_inforead
get_order_statuswrite
get_portfolioread
get_positionsreadList current equity positions.
get_quoteread
get_token_balanceread
get_token_inforead
get_transactionread
list_ordersreadList recent orders.
list_trading_pairsread
place_crypto_orderwrite
place_equity_orderwriteSubmit an equity order.
read_contractread
review_crypto_orderwrite
review_equity_orderwriteSimulate an order and return pre-trade warnings.
search_pairsread
verify_token_addressread
04

Trust audit

CAUTIONgrade D · trust 68/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (11 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
rh-first-deploy/deploy-testnet.sh:31
echo "== deploying Beacon =="
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
rh-first-deploy/deploy-testnet.sh:32
forge create src/Beacon.sol:Beacon \
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
rh-first-deploy/deploy-testnet.sh:38
BEACON=$(jq -r .deployedTo deploy.json)
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
rh-first-deploy/deploy-testnet.sh:40
echo "BEACON=$BEACON"
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
rh-first-deploy/deploy-testnet.sh:43
CODESIZE=$(cast code "$BEACON" --rpc-url "$RH_TESTNET_RPC" | wc -c)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/toolkit-token/lib/forge-std/src/StdChains.sol:202
_setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545"));
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/rh-crypto/sign.test.mjs:27
apiKey: 'rh-api-6148effc-c0b1-486c-8940-a1d099456be6',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
prompts/20-crypto-api/01-crypto-api-auth.md:263
apiKey: 'rh-api-6148effc-c0b1-486c-8940-a1d099456be6',
LOWInventory / provenance · inv.binary · CWE-1104
site/src/rpc-console.js
rpc-console.js
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
site/.gcloudignore
.gcloudignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
site/public/.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/02-token-safety/index.mjs:167
console.log(`  ${mark}  ${token.address}`)
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/02-token-safety/index.mjs:168
console.log(`            name     ${JSON.stringify(token.name)}`)
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/02-token-safety/index.mjs:169
console.log(`            symbol   ${JSON.stringify(token.symbol)}`)
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/02-token-safety/index.mjs:170
console.log(`            decimals ${token.decimals}`)
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/02-token-safety/index.mjs:171
console.log(`            supply   ${formatToken(token.totalSupply, token.decimals)}`)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/connect/main.js:13
import { addChainParams } from '../../packages/network/src/wallet-config.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/bridge/scripts/report.mjs:23
const outPath = resolve(here, '../../../reports/bridge-tokens.json')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/rh-crypto-mcp/server.mjs:54
const DEFAULT_POLICY_PATH = fileURLToPath(new URL('../../config/agent-policy.json', import.meta.url));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
site/content/pages/charts.mjs:14
import { DEFAULT_PAIR } from '../../src/dexscreener.js'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
site/content/pages/risk.mjs:12
import { bySeverity, unverified } from '../../../packages/risk/src/assumptions.js'
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
examples/08-morpho-lending/FORK-TRANSCRIPT.md:16
Connected to fork at http://127.0.0.1:8545 (chain 4663)
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
examples/08-morpho-lending/fork-rehearse.mjs:46
const FORK_RPC = process.env.FORK_RPC || 'http://127.0.0.1:8545'
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
examples/08-morpho-lending/run-fork.sh:20
-X POST http://127.0.0.1:8545 -H 'content-type: application/json' \

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 9d358a95a896full audit observations/trust-audit/mcp-server/nirholas__robinhood-toolkit.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-109d358a95a896CAUTIOND68first audit
06

Questions

What is the robinhood-toolkit MCP server?

Build on Robinhood Chain and Robinhood Crypto: verified network constants, a chain SDK, a read-only MCP server, runnable examples, and 64 build prompts.

What tools does robinhood-toolkit expose?

22 in total: 14 read-only, 8 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is robinhood-toolkit safe to connect to an agent?

With care. The audit graded it D (68/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does robinhood-toolkit need?

It reads ALCHEMY_API_KEY, PRIVATE_KEY, RH_API_KEY, RH_DEPLOYER_KEY, RH_PRIVATE_KEY, ROBINHOOD_MAINNET_RPC_URL and ROBINHOOD_TESTNET_RPC_URL from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does robinhood-toolkit run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @robinhood-toolkit/site at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (9d358a95a896), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement