Handler
Handler is an open-source A2A protocol client for software engineers building, testing, and operating agentic systems. It provides an interactive TUI, a scriptable CLI with structured output, and an MCP server that lets other agents integrate with A2A services directly. Handler also supports global and repo-scoped A2A server configuration with bearer, API key, HTTP Basic, mTLS, OAuth2 client credentials, and OpenID Connect auth.
Features
- Streams replies as they arrive, in the TUI and the CLI, and can stop a running task or answer an agent that pauses for input
- Sends text, files (inline or by URL), and structured data, and shows the file and data parts agents send back
- Lists, inspects, cancels, and resubscribes to tasks, and manages push notification configs with a bundled local webhook receiver
- Speaks JSON-RPC and HTTP+JSON out of the box, gRPC with the
grpcextra, and lets the agent card pick the transport - Requests A2A extensions and fetches the extended card an agent offers to authenticated clients
- Keeps credentials on the origin you configured, never on a host an agent card happens to name
Install
Install Handler from the PyPI package as a uv tool:
uv tool install a2a-handler
Or with pipx:
pipx install a2a-handler
Or with pip:
pip install a2a-handler
Quick Start
Open the interactive terminal UI:
handler tui
Inspect an A2A server's agent card:
handler card get --url http://localhost:8000
Send a message from the CLI:
handler message send --url URL --text "hello"
Stream the reply, with a file attached:
handler message stream --url URL --text "Review this" --file ./report.pdf
List the agent's tasks:
handler task list --url URL
Open the full documentation:
handler docs
Run Without Installing
Run Handler with uvx:
uvx --from a2a-handler handler
Run Handler with pipx:
pipx run a2a-handler
Documentation
Read the documentation at https://handler.alduncanson.com.
For coding agents
The docs ship as an agent skill, regenerated on every deploy. Install it into
Claude Code, Cursor, Windsurf, or any agent that reads the SKILL.md format:
npx skills add https://handler.alduncanson.com
Or fetch it by hand from https://handler.alduncanson.com/skill.md. For live lookups, agents can also use the hosted documentation MCP server at https://handler.alduncanson.com/mcp or the page index at https://handler.alduncanson.com/llms.txt. See the agent skill guide.
Metadata
Release files for a2a-handler 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| a2a_handler-0.4.0.tar.gz | 133.9 kB | With provenance | Details for a2a_handler-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| a2a_handler-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for a2a_handler-0.4.0-py3-none-any.whl |
Total release size: 285.6 kB
Release files / a2a_handler-0.4.0.tar.gz
| Download URL | a2a_handler-0.4.0.tar.gz |
|---|---|
| Size | 133.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85db0a77b041fe7bbd41429924cf1504944885d36db2ea9c9636622180f3fefa
|
|
BLAKE2b-256 checksum How to use checksums |
661e3afc1a259921a324b43e870e5d6677335b92ff86c305714b1bd2afe2cc29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logRelease files / a2a_handler-0.4.0-py3-none-any.whl
| Download URL | a2a_handler-0.4.0-py3-none-any.whl |
|---|---|
| Size | 151.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
288c3ccc513497fa794a99b61ead443f73911d0b80c40542d63017b341b308bc
|
|
BLAKE2b-256 checksum How to use checksums |
2b99741de79b63e2f8897bed961cc35d4a7c7af7b1631da5c62a8699ca4dba21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logSecurity for a2a-handler 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for a2a_handler-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.