🔌 AgentBin

A2A Specification Test Bed — publicly accessible agents supporting v1.0 and v0.3 for validating A2A client implementations

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)

Multi-skill spec compliance agent with 8 skills exercising all A2A v1.0 patterns: message-only, task-lifecycle, task-failure, task-cancel, multi-turn, streaming, long-running, and data-types. Supports both JSON-RPC and HTTP+JSON (REST) bindings.

EchoAgent (/echo)

Minimal echo agent that returns your message back. Validates multi-agent hosting and provides a baseline sanity check.

SpecAgent v0.3 (/spec03)

Same SpecAgent but serves a native v0.3-format agent card with 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 /echo and /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

JSON-RPC 2.0 endpoint for EchoAgent

POST /spec

JSON-RPC 2.0 endpoint for SpecAgent

GET /echo/.well-known/agent-card.json

EchoAgent agent card

GET /spec/.well-known/agent-card.json

SpecAgent agent card

POST /spec03

JSON-RPC 2.0 endpoint for SpecAgent (v0.3 card)

GET /spec03/.well-known/agent-card.json

SpecAgent v0.3 agent card (native v0.3 format)

HTTP+JSON REST Endpoints

GET /spec/v1/card

Agent card (REST)

POST /spec/v1/message:send

Send message (synchronous)

POST /spec/v1/message:stream

Send message (streaming SSE)

GET /spec/v1/tasks/{id}

Get task by ID

GET /spec/v1/tasks

List tasks

POST /spec/v1/tasks/{id}:cancel

Cancel a task

SpecAgent Skills

Send a message starting with the skill keyword:

message-only

Stateless message response (no task created)

task-lifecycle

Full task: submitted → working → completed with artifacts

task-failure

Task that transitions to failed state

task-cancel

Long-running task that can be canceled

multi-turn

Multi-turn: input-required → follow-up → completed

streaming

Streams status updates and artifact chunks via SSE

long-running

Simulates long-running task with periodic updates

data-types

Returns text, JSON data, and file content parts