What is a Signature Agent Card?

The Signature Agent Card is optional metadata that describes the agent behind a Web Bot Auth deployment. It answers “who is this bot, and how does it behave?”, alongside the keys that prove “is this request really from them?”.

What it carries

It is defined by the Web Bot Auth registry draft (draft-meunier-webbotauth-registry-03). Since that version the card is an OAuth Client ID Metadata Document: identity and keys use the standard OAuth client metadata fields at the top level, and the bot-specific fields sit in one web_bot_auth object. An existing Client ID Metadata Document is therefore a valid card.

At the top level:

  • client_id: the https URL the card is served at. A card retrieved through its client_id must carry it, identical to that URL.
  • Operator identity: client_name, client_uri, logo_uri, and contacts.
  • Where the keys live: a jwks_uri (https required) pointing to the JSON Web Key Set, or the keys inline as jwks, never both.

Inside web_bot_auth:

  • The expected-user-agent string, the operational trigger (fetcher or crawler), the declared purpose, and targeted-content.
  • robots.txt declarations: rfc9309-compliance (directives implemented) and rfc9309-product-token (the token the agent matches on).
  • Rate behaviour: rate-expectation and rate-control.
  • Network footprint: ips_uri (an https URL to a published IP-range list) and known-urls.
{
  "client_id": "https://example.com/bot",
  "client_name": "Example Bot",
  "contacts": ["mailto:bot-support@example.com"],
  "jwks_uri": "https://example.com/.well-known/http-message-signatures-directory",
  "web_bot_auth": {
    "trigger": "fetcher",
    "purpose": "search",
    "rfc9309-product-token": "ExampleBot",
    "rate-expectation": "avg=10rps;max=100rps"
  }
}

At least one parameter must be set for the card to count as a card. The previous version, registry-02, put every field at the top level; the checker reads both shapes.

How the checker treats it

Agent Card checks are advisory. A missing or incomplete card lowers the score slightly and raises notes, but it never changes the verdict and never caps the grade. A directory with valid keys is still VALID even with no card at all.

Where it lives

Unlike the JWKS directory, which is always at /.well-known/http-message-signatures-directory, the Signature Agent Card has no fixed well-known location. It is found through its client_id URL, which a signed request can name directly with a Signature-Agent member of type=cimd, or listed in a registry. This checker finds it from the directory’s Link header or a homepage <link> element; it does not resolve type=cimd members yet.

Not the same as an A2A or MCP agent card

Many sites publish a /.well-known/agent-card.json. That is usually an A2A (Agent2Agent) or MCP agent card, which describes an agent’s skills and interfaces for agent-to-agent use. It is a different standard with different fields (name, skills, supportedInterfaces) and no cryptographic keys. The checker recognises that shape and will not grade it as a Web Bot Auth card.