What is AgentBin?
AgentBin is a publicly accessible, unauthenticated service hosting A2A agents built with .NET that support both v1.0 and v0.3 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, TypeScript, etc.) validate their A2A SDK against a live .NET-based server that exercises 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 NuGet packages and hosted on Azure Container Apps. The compatibility dashboard shows live test results from .NET, Go, Python, and Java SDK clients calling these agents.
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: