A2A Protocol overview
These crates build on each other:
protocol_transport_core— universal transport foundation (JSON-RPC 2.0, streaming, headers, routing). Protocol-agnostic; used by A2A, MCP, and REST.a2a_protocol_core— pure A2A domain layer: AgentCard, Task, Message, Artifact, security schemes, method params, discovery, and in-memory task storage.a2a_http_client— A2A HTTP client with target-adaptive implementations (Spin SDK on WASM, Reqwest on native). Activation-aware retries for KEDA cold starts.a2a_http_server— A2A HTTP server with target-adaptive implementations (Spin SDK on WASM, Axum on native). JSON-RPC dispatch and SSE streaming.a2a_app_ports— clean-architecture application ports (traits) that decouple the HTTP server from the SDK/application layer.a2a_rpc_macros— [Experimental] proc-macros (#[a2a_rpc],#[extension],generate_a2a_commands!) for compile-time JSON-RPC command registration.
Feature flags and public exports are defined in each crate’s Cargo.toml and src/lib.rs. Use those as the source of truth; this site summarizes them and does not replace cargo doc.
protocol_transport_core Universal transport foundation — JSON-RPC 2.0, streaming, header forwarding, protocol routing.
a2a_protocol_core Pure A2A domain layer — AgentCard, Task, Message, Artifact, security, discovery.
a2a_http_client Target-adaptive A2A HTTP client (Spin SDK on WASM, Reqwest on native).
a2a_http_server Target-adaptive A2A HTTP server (Spin SDK on WASM, Axum on native).
a2a_app_ports Clean-architecture application ports (traits) for A2A server delegation.
a2a_rpc_macros [Experimental] Proc-macros for compile-time JSON-RPC command registration.
See also: A2A Capabilities for supported A2A v1.0 methods and capabilities, A2A Protocol concept for protocol background, and the A2A Serving guide for step-by-step setup.
Full API reference: coming soon via published rustdoc (see Getting started for local cargo doc).