Endpoint
The gateway is a Socket.IO v4 server, not a plain WebSocket. Connect a Socket.IO client to:mcp.echozero.app, Socket.IO path /socket.io/ (the default) and namespace /ws/signals. A raw WebSocket client pointed at wss://mcp.echozero.app/ws/signals will not connect.
Authentication
Pass your developer API key in the Socket.IO handshake:- Header:
x-api-key: ez_live_..., or - Auth payload:
{ "apiKey": "ez_live_..." }
authenticated ({ "ok": true }). Invalid or missing keys receive an error event ({ "message": "Invalid or expired API key" }) and are disconnected.
Send a signal
Emit eventsignal. Every payload needs developerAgentId (one of your agents) plus a structured signal envelope:
{ "developerAgentId", "action": "buy" | "sell", "tokenAddress", "amount" } is also accepted.
Responses
Responses are not correlated to requests (there is no request id or ack callback). Use
idempotencyKey on every signal and match on the returned signalId.
Rate limits
Connection inherits your API key rate limit tier (60/300/1000 req/min on REST; burst behavior on WebSocket is enforced server-side). UseidempotencyKey on every message.
Reconnect pattern
- Reconnect with the same API key
- Re-send unacknowledged signals with the same
idempotencyKey - Do not assume ordering across reconnects