TL;DR: Machines find an agent or a server through cards — small files they read. Five seem prominent. Every spec lives in public git, so we read every version and drew them as one map, after Harry Beck's Underground diagram. See the map →
In Plain English
Five cards. Five specs, all in public git.
Eight choices. Every card picks a name field, an identity, a discovery path, a media type, an encoding, an extension point, a trust model and a versioning rule.
One centre. The centre line is what most cards share. Distance is what only one card does.
First, the one that is not a card
We followed the MCP Registry closely, so start there. server.json is the Registry
entry — how a server gets published, rather than a card a server serves at its own door. It is
not on the map, and it is the piece faf-cli writes today:
faf cards --target registry32,237 latest-version entries, counted page by page from the Registry API on 2026-09-15. Server Card Rev 1 borrowed its shape, which is where that line branches from.
Then the cards
Five. A2A Agent Card, MCP Server Card, AI Catalog, ARD and .fafa.
A2A reached Released v1.0 and joined AAIF at Growth Stage on 2026-08-27 — the one other specs
point at when they need to describe an agent and would rather not invent a card. AI Catalog is
moving fastest: MCP's own MCP Catalog is evolving into it, and the spec turned over #37 and #77 five weeks apart. ARD says Proposal. .fafa is ours.
They overlap, they disagree, and they are all in public git. So we read every version.
How to read it
Beck's 1933 diagram dropped geography and kept order. We did the same with time.
Time runs west to east. Each card is a line. Each station is a spec change, spaced by order, not by calendar. A ring marks the day two cards start or stop sharing a choice.
Two views. Protocol ↔ Envelope (the default): cards defined by one protocol sit above the centre, protocol-neutral envelopes below. Strict ↔ Loose: each card's required fields against the median.
What it shows
- A2A opens alone. The map starts with A2A v0.2.0 in May 2025. Nothing to compare it with until MCP Server Card's first draft, SEP-2127, on January 21, 2026.
- Twins. On June 25, 2026, AI Catalog merged #37 and #36. With ARD v0.9 already
on
urn:air, the two met on the centre line. - A step in. On July 20, MCP Server Card moved discovery to
/.well-known/ai-catalog.json. - The split. On August 26, ARD v0.91 took its own
ard.json, JSON-LD and a trust manifest. The twins parted. AI Catalog moved that day with no spec change of its own. Distance is relative. - Furthest out:
.fafa. The only card with an IANA-registered media type, and the only one written in YAML. Registering moved it one step further out. Different, not wrong.
How it's built
30 spec versions. 269 quotes, each checked against its line at its commit. Every station links to the spec at that commit, and every value links to the line it was quoted from.
We make .fafa. So the rules came first, and .fafa landed where the rules
put it.
The choice list is a judgement. A different list draws a different map. The quotes are public, so anyone can check it, or redraw it.
Some interesting facts
- A2A was alone for 245 days. The first card landed on 2025-05-21. There was nothing to compare it with until 2026-01-21.
- Five cards, five different extension points. Of the eight choices we track,
extensionis the only one where no two cards agree. - A2A asks for eight required fields. AI Catalog asks for three.
- AI Catalog shipped eight versions in 141 days. A2A shipped six in 479.
Three ways to name a card
A media type is the label a machine reads before it opens the file.
None of these five specs requires one. They landed on three different answers.
A2A Agent Card and ARD name no media type.
AI Catalog uses application/ai-catalog+json. MCP Server Card uses application/mcp-server-card+json. Neither is registered.
.fafa uses application/vnd.fafa+yaml, registered with IANA on
2026-06-26.
Every value above links to the line it was quoted from.
What it cost us to keep up
The map carries our own lane too, because keeping up is the hard part and we have not always managed it.
AI Catalog merged #37 on June 25. We conformed on June 26 — one day.
AI Catalog merged #77 on July 30, moving extensions to a map. We answered in three days and used an array. It stayed wrong for forty-five, and working group parsers rejected the document the whole time.
Speed is not currency on its own. The check is.
Five, out of thirty-six
Five cards are drawn. We checked thirty-one more against one test: a public spec with git history, describing an agent or a server so machines can find it. Eight pass, seven are borderline, sixteen are out — each listed with the reason, on the page.
A card that does not make the map is not a lesser card. It is a card that answers a different question.
Get your pack
Seven answers describe an agent or a server: name, short name, domain, what it does, version,
where it runs, what it can do. One command asks them, writes your agent.fafa, then
projects every card that has a place for it — correct to each spec, checked by each spec's own
validator.
npx faf-cli@latest card initPress Enter at the end and you have your AI Catalog and ARD entries. Add a project.faf (init) and cards adds the A2A, MCP and registry
cards. Rather write it by hand? Copy this agent.fafa and change the values:
version: "1.0"
agent:
name: weather-agent # short name
displayName: Weather Agent # name
id: urn:air:example.com:agent:weather-agent # domain + short name
version: 1.2.0 # version
description: Answers questions about the weather anywhere. # what it does
homepage: https://example.com
capabilities: # what it can do
- name: Get forecast
type: tool
description: A three-day forecast for a place.
endpoints: # where it runs
- protocol: a2a
transport: http
location: https://example.com/a2a
metadata:
cards:
examples: # 2-5 questions people ask it; search finds it by these
- Will it rain in Leeds tomorrow?
- What is the forecast for Tokyo this weekend? npx faf-cli@latest cardsFeedback welcome
Questions, nits, suggestions — guide the next version. Tell us what you want to see.