Glossary · A2A concepts

Protocol binding (A2A)

The concrete transport and wire format for A2A's abstract operations. Version 1.0 defines JSON-RPC, gRPC and HTTP+JSON; custom bindings are named by URI.

A protocol binding is the concrete mapping of A2A’s abstract operations and data model onto a specific transport and wire format, and an Agent Card names it for each endpoint in the protocolBinding field.

Why bindings exist. The A2A specification defines operations such as Send Message and Get Task, and objects such as Task and Message, independently of any transport. Bindings then say how those travel on the wire. Version 1.0 defines three standard bindings:

protocolBinding Transport Streaming
JSONRPC JSON-RPC 2.0 over HTTP(S), with method names such as SendMessage Server-Sent Events
GRPC gRPC over HTTP/2 with TLS, using the A2AService in a2a.proto Server-streaming RPCs
HTTP+JSON Resource URLs and standard HTTP methods Server-Sent Events

Rules for agents with several bindings. Section 5.1 requires every binding an agent offers to expose the same operations, return semantically equivalent results, map errors consistently and accept the same authentication schemes. Clients may pick any declared binding and should be able to fall back to another. Each binding also defines how service parameters travel. JSON-RPC and HTTP+JSON send A2A-Version and A2A-Extensions as HTTP headers, and gRPC sends them as lowercase metadata keys.

Declaring bindings. Each supportedInterfaces entry pairs a URL with a binding and a protocol version, in order of preference. Illustrative:

{
  "supportedInterfaces": [
    {"url": "https://agent.example.com/a2a/v1", "protocolBinding": "JSONRPC", "protocolVersion": "1.0"},
    {"url": "https://agent.example.com/a2a/rest", "protocolBinding": "HTTP+JSON", "protocolVersion": "1.0"}
  ]
}

Custom bindings. protocolBinding is an open string, so implementers can add transports such as WebSockets or MQTT. A custom binding should be named by a URI, and a breaking change needs a new URI. Section 12 requires it to support every core operation, keep the data model, and document how it carries service parameters, errors, streaming and credentials.

Neighbouring terms. An extension adds data or behaviour on top of a binding. A binding changes the transport itself.

Sources

  1. A2A Protocol Specification, section 5: Protocol Binding Requirements and Interoperability (accessed )
  2. A2A Protocol Specification, section 12: Custom Binding Guidelines (accessed )
  3. A2A protocol definition (a2a.proto): AgentInterface (accessed )
  4. A2A documentation: Custom Protocol Bindings (accessed )