Skip to content
Back to FAFA — the Voice of FAF

Card snapshot

faf.one · 2026-08-18 02:30:53 UTC · 436a46cd3cdf3200433c42121783686b07c189e06a1559c18b33a905fe0666e6

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "FAFA \u2014 the Voice of FAF",
  "description": "FAFA (rhymes with Rafa) \u2014 the Voice of FAF. A narrow-domain, citation-mandatory agent for the .faf family: it cites the spec or says \"I don't know\" \u2014 no bluffing. Reads 5 canonical FAF docs live from github.com/Wolfe-Jam/faf, plus FAFipedia (the curated, drift-flagged knowledge layer). Model is Grok (xAI).",
  "supportedInterfaces": [
    {
      "url": "https://faf-voice.vercel.app/api/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "WolfeJAM",
    "url": "https://faf.one/agent"
  },
  "version": "0.1.4",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://faf.one/context",
        "description": "FAF context provenance \u2014 the durable context block (one context, every door).",
        "required": false,
        "params": {
          "faf": "https://github.com/Wolfe-Jam/faf-agent/blob/main/project.faf",
          "mediaType": "application/vnd.faf+yaml",
          "iana": "https://www.iana.org/assignments/media-types/application/vnd.faf+yaml",
          "deterministic": true,
          "generated": "2026-05-04T18:00:00.000Z"
        }
      }
    ]
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "ask",
      "name": "ask",
      "description": "Answer a FAF question from the live corpus + FAFipedia \u2014 cite the spec or refuse. No bluffing.",
      "tags": [
        "faf",
        "rag",
        "cite-or-refuse"
      ]
    },
    {
      "id": "cite",
      "name": "cite",
      "description": "Return the exact specification citation for a FAF topic.",
      "tags": [
        "faf",
        "citation"
      ]
    },
    {
      "id": "validate_faf",
      "name": "validate_faf",
      "description": "Validate a project.faf document against the .faf specification.",
      "tags": [
        "faf",
        "validate"
      ]
    },
    {
      "id": "score_faf",
      "name": "score_faf",
      "description": "Score a project.faf's AI-readiness (0\u2013100).",
      "tags": [
        "faf",
        "score"
      ]
    },
    {
      "id": "etch_memory",
      "name": "etch_memory",
      "description": "Persist a memory across sessions (\ud83d\udc18) via mcpaas.live \u2014 the .fafm memory layer.",
      "tags": [
        "memory",
        "fafm",
        "mcpaas"
      ]
    },
    {
      "id": "recall_memory",
      "name": "recall_memory",
      "description": "Recall memories from the project soul (.fafm) via mcpaas.live.",
      "tags": [
        "memory",
        "fafm",
        "mcpaas"
      ]
    }
  ]
}