Skip to main content
EchoZero exposes an MCP server so Claude, ChatGPT, Cursor, and other assistants can call tools, read resources, and use prompts on behalf of authenticated users.
https://mcp.echozero.app/mcp is a JSON-RPC POST endpoint, not a web page. Opening it in a browser (GET) returns an error. Configure your MCP client to send POST requests instead.

Endpoints

SurfaceURLMethod
MCP (Streamable HTTP)https://mcp.echozero.app/mcpPOST
MCP SSE streamhttps://mcp.echozero.app/mcp/sseGET (after initialize)
End sessionhttps://mcp.echozero.app/mcpDELETE
Directory metadatahttps://mcp.echozero.app/public/index.jsonGET

Authentication

Send credentials on every MCP request, including the first initialize:
  • x-api-key: <developer_api_key>, or
  • Authorization: Bearer <access_token> (API key or OAuth token)
Optional REST HMAC headers (x-signature, x-timestamp) also apply when your API key has a secret. See API keys + HMAC.

Session lifecycle

1

Initialize

POST /mcp with method: "initialize". Save the mcp-session-id response header.
2

Send initialized notification

POST /mcp with method: "notifications/initialized" and the session header.
3

Call tools / list resources

Include mcp-session-id: <session> on all subsequent requests.
4

Optional SSE stream

GET /mcp/sse with Accept: text/event-stream and the session header for server-push events.
5

End session

DELETE /mcp with the session header when done.
Sessions are bound to the credential used at initialize. Using a different API key or OAuth token with the same mcp-session-id returns 403 (JSON-RPC -32002).
Response headers may also include X-Mcp-Instance-Id for load-balancer sticky routing in multi-instance deployments.

Example initialize request

curl -sS https://mcp.echozero.app/mcp \
  -H "x-api-key: $EZ_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": { "name": "my-client", "version": "1.0.0" }
    }
  }'
Save mcp-session-id from the response headers.

Example tools/list

curl -sS https://mcp.echozero.app/mcp \
  -H "x-api-key: $EZ_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $MCP_SESSION_ID" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list"
  }'

Tools, resources, and scopes

Available MCP tools, resources, and prompts are scope-gated by the API key or OAuth token. Common scopes:
ScopeCapability
read:agents / write:agentsAgent management tools
read:wallet / write:walletWallet and balance tools
read:strategies / write:strategiesStrategy configuration
read:tradesTrade and signal history
read:tokensToken metadata
write:aiAI chat tools
Tools forward to the same REST endpoints documented in the API Reference. Errors use JSON-RPC format - see Error codes. See the full Tools Reference and Resources for the out-of-band catalog (no runtime tools/list required).

OAuth for assistant directories

For ChatGPT, Claude, Gemini, and other directory submissions:
SettingValue
MCP URLhttps://mcp.echozero.app/mcp
Authorize URLhttps://mcp.echozero.app/oauth/authorize
Token URLhttps://mcp.echozero.app/oauth/token
ScopesFrom /public/directory/{platform}/ manifests
Fetch connector metadata:
https://mcp.echozero.app/public/index.json
See the OAuth guide for the full PKCE flow.

Assistant setup (coming soon)

Coming soon: npx skills add EchoZeroApp/skills and ez login are not yet public. Use API keys or OAuth today.
# When available:
npx skills add EchoZeroApp/skills
ez login