---
title: "A2A Agent Card · Sitebulb Labs"
description: "An Agent-to-Agent card describes your agent’s capabilities and endpoint so other agents can call it."
url: https://labs.sitebulb.com/docs/checks/protocol-discovery/a2a-agent-card/
---

# A2A Agent Card

An Agent-to-Agent card describes your agent’s capabilities and endpoint so other agents can call it.

- Category

  [Protocol discovery](https://labs.sitebulb.com/docs/checks/protocol-discovery)

- Standard

  - Emerging checkEmerging
  - Off by default, turn on in settings

## What it checks

The extension looks for an Agent-to-Agent (A2A) agent card at these paths, in order:

1. `/.well-known/agent-card.json`
2. `/.well-known/agent.json` (the earlier A2A path, kept as a fallback)

The first path that returns a successful, non-empty JSON response is parsed. The check is deliberately loose: it confirms the document is an agent card and says what the agent can do. That means a non-empty `name`, plus either a non-empty `skills` array or a `capabilities` field. It does not validate the rest of the A2A schema.

If neither path serves a card, the extension follows a pointer the site publishes to an agent card hosted elsewhere: an entry in its agent catalog (`/.well-known/ard.json` or `/.well-known/ai-catalog.json`), or a DNS-AID record. It never guesses a hostname, it does not follow redirects from the declared address, and it never requests an address on your local network unless the site being audited is on it too.

## Results

| Status   | When                                                                       |
| -------- | -------------------------------------------------------------------------- |
| **Pass** | A card with a `name` and either `skills` or `capabilities` was found       |
| **Pass** | A host the site declares serves an agent card                              |
| **Warn** | A card was found but is not valid JSON                                     |
| **Warn** | A card was found but has no `name`, or neither `skills` nor `capabilities` |
| **N/A**  | No agent card was found at either path                                     |

## How to fix

If you run an agent that other agents can call, publish its card at `/.well-known/agent-card.json`. Give it a name, the endpoint, and a list of skills:

```json
{
  "name": "Example support agent",
  "description": "Answers questions about orders and returns.",
  "url": "https://example.com/a2a",
  "capabilities": {},
  "skills": [
    {
      "id": "order-status",
      "name": "Order status",
      "description": "Reports the status of an order."
    }
  ]
}
```

If your card is at `/.well-known/agent.json`, it still passes, but the current path is `/.well-known/agent-card.json`.

Related: [Agent Skills](https://labs.sitebulb.com/docs/checks/protocol-discovery/agent-skills).
