{"protocolVersions":["1.0","0.3"],"versionHeader":"A2A-Version (empty means 0.3)","defaultAgent":"https://demo.rustybin.dev/a2a","agents":[{"id":"echo","name":"Echo Agent","description":"Echoes every part it receives (text, data and files). Returns a completed task with an `echo` artifact, or a direct message reply when the text starts with `msg:` or metadata.reply is \"message\".","jsonrpc":"https://demo.rustybin.dev/a2a/echo","rest":"https://demo.rustybin.dev/a2a/echo/v1","card":"https://demo.rustybin.dev/a2a/echo/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/echo/.well-known/agent.json","requiresAuth":false},{"id":"weather","name":"Weather Agent","description":"Returns a deterministic (fake) forecast as a structured JSON data artifact plus a text summary.","jsonrpc":"https://demo.rustybin.dev/a2a/weather","rest":"https://demo.rustybin.dev/a2a/weather/v1","card":"https://demo.rustybin.dev/a2a/weather/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/weather/.well-known/agent.json","requiresAuth":false},{"id":"travel-planner","name":"Travel Planner Agent","description":"Long-running agent: SUBMITTED -> WORKING with streamed status updates and artifact chunks (append / lastChunk) -> COMPLETED. Produces text, JSON data, a file URL and inline file bytes. metadata.stepDelayMs (0-5000) tunes the pace.","jsonrpc":"https://demo.rustybin.dev/a2a/travel-planner","rest":"https://demo.rustybin.dev/a2a/travel-planner/v1","card":"https://demo.rustybin.dev/a2a/travel-planner/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/travel-planner/.well-known/agent.json","requiresAuth":false},{"id":"approval","name":"Approval Agent","description":"Multi-turn agent: answers with TASK_STATE_INPUT_REQUIRED and continues when the client sends a follow-up message with the same taskId (\"approve\" or \"deny\").","jsonrpc":"https://demo.rustybin.dev/a2a/approval","rest":"https://demo.rustybin.dev/a2a/approval/v1","card":"https://demo.rustybin.dev/a2a/approval/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/approval/.well-known/agent.json","requiresAuth":false},{"id":"flaky","name":"Flaky Agent","description":"Fails every task with TASK_STATE_FAILED (simulated upstream outage) unless the text contains \"succeed\".","jsonrpc":"https://demo.rustybin.dev/a2a/flaky","rest":"https://demo.rustybin.dev/a2a/flaky/v1","card":"https://demo.rustybin.dev/a2a/flaky/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/flaky/.well-known/agent.json","requiresAuth":false},{"id":"secure","name":"Secure Agent","description":"Requires a bearer token from the built-in OIDC provider (POST /oauth/token). Without one the task stops in TASK_STATE_AUTH_REQUIRED; resend with the same taskId and an Authorization header to continue. Has an authenticated extended card.","jsonrpc":"https://demo.rustybin.dev/a2a/secure","rest":"https://demo.rustybin.dev/a2a/secure/v1","card":"https://demo.rustybin.dev/a2a/secure/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/secure/.well-known/agent.json","requiresAuth":true},{"id":"reject","name":"Reject Agent","description":"Rejects every request with TASK_STATE_REJECTED.","jsonrpc":"https://demo.rustybin.dev/a2a/reject","rest":"https://demo.rustybin.dev/a2a/reject/v1","card":"https://demo.rustybin.dev/a2a/reject/.well-known/agent-card.json","legacyCard":"https://demo.rustybin.dev/a2a/reject/.well-known/agent.json","requiresAuth":false}],"webhookSink":"https://demo.rustybin.dev/a2a/webhook-sink/{id}"}