🔌 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 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)

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