What you get
- An Agent Card for each agent you opt in, listing its skills
- A JSON-RPC 2.0 endpoint with
tasks/send,tasks/getandtasks/cancel - Remote A2A agents merged into the tool-calling loop next to built-in, MCP and HTTP tools
- Skill filters to expose only part of a remote agent
How it works in EDDI
- Opt an agent in with
a2aEnabled: true, a description and the skills to advertise. - Peers fetch its card from
/a2a/agents/{agentId}/agent.jsonand callPOST /a2a/agents/{agentId}. - To consume a remote agent, list it under
a2aAgentsin an LLM task with its URL and a vault-referenced API key. - EDDI reads the remote card, turns each skill into a tool named
{agentName}_{skillId}and calls it withtasks/send.
Configuration
Taken from the EDDI documentation. Placeholders such as your-agent-id are yours to replace.
{
"a2aEnabled": true,
"description": "Customer support agent specializing in order tracking",
"a2aSkills": ["order-tracking", "refund-processing"]
}{
"systemMessage": "You are an orchestrator agent...",
"a2aAgents": [
{
"url": "https://remote-eddi.example.com/a2a/agents/support-agent",
"name": "support-agent",
"apiKey": "${vault:remote-agent-key}",
"timeoutMs": 30000,
"skillsFilter": ["order-tracking"]
}
]
}Governance
- Agent Cards are anonymous by design, so a peer can discover an agent before it holds credentials. With authentication on, listing agents and the JSON-RPC endpoint both require a token.
- A remote agent's tools pass through the same approval gates and tool-result guardrails as other tool sources, and the API key stays in the vault.
tasks/sendruns a conversation on your LLM budget, which is why it is not anonymous.
Good to know
- When authentication is on, the card advertises a token endpoint. EDDI derives a Keycloak-style path unless you set
eddi.a2a.public-token-endpoint, so set it for other identity providers.
Related integrations
Configuration and behavior on this page follow the EDDI documentation, checked on 2026-10-14. Field names and defaults can change between releases, so confirm them in the docs for your version.