TL;DR: faf cards projects .faf + .fafa onto A2A, MCP,
registry, and catalog — one context block, every door. Why we built it.
npx --yes faf-cli@7.8.0 cards --help npx --yes faf-cli@7.8.0 cards --checkWhat's New
Author .faf (context) and .fafa (identity, skills, endpoints). faf cards writes the host cards. Complementary — it does not replace A2A or MCP.
- A2A Agent Card —
/.well-known/agent-card.json. Extension URI ishttps://faf.one/context. - MCP Server Card — the same block under
_meta["one.faf/context"]. - Registry
server.json— same block underpublisher-provided. - AI Catalog — upserts rows. Leaves host showcase entries alone.
--door-url supplies a door when .fafa has no A2A endpoint. Authored
endpoints still win. No door and no flag: it refuses. It will not invent a door or an agent.
faf server-card still exists. It now wraps the same projector’s registry target.
Try It
npm install -g faf-cli@7.8.0 faf cards --target a2a --checkSame version on the short name: bunx faf@7.8.0
claude-faf-mcp 5.22.0 pins this floor — the A2A mapper uses faf cards instead of copying raw provenance.
Bounds
- Does: project one
fafContextBlock()onto every door you already have. - Does not: invent a door · invent an agent · replace A2A or MCP · bake a score into the card.
The Numbers
- v7.8.0 — August 18, 2026
- 1340/1340 tests
- ✪ 100% Trophy
Feedback welcome
Help guide what we build — comments and suggestions welcome.
If this saves a drifted card, a star helps the next project find it.
Star faf-cli