# A2A agent card

> A2A agent card: A2A v1.0 (Linux Foundation) is the emerging standard for agent-to-agent discovery. The fix: publish an A2A agent card.

- Source: /checks/a2a-card
- Site: AgenticWebScore
- Language: English

---
A2A v1.0 (Linux Foundation) is the emerging standard for agent-to-agent discovery. Almost no site publishes a card yet, which makes this one of the cheapest places to be early.

| Property | Value |
| --- | --- |
| Check id | `a2a-card` |
| Dimension | Protocol Discovery (25%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 2 |
| Impact | Medium |
| Maturity | Draft — A published specification that is not yet ratified. |
| Conditional | No |
| Publishing skill | `a2a-agent-card` |
| Standards | A2A v1.0 |

## What the scanner requests

- `/.well-known/agent-card.json`
- `/.well-known/agent.json`

## What is measured

The scanner GETs /.well-known/agent-card.json and the legacy alias /.well-known/agent.json and validates the JSON as an A2A v1.0 AgentCard. It passes when the card carries the required name, description, version, capabilities, defaultInputModes, defaultOutputModes and a non-empty skills array, plus at least one supportedInterfaces entry with url, protocolBinding and protocolVersion so a client knows how to call it. It partially passes when identity and skills are present but supportedInterfaces is absent or empty, leaving no transport to connect to.

## Reproduce it yourself

You do not have to take our word for any of this. Run the same measurement against your own domain:

```bash
DOMAIN=https://your-domain.example
for p in /.well-known/agent-card.json /.well-known/agent.json; do printf '%s -> ' "$p"; curl -sS "$DOMAIN$p" | jq -c '{name,version,interfaces:[.supportedInterfaces[]? | {url,protocolBinding,protocolVersion}],skills:(.skills|length)}' 2>/dev/null || echo "missing or not JSON"; done
```

## The fix

This is the artifact to ship. It is the complete change, not a description of one.

```json
{
  "name": "Example Support Agent",
  "description": "Answers product and billing questions for partner agents.",
  "version": "1.0.0",
  "supportedInterfaces": [
    { "url": "https://your-domain.example/a2a/v1", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" }
  ],
  "provider": { "organization": "Example Inc.", "url": "https://your-domain.example" },
  "capabilities": { "streaming": true, "pushNotifications": false },
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["text/plain", "application/json"],
  "skills": [
    {
      "id": "billing-question",
      "name": "Billing question",
      "description": "Answers invoice and subscription questions for one account.",
      "tags": ["billing", "support"],
      "examples": ["Why was my last invoice higher than usual?"]
    }
  ]
}
```

> A2A v1.0 lists transports in supportedInterfaces in preference order (the first entry is preferred) and the card is public by design, so keep credentials and per-tenant detail out of it.

## Standards referenced

- `A2A v1.0`

## Related checks

| Check | Tier | Impact | Same skill |
| --- | --- | --- | --- |
| `mcp-card` — MCP server card | Essential | High | — |
| `openapi` — OpenAPI definition | Essential | High | — |
| `oauth-discovery` — OAuth discovery documents | Essential | High | — |
| `api-catalog` — API catalog | Recommended | Medium | — |
| `agent-skills` — Agent Skills declaration | Recommended | Medium | — |
| `a2a-signed` — Cryptographically signed agent card | Emerging | Medium | — |
| `auth-md` — /auth.md agent authentication guide | Emerging | Medium | — |
| `webmcp` — WebMCP browser tool declaration | Emerging | Medium | — |
