Skip to main content

A2A Protocol Architecture

Overview

The A2A (Agent-to-Agent) protocol enables PraisonAI agents to communicate with other A2A-compatible systems using JSON-RPC 2.0 over HTTP.

Architecture Diagram

Data Flow: message/send

Data Flow: message/stream

Task Lifecycle

Module Structure

Quick Setup

from praisonaiagents import Agent, A2A
from fastapi import FastAPI
import uvicorn

agent = Agent(
    name="Assistant",
    instructions="You are a helpful assistant",
    tools=[search, calculate]
)

# 2 lines to expose as A2A server
a2a = A2A(agent=agent, url="http://localhost:8000/a2a")

app = FastAPI()
app.include_router(a2a.get_router())
uvicorn.run(app, port=8000)

JSON-RPC Methods

MethodDescriptionRequired Params
message/sendSend message, get responseparams.message
message/streamStream response as SSEparams.message
tasks/getGet task by IDparams.id
tasks/cancelCancel task by IDparams.id

Error Codes

CodeMeaning
-32700Parse error (invalid JSON)
-32600Invalid Request (bad jsonrpc)
-32601Method not found
-32602Invalid params
-32603Internal error
-32000Task not found