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.

In the UI
- Navigate to Gateways in the sidebar
- Click Create Gateway
- Select A2A as the protocol

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

- 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.jsonVia 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
| State | Description |
|---|---|
submitted | Task received and queued |
working | Task is being processed |
completed | Task finished successfully |
failed | Task execution failed |
canceled | Task was canceled |
Supported methods
| Method | Description |
|---|---|
tasks/send | Send a new task |
tasks/get | Get the status and result of a task |
tasks/cancel | Cancel a running task |