A2A Servers
Expose an agent-backed workflow as an A2A (Agent2Agent) server so external agents can discover and call it.
Coming soon
An A2A Server exposes an agent-backed workflow over the Agent2Agent (A2A) protocol so that external A2A clients — another agent, Claude, Cursor, or your own code — can discover it through an agent card and send it tasks. Where an MCP Server publishes your tools to an assistant, an A2A Server publishes a whole agent that other agents can delegate work to.
Each server gives you a secret-key URL. The agent card lives at:
GET https://<your-host>/api/automation/a2a/<secretKey>/.well-known/agent-card.jsonand the JSON-RPC endpoint (where clients send message/send and message/stream) is:
POST https://<your-host>/api/automation/a2a/<secretKey>Create an A2A server
- In the Automation workspace, open A2A Servers from the sidebar (under Deploy).
- Click New A2A Server.
- Give it a name and a description — both appear on the agent card that external clients read.
- Choose whether to require authentication (see Authentication below), and whether the server is enabled.
Each server belongs to a single environment (Development, Staging, or Production), selected with the environment switcher, so you can expose a different agent per environment. A server exposes nothing until you add workflows to it. Its agent-card URL is printed on the server's row in the list.
Expose workflows as skills
Open a server's menu and choose Manage Skills.
- Select a project and a published version.
- Select the workflows to expose. Only workflows with a New Workflow Call trigger
(
workflow/v1/newWorkflowCall) are eligible — that trigger is what lets the workflow be invoked as an agent skill. - Optionally give each one a skill name and skill description. Left blank, they fall back to the workflow's own label and description.
Each selected workflow becomes a skill on the agent card. When an external client sends a task with message/send,
the server runs the first exposed workflow — the message text is passed to it as the message input — synchronously,
and returns the workflow's output as the agent's response. Additional skills are advertised on the card but are not
individually addressable through message/send, so put the workflow you want called first.
A message/stream call is answered over Server-Sent Events with a working status event followed by a final
TaskStatusUpdateEvent. Streaming is event-level, not token-level: ByteChef runs the workflow to completion, so
the agent card advertises streaming: false while streaming clients still receive a valid SSE response.
Tasks are held in a bounded in-memory cache, not durable storage, so tasks/get and tasks/cancel reach a recent
task rather than an arbitrarily old one.
Authentication
The secret key in the URL is itself a capability — a client must know it to reach the server. On top of that:
- Require authentication on (default): the client must also present a ByteChef API key as a
Bearertoken in theAuthorizationheader, along with anX-ENVIRONMENTheader naming the environment (PRODUCTIONwhen omitted). Requests without a valid, environment-matching Automation API key are rejected. - Require authentication off: possession of the secret-key URL is sufficient; no API key is required. Use this only for low-risk agents or short-lived testing.
The secret key doubles as the tenant anchor, so a request is always scoped to the tenant that owns the server.
Call an A2A server from another ByteChef agent
An AI Agent can delegate a task to any A2A server (yours or a third party's) with the Agent Client Tool
(sendTaskToRemoteAgent) from the AI Agent Utils component: point it at the remote agent's base URL, and it resolves
the agent card, sends the task, and returns the response.
How is this guide?
Last updated on