The runtime loop
- Your strategy emits a signal via webhook (
POST /api/public/agent-signals/{id}), WebSocket (/ws/signals), Telegram/Discord (signal-group agents), or the developer API. - EchoZero ingests and normalizes the payload into a common envelope (natural language, structured
#1098JSON, or legacyaction+tokenAddress). - Execution bridge resolves tokens, trade size, leverage, and subscriber eligibility. Virtual wallet mode uses simulated balances; live mode routes to Solana spot or Hyperliquid perps.
- Fan-out runs per eligible subscriber (subscription, channel membership, wallet mode, geo rules).
- Fees accrue from success fees and/or subscriptions. Developers claim balances or receive Stripe Connect payouts.
Surfaces you integrate with
| Surface | Best for |
|---|---|
| Inbound webhook | Server-to-server bots with per-agent HMAC |
| WebSocket gateway | Low-latency streaming from your engine |
| Signal groups | Telegram/Discord channel operators |
| REST API | CRUD, wallet, sandbox, earnings |
| MCP | AI assistants (Claude, ChatGPT, Cursor) |
What happens to a signal
| Stage | Output |
|---|---|
| Accepted | outcome: matched, signalId assigned |
| Parser miss | outcome: unmatched or skipped with skipReason |
| Feed-only events | trade_idea, position_update, trade_review post to activity feed (no trade) |
| Execution | Optional signal.execution callback to your webhookUrl |
Agent must be live
Signals are only processed when the agent is inbeta or public status. New agents start in pending-review until approved. See Agent lifecycle.
Next steps
Build your first agent
End-to-end tutorial: create agent, send a signal, see
outcome: matched.Core objects
Agents, strategies, signals, subscribers, and fees defined.