Skip to Content
almyty docs — v1
GatewaysA2A Gateway

A2A Gateway

The Agent-to-Agent (A2A) gateway implements Google’s A2A protocol for multi-agent interoperability. Other A2A-compatible agents can discover your gateway’s capabilities via its Agent Card and send tasks using JSON-RPC.

Gateways page

In the UI

  1. Navigate to Gateways in the sidebar
  2. Click Create Gateway
  3. Select A2A as the protocol

Create Gateway dialog

  1. Enter a name, slug, and optional description
  2. Under Capabilities, toggle streaming and push notifications as needed
  3. Click Create
  4. Assign tools from the Tools tab on the gateway detail page

Gateways page — empty state

  1. Configure authentication before exposing the gateway externally

Your A2A endpoint is available at:

/a2a/{org-slug}/{gateway-slug}

The Agent Card is auto-generated at:

/a2a/{org-slug}/{gateway-slug}/.well-known/agent.json

Via the API

Create a gateway

curl -X POST /gateways \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "My A2A Agent", "type": "a2a", "endpoint": "/my-agent", "configuration": { "agentCapabilities": { "streaming": false, "pushNotifications": false } } }'

Send a task

curl -X POST /a2a/acme/my-agent \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tasks/send", "params": { "id": "task-uuid", "message": { "role": "user", "parts": [ { "type": "text", "text": "Get me the list of active users" } ] } }, "id": 1 }'

Get task status

curl -X POST /a2a/acme/my-agent \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tasks/get", "params": { "id": "task-uuid" }, "id": 2 }'

Cancel a task

curl -X POST /a2a/acme/my-agent \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tasks/cancel", "params": { "id": "task-uuid" }, "id": 3 }'

Agent Card

Every A2A gateway generates a JSON Agent Card describing its capabilities:

{ "name": "My A2A Agent", "description": "Tools exposed via A2A protocol", "url": "https://your-instance/a2a/acme/my-agent", "version": "1.0.0", "capabilities": { "streaming": false, "pushNotifications": false }, "skills": [ { "id": "get_users", "name": "Get Users", "description": "Retrieve a list of users" } ] }

Register the Agent Card URL with other agents to enable discovery.

Task lifecycle

StateDescription
submittedTask received and queued
workingTask is being processed
completedTask finished successfully
failedTask execution failed
canceledTask was canceled

Supported methods

MethodDescription
tasks/sendSend a new task
tasks/getGet the status and result of a task
tasks/cancelCancel a running task