
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@epsilon-exchange/mcp
Advanced tools
MCP server for Epsilon — quotes, market data, and non-custodial limit/DCA order placement on Robinhood Chain
MCP server for Epsilon — lets AI agents (Cursor, Claude Desktop, Claude Code, or any MCP client) quote, place, and manage limit / stop-loss / DCA orders on Robinhood Chain.
Non-custodial by construction. Orders are EIP-712 messages signed locally with your wallet key; funds never leave your wallet until a keeper fills the order on-chain. The Epsilon API only ever sees the signed payload — never the key.
You need:
eps_…) — create one at developers.epsilon.exchange..cursor/mcp.json){
"mcpServers": {
"epsilon": {
"command": "npx",
"args": ["-y", "@epsilon-exchange/mcp"],
"env": {
"EPSILON_API_KEY": "eps_…",
"EPSILON_WALLET_KEY": "0x…"
}
}
}
}
{
"mcpServers": {
"epsilon": {
"command": "npx",
"args": ["-y", "@epsilon-exchange/mcp"],
"env": {
"EPSILON_API_KEY": "eps_…",
"EPSILON_WALLET_KEY": "0x…"
}
}
}
}
Omit EPSILON_WALLET_KEY for a read-only connection (quotes, order status, market stats).
| Variable | Required | Default | Purpose |
|---|---|---|---|
EPSILON_API_KEY | yes | — | developer key (eps_…) |
EPSILON_WALLET_KEY | no | — | 0x-prefixed private key; enables trading tools |
EPSILON_API_URL | no | https://api.epsilon.exchange | API origin |
EPSILON_RPC_URL | no | public Robinhood Chain RPC | chain reads + approvals |
| Tool | Wallet needed | What it does |
|---|---|---|
get_quote | no | best executable quote for a swap, with price impact and split suggestion |
get_order_status | no | order status + fills by hash |
market_stats | no | engine-wide order/volume stats |
token_info | no | token metadata (+ balance and router allowance when a wallet is set) |
wallet_info | yes | trading wallet address, ETH balance, chain |
approve_token | yes | on-chain ERC-20 approval of the Epsilon router (once per token) |
place_limit_order | yes | signed limit or stop-loss order; fills when price reaches the trigger |
place_dca_order | yes | signed DCA schedule — one signature, N timed executions |
cancel_order | yes | cancels a pending order with a maker-signed EIP-712 cancellation |
You: swap-quote 0.5 WETH → USDG, then place a limit sell at 3100
The agent calls
get_quote, shows you the numbers, checks allowance viatoken_info, runsapprove_tokenif needed, thenplace_limit_orderwithlimit_price: "3100"— and returns the order hash, trackable withget_order_statusor in the Epsilon app.
EpsilonRouter v7, chain 4663, router 0xdb41FA80016DC946cEB7B8512c3423463d3F260f (v7.1 strict-floor deploy).EPSILON_WALLET_KEY via viem.OrderCancel(bytes32 orderHash) under the same domain; only the maker can cancel.npm install
npm run build
EPSILON_API_KEY=eps_… node dist/index.js # stdio server
The Go indexer cross-verifies this package's signatures in CI (TestMCPSignedOrderFixtureVerifies); regenerate the fixture after signing changes with node scripts/gen-fixture.mjs.
FAQs
MCP server for Epsilon — quotes, market data, and non-custodial limit/DCA order placement on Robinhood Chain
We found that @epsilon-exchange/mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.