A2A Agent Card
LiteLLM can proxy A2A-compatible agents, exposing them to your clients through LiteLLM with virtual keys, team scoping, observability, and a unified agent card.
This page documents which A2A agent card fields LiteLLM supports today, how invocation works, and what to expect from the proxied agent card served at /a2a/{agent_id}/.well-known/agent.json.
For provider-specific setup, see:
Agent card supportโ
The fields below mirror the A2A v1.0 specification (ยง4.4 Agent Discovery Objects). A โ means the field is present in the agent card LiteLLM serves to clients; a โ means the field is not.
AgentCard (ยง4.4.1)โ
| Field | Supported |
|---|---|
name | โ |
description | โ |
supportedInterfaces | โ |
provider | โ |
version | โ |
documentationUrl | โ |
capabilities | โ |
securitySchemes | โ |
securityRequirements | โ |
defaultInputModes | โ |
defaultOutputModes | โ |
skills | โ |
signatures | โ |
iconUrl | โ |
AgentProvider (ยง4.4.2)โ
| Field | Supported |
|---|---|
url | โ |
organization | โ |
AgentCapabilities (ยง4.4.3)โ
| Field | Supported |
|---|---|
streaming | โ |
pushNotifications | โ |
extensions | โ |
extendedAgentCard | โ |
AgentExtension (ยง4.4.4)โ
| Field | Supported |
|---|---|
uri | โ |
description | โ |
required | โ |
params | โ |
AgentSkill (ยง4.4.5)โ
| Field | Supported |
|---|---|
id | โ |
name | โ |
description | โ |
tags | โ |
examples | โ |
inputModes | โ |
outputModes | โ |
securityRequirements | โ |
AgentInterface (ยง4.4.6)โ
| Field | Supported |
|---|---|
url | โ |
protocolBinding | โ |
tenant | โ |
protocolVersion | โ |
AgentCardSignature (ยง4.4.7)โ
| Field | Supported |
|---|---|
protected | โ |
signature | โ |
header | โ |
How A2A on LiteLLM worksโ
When you register an A2A agent in LiteLLM:
-
You provide a base URL (and, for some providers, an assistant identifier).
-
LiteLLM fetches the upstream agent card from the agent's
/.well-known/agent-card.json(or the provider-specific equivalent). -
You review the parsed card in the LiteLLM UI and choose which skills and fields to expose.
-
LiteLLM saves the curated card and serves it at:
GET /a2a/{agent_id}/.well-known/agent.json -
Clients invoke the agent at:
POST /a2a/{agent_id}using standard A2A JSON-RPC (
message/send,message/stream).
Supported A2A methodsโ
| Method | Supported |
|---|---|
message/send | โ |
message/stream | โ |
tasks/get | โ |
tasks/cancel | โ |
tasks/list | โ |
tasks/resubscribe | โ |
tasks/pushNotificationConfig/set | โ |
tasks/pushNotificationConfig/get | โ |
tasks/pushNotificationConfig/list | โ |
tasks/pushNotificationConfig/delete | โ |
agent/getAuthenticatedExtendedCard | โ |
Skill routingโ
Clients invoke a specific skill by including skillId in the message metadata:
{
"jsonrpc": "2.0",
"id": "req-1",
"method": "message/send",
"params": {
"message": {
"messageId": "msg-001",
"role": "user",
"parts": [{"kind": "text", "text": "..."}],
"metadata": {"skillId": "triage_ticket"}
}
}
}
LiteLLM forwards the entire message envelope, including metadata, to the upstream agent unchanged. The upstream agent is responsible for reading skillId and routing internally.
Editing the agent cardโ
You can edit supported fields from the agent detail page in the LiteLLM UI. Use the Re-sync from upstream button to pick up new skills or capabilities the upstream agent has added since registration; it shows a diff and lets you accept changes selectively.