A command-line interface for the Agent-to-Agent (A2A) protocol v0.3.
Send messages, stream responses, inspect agent cards, and manage tasks — from your terminal, against any A2A-compatible server.
pip install a2a-cliRequirements: Python 3.10+
# List all agents on a server
a2a list --agent http://localhost:8080/a2a
# Inspect an agent
a2a card --agent http://localhost:8080/a2a/my-agent
# Send a message
a2a send "What is the capital of France?" --agent http://localhost:8080/a2a/my-agent
# Stream the response live (SSE)
a2a stream "Summarize this for me" --agent http://localhost:8080/a2a/my-agent
# Check a task
a2a get <task-id> --agent http://localhost:8080/a2a/my-agent
# Cancel a running task
a2a cancel <task-id> --agent http://localhost:8080/a2a/my-agentSet A2A_AGENT so you don't repeat --agent every time:
export A2A_AGENT=http://localhost:8080/a2a/my-agent
a2a send "hello"
a2a cardList all agents exposed by an A2A server.
a2a list --agent http://localhost:8080/a2a Exposed Agents
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ URL ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ greeter │ http://localhost:8080/a2a/greeter │
│ support_agent │ http://localhost:8080/a2a/support_agent │
│ weather_reporter │ http://localhost:8080/a2a/weather_reporter│
└─────────────────────┴──────────────────────────────────────────┘
Fetch and display the agent card (/.well-known/agent-card.json).
a2a card --agent http://localhost:8080/a2a/greeter╭──────────────────────── Agent Card ────────────────────────╮
│ greeter │
│ Version: 1 │
│ URL: http://localhost:8080/a2a/greeter │
│ Description: Agent workflow for greeter │
│ │
│ Skills: │
│ • greeter Agent workflow for greeter │
╰─────────────────────────────────────────────────────────────╯
Use --json for the raw agent card JSON:
a2a card --agent http://localhost:8080/a2a/greeter --jsonSend a message and display the result.
a2a send "hello world" --agent http://localhost:8080/a2a/my-agent╭──────────────────────── A2A Task ──────────────────────────╮
│ Task ID: dcc14eac-364d-42e3-95f3-69f2c2b0f47c │
│ State: completed │
│ │
│ Output: │
│ Hello! You said: hello world │
╰─────────────────────────────────────────────────────────────╯
Options:
| Flag | Description |
|---|---|
--json |
Print raw JSON response |
--quiet, -q |
Print only the response text (great for scripting) |
--context-id |
Conversation context ID for multi-turn exchanges |
--task-id |
Continue an existing task |
# Scripting — just the output text
a2a send "hello" --agent http://localhost:8080/a2a/my-agent --quietSend a message and stream the response live via SSE.
a2a stream "Write a summary" --agent http://localhost:8080/a2a/my-agent● working
● completed
Here is the summary...
Use --json to print raw SSE events:
a2a stream "hello" --agent http://localhost:8080/a2a/my-agent --jsonFetch the current state of a task by ID.
a2a get dcc14eac-364d-42e3-95f3-69f2c2b0f47c --agent http://localhost:8080/a2a/my-agent╭──────────────────────── A2A Task ──────────────────────────╮
│ Task ID: dcc14eac-364d-42e3-95f3-69f2c2b0f47c │
│ State: completed │
│ │
│ Output: │
│ Hello! You said: hello world │
╰─────────────────────────────────────────────────────────────╯
Cancel a running task.
a2a cancel dcc14eac-364d-42e3-95f3-69f2c2b0f47c --agent http://localhost:8080/a2a/my-agentCanceled task dcc14eac-364d-42e3-95f3-69f2c2b0f47c
| Flag | Description |
|---|---|
--agent, -a |
Agent URL. Falls back to A2A_AGENT env var |
--header, -H |
Extra request header, repeatable: "Authorization: Bearer <token>" |
Implements A2A v0.3:
message/send— synchronous request/responsemessage/stream— streaming via SSEtasks/get— task status and outputtasks/cancel— cancel a running task- Agent card discovery at
/.well-known/agent-card.json
- Conductor A2A server
Apache 2.0 — conductor-oss/a2a-cli