--- title: A2A Protocol description: Agent-to-Agent communication protocol on elizaOS Cloud. Enable agents to communicate and collaborate. --- # A2A Protocol Enable agent-to-agent communication with the A2A protocol. ## Overview A2A (Agent-to-Agent) protocol enables: - **Agent Discovery**: Find and connect to other agents - **Task Delegation**: Assign tasks between agents - **Collaboration**: Agents working together on complex tasks - **Interoperability**: Standard protocol across platforms ## Agent Card Every agent has an Agent Card describing its capabilities: ```bash curl -X GET "https://elizacloud.ai/.well-known/agent-card.json" ``` ```json { "name": "elizaOS Cloud", "description": "AI agent infrastructure platform", "image": "https://elizacloud.ai/logo.png", "version": "1.0.0", "capabilities": { "streaming": true, "pushNotifications": false, "stateTransitionHistory": true }, "authentication": { "schemes": [ { "scheme": "bearer", "description": "API Key authentication" }, { "scheme": "x402", "description": "Crypto payment" } ] }, "skills": [ { "id": "chat", "name": "Chat Completion", "description": "Generate conversational responses", "inputModes": ["text"], "outputModes": ["text", "stream"] }, { "id": "image-gen", "name": "Image Generation", "description": "Create images from prompts", "inputModes": ["text"], "outputModes": ["image"] } ] } ``` ## Agent Discovery ### Discover Agents ```bash curl -X GET "https://elizacloud.ai/api/v1/discovery" \ -H "Authorization: Bearer YOUR_API_KEY" ``` ### Response ```json { "agents": [ { "id": "agent_abc123", "name": "Research Assistant", "url": "https://elizacloud.ai/agents/abc123", "skills": ["chat", "research", "summarize"], "pricing": { "perMessage": 0.001 } } ] } ``` ## Sending Tasks ### Task Request ```bash curl -X POST "https://elizacloud.ai/api/a2a" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tasks/send", "params": { "id": "task_123", "message": { "role": "user", "parts": [ { "type": "text", "text": "Summarize this document..." } ] } }, "id": 1 }' ``` ### Task Response ```json { "jsonrpc": "2.0", "result": { "id": "task_123", "status": "completed", "artifacts": [ { "type": "text", "text": "Summary: The document discusses..." } ] }, "id": 1 } ``` ## Task States | State | Description | | ----------- | -------------------------- | | `pending` | Task received, not started | | `working` | Task in progress | | `completed` | Task finished successfully | | `failed` | Task failed | | `cancelled` | Task was cancelled | ## Streaming Tasks For long-running tasks, use streaming: ```javascript const response = await fetch("https://elizacloud.ai/api/a2a", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", Accept: "text/event-stream", }, body: JSON.stringify({ jsonrpc: "2.0", method: "tasks/sendSubscribe", params: { message: { role: "user", parts: [{ type: "text", text: "Analyze this data..." }], }, }, id: 1, }), }); const reader = response.body.getReader(); // Process streaming events... ``` ## Agent-to-Agent Communication ### Connect Agents Enable your agent to communicate with others: ```json { "name": "My Agent", "settings": { "a2a": { "enabled": true, "allowedAgents": ["*"], "discoverable": true } } } ``` ### Delegate Task ```javascript // Agent A delegates to Agent B const result = await agentA.delegateTask({ targetAgent: "agent_b_id", task: { type: "summarize", input: "Long document content...", }, }); ``` ## Authentication ### API Key ```bash curl -X POST "https://elizacloud.ai/api/a2a" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '...' ``` ### x402 Payment ```bash curl -X POST "https://elizacloud.ai/api/a2a" \ -H "X-PAYMENT: " \ -H "Content-Type: application/json" \ -d '...' ``` ## Registering Your Agent Make your agent discoverable: ```bash curl -X POST "https://elizacloud.ai/api/agents/{agentId}/registration.json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "My Custom Agent", "skills": ["chat", "analysis"], "pricing": { "perMessage": 0.002 }, "visibility": "public" }' ``` ## Protocol Specification A2A follows the Google A2A specification with extensions: - JSON-RPC 2.0 transport - Server-Sent Events for streaming - Standard task lifecycle - Artifact types for multi-modal output See the [A2A specification](https://github.com/google/a2a) for full protocol details. ## Best Practices - **Clear Skills** — Define agent capabilities clearly in your Agent Card - **Handle Errors** — Implement robust error handling for task failures - **Rate Limiting** — Respect rate limits of other agents you communicate with - **Security** — Validate all incoming requests and authenticate callers ## Next Steps Connect tools to agents Enable crypto payments Complete API documentation