Connect an AI agent
Epsilon speaks MCP natively, in two forms: a hosted read-only server for quotes and market data, and a local trading package that signs and places real orders with a wallet that never leaves your machine.
Which one do you want?
Hosted /mcp | Local @epsilon-exchange/mcp | |
|---|---|---|
| Transport | Streamable HTTP | stdio (npx) |
| Quotes, routes, market data | yes | yes |
| Place / cancel orders | no — by design | yes (limit, stop-loss, DCA) |
| Wallet key | none | local env var, never transmitted |
| Needs Node installed | no | yes (Node ≥ 20) |
Hosted server (read-only)
Point any Streamable-HTTP MCP client at the endpoint with your API key:
{
"mcpServers": {
"epsilon": {
"url": "https://api.epsilon.exchange/mcp",
"headers": { "X-API-Key": "eps_YOUR_KEY" }
}
}
}
Rate limits and usage attribution are identical to the REST API — MCP tool
calls dispatch into the same /v1 surface.
Local package (trading)
The npm package adds non-custodial execution: it signs EIP-712 orders locally
with a wallet you configure and submits only the signed payload. In Cursor
(.cursor/mcp.json) or Claude Desktop / Claude Code
(claude_desktop_config.json / .mcp.json):
{
"mcpServers": {
"epsilon": {
"command": "npx",
"args": ["-y", "@epsilon-exchange/mcp"],
"env": {
"EPSILON_API_KEY": "eps_YOUR_KEY",
"EPSILON_WALLET_KEY": "0xYOUR_TRADING_WALLET_PRIVATE_KEY"
}
}
}
}
Omit EPSILON_WALLET_KEY for a read-only connection. Then just talk
to your agent:
"quote 0.5 WETH → USDG, then place a limit sell at 3100 expiring in 3 days"
The agent quotes, checks balance and router allowance, sends the ERC-20 approval if needed, signs, submits — and hands back the order hash.
Tool list
| Tool | Hosted | Local | What it does |
|---|---|---|---|
get_quote | ✓ | ✓ | best executable quote, price impact, split suggestion |
get_route | ✓ | — | full route breakdown + feeLegs for order signing |
order_preflight | ✓ | — | is this pair/size executable as a triggered order? |
get_order_status | ✓ | ✓ | order status + fills by hash |
get_orderbook | ✓ | — | open orders on both sides of a pair |
market_stats / recent_swaps / token_volume | ✓ | ✓* | market data (*stats only in local) |
error_catalog | ✓ | — | machine-readable error codes + retry guidance |
token_info / wallet_info | — | ✓ | token metadata, balances, allowance, wallet state |
approve_token | — | ✓ | on-chain router approval (once per token) |
place_limit_order / place_dca_order | — | ✓ | sign + submit limit, stop-loss, or DCA orders |
cancel_order | — | ✓ | maker-signed cancellation of a pending order |
Safety model
- The hosted server can never trade. Order placement requires the maker's EIP-712 signature, and hosted infrastructure holds no wallet keys.
- The local package is non-custodial. The wallet key lives in your MCP config, signs in-process, and is never transmitted. Funds stay in the wallet until a keeper fills the order on-chain.
- Use a dedicated trading wallet with limited funds for agent trading — same rule as any bot key.
- The API key on submissions is attribution and rate limiting; it cannot move funds by itself.