What is AgentBin?
AgentBin is a publicly accessible, unauthenticated service hosting A2A agents built with .NET and Go that support v1.0 (and v0.3 on .NET) of the A2A specification. It serves as a cross-language interoperability test bed — the purpose is to let client implementers in other languages (Go, Python, Java, JavaScript, Rust, etc.) validate their A2A SDK against live servers that exercise all interaction patterns defined in the specification.
v0.3 clients are automatically detected (requests without an A2A-Version header)
and responses are translated between v0.3 and v1.0 wire formats transparently. v1.0 clients should include the
A2A-Version: 1.0 header.
The agents are implemented using the a2a-dotnet and a2a-go SDKs, hosted on Azure Container Apps. The compatibility dashboard shows test results from 7 SDK clients calling both servers, with per-server views to compare behavior.
Agents
SpecAgent (/spec)
EchoAgent (/echo)
SpecAgent v0.3 (/spec03)
url, protocolVersion: "0.3.0", and supportsStreaming capability names.
Tests whether SDK clients can detect a v0.3 agent and fall back automatically. JSON-RPC only (v0.3 had no REST binding).Supported Bindings
- JSON-RPC — Standard A2A JSON-RPC 2.0 binding at
/echoand/spec - HTTP+JSON (REST) — RESTful binding at
/echo/v1/...and/spec/v1/...
Quick Start
Discover the agent card, then send a message:
# JSON-RPC: Get agent card
curl -H "A2A-Version: 1.0" \
https://agentbin.greensmoke-1163cb63.eastus.azurecontainerapps.io/spec/.well-known/agent-card.json
# REST: Send a message
curl -X POST -H "A2A-Version: 1.0" -H "Content-Type: application/json" \
https://agentbin.greensmoke-1163cb63.eastus.azurecontainerapps.io/spec/v1/message:send \
-d '{"message":{"messageId":"1","role":"ROLE_USER","parts":[{"text":"task-lifecycle hello"}]}}'
Base URL
https://agentbin.greensmoke-1163cb63.eastus.azurecontainerapps.io
JSON-RPC Endpoints
POST /echo
POST /spec
GET /echo/.well-known/agent-card.json
GET /spec/.well-known/agent-card.json
POST /spec03
GET /spec03/.well-known/agent-card.json
HTTP+JSON REST Endpoints
GET /spec/v1/card
POST /spec/v1/message:send
POST /spec/v1/message:stream
GET /spec/v1/tasks/{id}
GET /spec/v1/tasks
POST /spec/v1/tasks/{id}:cancel
SpecAgent Skills
Send a message starting with the skill keyword: