Persistent Project Context for xAI Grok

io.github.Wolfe-JamPublished by GitHub account Wolfe-Jamv1.8.1Updated Oct 24, 2026

Persistent project context for xAI Grok. IANA-registered .faf format.

The publisher's own server: Surface

VerifiedStreamable HTTPWeb executableKnowledge & MemoryDeveloper ToolsAI & ML

Overview

AI-generated overview

Gives an assistant persistent project context from .faf files: scores, validates, searches and re-grounds project DNA across sessions.

What you can do
  • Score, validate and tier .faf YAML context, and estimate token counts
  • Read, search and list context souls, tags and full-text matches
  • Re-ground long sessions: refresh .faf, memory and blended refresh with drift reports
  • Generate a .faf from a public GitHub repository without cloning it
  • Query a durable .fafm memory model and run advisory drift/contradiction recommendations
  • Create, sync and read/write project files on the local stdio path
When to use it
Useful when working repeatedly on the same project with Grok or another MCP client and you want the assistant to start each session already knowing the stack, goals and commands instead of re-explaining them. Also fits checking how AI-readable a project's context file is.
Requirements
Either the hosted endpoint URL (no install) or a local process via npm/Homebrew/bunx. The hosted path serves only WASM-pure tools; filesystem tools such as faf_init, faf_sync, refresh_fafm and refresh_blend need the local stdio path. Semantic collection search requires the XAI_API_KEY secret.
Before you install
Local tools can write and rewrite files in your project, including CLAUDE.md, AGENTS.md, .cursorrules and GEMINI.md, and append receipt JSON files at the repo root. faf_collections_search needs XAI_API_KEY, which is sent to the hosted service. Receipt logs have no multi-process file lock, so concurrent agents can race. Business-card output is self-declared and not verified.

Installation

In SourceWeft

  1. Open Persistent Project Context for xAI Grok in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.Wolfe-Jam%2Fgrok-faf-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "persistent-project-context-for-xai-grok": {
      "type": "http",
      "url": "https://mcpaas.live/grok/mcp/v1"
    }
  }
}

README

grok-faf-mcp v2.1 — The New Era Edition

[FAF]

Grok asked for MCP on a URL. This is it.

Persistent Project Context for xAI Grok.

URL-based • Zero config • Just works

[IANA: vnd.faf+yaml] [DOI: Context paper] [DOI: Agents paper]

Home: faf.one/grok Live demo: grok.faf.one

⭐ Star it on GitHub: bookmarks it for you, helps other devs find it too.

[grok-faf-mcp hero]

[Stars] [Downloads] [Business card · Get yours →]

FAF defines. AGENTS.md instructs. AI codes.

v2.2.2 — The Instructions Edition

Cleanup: removes leftover two-way sync wording. Two-way sync was dropped by design long ago: project.faf pushes structured data out, and prose doesn't come back. The last strings that still said two-way now match. faf_bi_sync still works as the old name for faf_sync.

v2.2.1

One rule for project questions: read project.faf first. New line 2 of the server instructions: "For questions about the project (stack, goal, commands), read project.faf first and answer from it." The same rule in faf-mcp moved Grok Build from 0 of 3 to 2 of 3 runs reading project.faf first, on a repo where project.faf and package.json disagree (3-run pilot). 715 characters.

v2.2.0

grok-faf-mcp now tells Grok how its tools fit together, context and memory: server instructions in initialize (615 characters), plus faf-cli 8.5.0, which knows a skills repo when it sees one.

  • Server instructions. When Grok connects, the server says how its tools fit together: context (project.faf) and memory (.fafm), which tool checks, creates or syncs, the refresh tools, and that rag_query needs an xAI Collection.
  • faf-cli 8.5.0 inside. faf_init detects a skills repo: SKILL.md folders make it skills (10 slots), and a Claude Code plugin manifest makes it skills-plugin (14).
  • Advisories cleared in the MCP SDK, proxy-addr and hono.

Earlier: v2.1.0 — The New Era Edition — glass-box tools: every tool says if it reads, writes or rewrites; its own FAF passport at grok.faf.one; a new look.

Earlier: v2.0.0 — The Always33 Edition — one engine, one number: every score is faf-cli 8's always-33 kernel, on npm and on mcpaas.live. ZEPH is opt-in until the Zig engine is always-33.

☆ Bookmark grok.faf.one for later.

First v0.2-conformant reader of the FAF Context Ingestion Contract — the open standard co-authored in public with @grok.


Install — one line

Add to ~/.grok/config.toml:

toml
[mcp_servers.grok-faf-mcp]url = "https://mcpaas.live/grok/mcp/v1"

Restart Grok TUI (or /mcps r) to refresh. The hosted endpoint scores always-33 — the same number as the npm package. Tools: faf_score, faf_validate, faf_get_tier, faf_estimate_tokens, faf_analyze (plus soul/memory ops).

Smithery: wolfe-jam/grok-faf-mcp — gateway at https://grok-faf-mcp--wolfe-jam.run.tools

Homebrew (local stdio):

bash
brew install wolfe-jam/faf/grok-faf-mcp

Hosted on Cloudflare Workers — sub-ms cold start, no subprocess, edge-served. Scores and validates with the faf-kernel WASM (always-33, the same engine as the npm package) since mcpaas-cf 1.8.1; a Zig WASM engine handles token estimates and tier. Externally validated by Grok S1 + S2 on 2026-05-27.

Verify the live contract:

bash
curl https://mcpaas.live/grok/mcp/v1/info

Returns endpoint, protocol versions, engine details, tool list, and the architecture line: .faf=vROM | AI-in-session=RAM.

Sample corpus: xai-faf-proof/pilot — 10 records ready to score.


The 6 Ws - Quick Reference

Every README should answer these questions. Here's ours:

QuestionAnswer
WHO is this for?Grok/xAI developers and teams building with URL-based MCP
WHAT is it?Persistent project context for xAI Grok — URL-first deployment, IANA-registered .faf format
WHERE does it work?Cloudflare Workers (mcpaas.live/grok/mcp/v1) • Any MCP client supporting native url= config • Self-deploy to your own CF/Vercel worker
WHY do you need it?Zero-config MCP on a URL — Grok asked for it, we built it first
WHEN should you use it?Grok integration, xAI projects, any url-based MCP client
HOW does it work?url = "https://mcpaas.live/grok/mcp/v1" — context tools served from edge via MCPaaS (sub-ms cold start, no subprocess)

For AI: Read the detailed sections below for full context. For humans: Use this pattern in YOUR README. Answer these 6 questions clearly.

For the xAI / Grok Build team

Built for Grok and shaped by direct Grok feedback.
Open for native Grok Build integration, .fafm memory layer, refresh_faf primitives, or any other context features the team needs.
Live and dogfooded at https://grok.faf.one and https://mcpaas.live/grok/mcp/v1.

Context for Grok agents: faf-cli authors what Grok agents read from real project detection — bunx faf export --agents. faf-cli's src/interop/grok.ts wires this MCP into .grok/config.toml (that file lives in the faf-cli repo, not here). See FAF-CLI for Grok & xAI agents.


The Problem

Every Grok session starts from zero. You re-explain your stack, your goals, your architecture. Every time.

.faf fixes that. One file, your project DNA, persistent across every session.

Without .faf  →  "I'm building a REST API in Rust with Axum and PostgreSQL..."With .faf     →  Grok already knows. Every session. Forever.

One Command, Done Forever

faf_auto detects your project, creates a .faf, and scores it — in one shot:

faf_auto━━━━━━━━━━━━━━━━━Score: 0% → 85% (+85) ◇ BRONZESteps:  1. Created project.faf  2. Detected stack from package.json  3. Synced CLAUDE.md
Path: /home/user/my-project

What it produces:

yaml
# project.faf — your project, machine-readablefaf_version: "3.3"project:  name: my-api  goal: REST API for user management  main_language: TypeScriptstack:  backend: Express  database: PostgreSQL  testing: Jest  runtime: Node.jshuman_context:  who: Backend developers  what: User CRUD with auth  why: Replace legacy PHP service

Every AI agent reads this once and knows exactly what you're building.


⚡ What You Get

URL:     https://mcpaas.live/grok/mcp/v1Format:  IANA-registered .faf (application/vnd.faf+yaml)Tools:   12 core by default (bunx) — re-grounding (refresh_faf/fafm/blend), LAZY-RAG, orchestration substrate, FAF essentials · extended utilities via FAF_TOOLS=all · 19 hosted (WASM-pure, served by mcpaas-cf) on the URLEngine:  faf-cli 8 — faf-scoring-kernel 3.0.0 (Rust → WASM, always-33)Speed:   0.5ms average (was 19ms — 3,800% faster with Mk4)Tests: WJTTC parity (heavy local ↔ light hosted) + full suites. Runner: sh scripts/run-tests.sh (bun + flake retry)Status:  FAST⚡️AF

MCP on a URL. Point your Grok integration at the URL. That's it.


Scoring: From Blind to Optimized

TierScoreWhat it means
🏆 TROPHY100%Gold Code — AI is optimized
★ GOLD99%+Near-perfect context
◆ SILVER95%+Excellent
◇ BRONZE85%+Strong baseline
● GREEN70%+Solid foundation
● YELLOW55%+AI flipping coins
○ RED<55%AI working blind
♡ WHITE0%Start — good luck

At 55%, Grok guesses half the time. At 100%, Grok knows your project.


Two Ways to Deploy

1. Hosted (zero install — recommended)

Point your MCP client at the production URL — edge-served on Cloudflare Workers, no subprocess, sub-ms cold start. WASM-pure tools only on this path (scoring, validation, refresh_faf).

json
{  "mcpServers": {    "grok-faf": {      "url": "https://mcpaas.live/grok/mcp/v1"    }  }}

2. Local (stdio — for FS-touching workflows)

Use the local stdio path when you need filesystem access (faf_init, faf_sync, file-mutating tools):

bash
brew install wolfe-jam/faf/grok-faf-mcp   # macOS tap# orbunx grok-faf-mcp

Or via MCP config:

json
{  "mcpServers": {    "grok-faf": {      "command": "bunx",      "args": ["grok-faf-mcp"]    }  }}

MCP Tools

Create & Detect

ToolPurpose
faf_initCreate project.faf from your project
faf_autoAuto-detect stack and populate context
faf_scoreAI-readiness score (0-100%) with breakdown
faf_statusCheck current AI-readability
refresh_fafRe-ground on the live .faf — re-read + re-score, report drift, return fresh DNA (drift → refresh → re-grounded). Requested by Grok.

Drift & Orchestration (1.5 — the prestige release)

ToolPurpose
refresh_fafmRe-ground on the live .fafm memory layer for one or more souls. Returns a stamped delta (added/updated facts) by default; verbatim: true for full content. Read-only · always stamped. Sister to refresh_faf for the RAM/memory layer in the vROM/RAM model. Built for Grok, by request.
refresh_blendThe baked-in two-intensity refresh (Cmd+R / Cmd+Shift+R analog). mode: "blend" (default) fires refresh_faf (light) + refresh_fafm (delta); mode: "nuke" fires both at hard intensity. Blend is BAKED IN, NOT a dial — both layers always fire; mode only affects fafm intensity.
faf_orchestrate_recommendationThe heavy orchestrator. Reads current substrate state, composes the full 1.5 library substrate (drift detection · CheckID · repeat-offender · take-a-hint · refresh history), returns a structured Recommendation with recommend, severity, summary, reason, and a rich hints object including effective_policy (the tier in force). Advisory only — never auto-fires (subordinate-not-daemon). Writes a recommendation receipt on every call (no silent decisions). Spec source: Grok-1 FAF-DRIFT-DETECTION-SPEC §9.5 + Appendix C.
faf_get_orchestration_policyPure introspection of the effective policy WITHOUT running the orchestrator. Returns { tier, thresholds, source, overrides_applied } — what aggressiveness tier the next orchestration call would use, and whether it came from defaults or a .faf:orchestration: override. No drift detection · no signals · no receipt write — the quietest tool in the 1.5 substrate. Useful for debugging unexpected orchestrator behavior, pre-flight checks before bulk operations, and override-took-effect verification.

Sync & Persist

ToolPurpose
faf_syncWrite CLAUDE.md, AGENTS.md, .cursorrules and GEMINI.md from project.faf. One way: it never writes project.faf. (faf_bi_sync, the old name, still works.)
faf_trustValidate .faf integrity

Read & Write

ToolPurpose
faf_readRead any file
faf_writeWrite any file
faf_listDiscover projects with .faf files

RAG & Grok-Exclusive

ToolPurpose
rag_queryRAG-powered context retrieval
rag_cache_statsRAG cache statistics
rag_cache_clearClear RAG cache
grok_go_fast_afAuto-load .faf context for Grok

Plus 34 advanced tools available with FAF_SHOW_ADVANCED=true.


Performance

Execution:    0.5ms average (97% faster than v1.1)Fastest:      3,360ns (version — nanosecond territory)Slowest:      1.3ms (score — Mk4 WASM)Improvement:  19ms → 0.5ms (3,800% faster)Engine:       faf-cli 8 (faf-scoring-kernel 3.0.0, always-33)Memory:       Zero leaksTransport:    stdio (local, bunx) · Streamable HTTP (hosted, Cloudflare Workers)

Benchmarked 10x per tool, warmed up, on local stdio execution. Hosted edge adds sub-ms cold start on top.

Orchestrator (faf_orchestrate_recommendation) characteristics: composition call — reads up to 6 files (.faf, .fafm, package.json, CHANGELOG.md, README.md, plus all 3 receipt logs), runs 2 analyzers (detectFafmDrift + checkId), evaluates the decision table, writes 1 receipt. Expected latency: tens of ms on warm cache; higher under cold-disk or very large .fafm corpora. Designed for occasional agent-initiated calls, not per-turn polling. detectFafmDrift is O(n²) in fact count (cross-fact n-gram recurrence) — comfortable up to ~hundreds of facts.


Architecture

grok-faf-mcp├── src/│   ├── server.ts             → MCP server (GrokFafMcpServer)│   ├── handlers/│   │   ├── championship-tools.ts  → 55+ tool definitions│   │   ├── tool-registry.ts       → Visibility filtering (core/advanced)│   │   └── engine-adapter.ts      → FAF engine bridge│   ├── faf-core/commands/score.ts → faf-cli scoreFafYaml (always-33)│   ├── types/                     → Canonical type substrate (1.5)│   │   ├── drift-signals.ts       → DriftSignal · Contradiction · RepeatOffender│   │   ├── refresh.ts             → RefreshMode│   │   ├── escalation.ts          → EscalationLevel│   │   ├── recommendation.ts      → RecommendationAction│   │   └── receipts.ts            → ReceiptMetadata│   ├── detection/fafm-drift.ts    → detectFafmDrift() — repetition-rate gauge│   ├── integrity/check-id.ts      → checkId() — cross-stamp contradiction check│   ├── orchestrator/│   │   ├── repeat-offender.ts     → RepeatOffenderTracker│   │   ├── take-a-hint.ts         → evaluateTakeAHint() — escalation ladder│   │   ├── refresh-blend.ts       → runRefreshBlend()│   │   └── recommendation.ts      → analyzeAndRecommend() + orchestrate()│   └── telemetry/│       ├── refresh-receipts.ts        → RefreshReceiptsLog│       └── recommendation-receipts.ts → RecommendationReceiptsLog├── smithery.yaml             → Smithery listing config├── api/index.ts              → Vercel catch-site (legacy showcase surface; kept alive)└── vercel.json               → Vercel routing for the catch-site

Production deployment: Cloudflare Workers via mcpaas-cf (serving mcpaas.live/grok/mcp/v1). The api/index.ts + vercel.json paths above stay alive as a catch-site for legacy/bookmarked links — they are no longer the production path.

Scoring pipeline: faf-cli's scoreFafYaml → the always-33 kernel (faf-scoring-kernel, Rust → WASM) scores the file as written: 33 slots, slotignored slots drop out of the denominator. No per-type rewriting, no fallback scorer — the same number faf-cli, claude-faf-mcp and faf-mcp give.


Testing

WJTTC parity (heavy local ↔ light hosted) + full suites (green on CI):

bash
sh scripts/run-tests.sh
SuiteCoverage
desktop-native-validationCore native functions, security, performance
mcp-conformanceMCP protocol conformance — tools, transport, errors
wjttc-mcpWJTTC MCP certification
wjttc-bunWJTTC bun-migration + integrity
rag-systemRAG query, caching, context retrieval
securityInput validation + security guards
visibilityTool visibility (core/advanced filtering)

Status & known limitations (v2.2)

v2.2.0 — The Instructions Edition — server instructions in initialize (615 characters) and faf-cli 8.5.0, which detects skills repos. Scoring is unchanged from v2.0.0.

v2.1.0 — The New Era Edition — glass-box tools (every tool labelled read, write or rewrite), its own FAF passport at grok.faf.one, a new look. Scoring is unchanged from v2.0.0.

v2.0.0 — The Always33 Edition — one engine, one number: faf-cli 8's always-33 kernel on npm and on mcpaas.live. ZEPH is opt-in until the Zig engine is always-33. FafCompiler upgraded to the Always33 fafb model — parity across frontier models, Enterprise/Teams ready.

Everything below still applies; operating it honestly means surfacing what's NOT in here alongside what is.

Earlier: v1.10.0 — The No-Fluff Edition — no fluff in a project.faf. faf_enhance is gone. RAG default is grok-4.6. Fill stays on faf_auto / faf_go.

Earlier: v1.9.0 — The ZEPH Default Edition — the proven-fast Zig→WASM scoring path behind refresh_faf is now default-ON (same score, cheaper to compute; parity proven byte-identical — CI gate + 91/91 live). Kill switch USE_ZEPH=0 forces the canonical scorer. FRC tools stay opt-in behind USE_FRC.

Earlier: v1.8.0 — The Closed-Loop Edition — observability writes, token math is honest, FRC contract locked. The drift→refresh→re-ground loop can finally be measured. Earlier: v1.7.0 — The Grounded Memory Edition — ZEPH + the FRC layer over Grok Collections (faf_gate/faf_section/faf_memory), opt-in via USE_FRC/USE_ZEPH; 12-tool core unchanged. Earlier: v1.6.0 — The ZEPH Edition — the ZEPH fast path for re-grounding (refresh_faf/refresh_blend via Zig→WASM cascade.wasm, ~12µs, USE_ZEPH=1; faf-cli stays canonical, parity locked in CI).

What is fully supported:

  • 19 tools on the hosted endpoint (https://mcpaas.live/grok/mcp/v1 and client-specific routes) — scoring · validation · refresh_faf · a content-in faf_orchestrate_recommendation · the FRC trio · souls and search. The live list is at …/grok/mcp/v1/info.
  • refresh_faf and refresh_fafm as explicit, callable re-grounding primitives.
  • refresh_blend as the baked-in two-intensity refresh (Cmd+R / Cmd+Shift+R analog).
  • faf_orchestrate_recommendation — the heavy orchestrator that composes drift signals, recurrence, receipts, and take-a-hint into an advisory recommendation.
  • faf_get_orchestration_policy — pure introspection of the effective policy without running the orchestrator (no drift detection, no receipt write — the quietest tool in the substrate).
  • Full policy visibility (effective_policy) returned on every orchestration call AND surfaced standalone via faf_get_orchestration_policy.

Current limitations:

  • faf_get_orchestration_policy, refresh_fafm, refresh_blend, faf_init and faf_sync need filesystem access and run only on the local stdio path (bunx grok-faf-mcp / npx grok-faf-mcp). The hosted faf_orchestrate_recommendation takes file contents instead of reading your repo, and has no receipts or recurrence history (it reports those under partial[]).
  • Receipt storage — cwd-relative JSON, pull-discoverable. Three append-only JSON files live at the repo root with stable schemas:
    .faf-drift-index.json              ← RepeatOffenderTracker — per-slot recurrence counts.faf-refresh-receipts.json         ← RefreshReceiptsLog    — every refresh fire.faf-recommendation-receipts.json  ← RecommendationReceiptsLog — every orchestrator call
    Pull-discoverable by external tools (TAF, custom indexers, observability dashboards) — read on your own schedule, no callback/push API required. Promotion to a dedicated orphan branch (mirroring the TAF pattern) is documented but deferred per ship discipline; the cwd-relative JSON is the v1 bootstrap.
  • No multi-process file lock on the receipt logs. Within a process, the JS event loop serializes writes. Multi-agent concurrent writes can race; future task.
  • Aggressiveness tier hook — .faf:orchestration:tier reads 'conservative' (default — quietest, no noisy first-impression) · 'balanced' · 'aggressive'. active_tier always surfaced in hints.effective_policy for observability, and standalone via faf_get_orchestration_policy. The policy WRITER (faf_set_orchestration_policy) and scheduling (faf_schedule_heavy_re_ground) are not included in v1.5 — edit .faf:orchestration:tier: directly to override.
  • No ack mechanism yet for recommendation receipts. acknowledged: false by default, never auto-flipped. Take-a-hint's ladder-reset semantics fire only on explicit ack — conservative by intent. Future task: explicit ack tool OR derived-from-subsequent-refresh-receipt timing.
  • Outcome tracking ("did this recommendation actually help?") — needs a learning layer beyond 1.5 scope.

The honest split is intentional: hosted = fast, auditable, WASM-pure; local = full capability including filesystem. We will expand the hosted surface only where it can be done safely and without compromising the model.

Subordinate-not-daemon throughout. The orchestrator NEVER auto-fires the recommended tool. Agents surface the recommendation; the user (or higher agent) decides whether to act. Even severity: 'block' is advisory.

See the public verifier and curl https://mcpaas.live/grok/mcp/v1/info for the current contract.


Ecosystem

One format, every AI platform.

PackagePlatformRegistry
grok-faf-mcp (this)xAI Groknpm + Homebrew
claude-faf-mcpAnthropicnpm + MCP #2759
gemini-faf-mcpGooglePyPI
rust-faf-mcpRustcrates.io
faf-mcpCursor, IDE's, VS Codenpm
faf-cliTerminal CLIbunx, npm + Homebrew

Same project.faf. Same scoring. Same result. Different execution layer.


Voice variant — grok-faf-voice (VML)

.fafm 🐘🎙️ — the voice variant of the .faf 🐘 family.

grok-faf-voice is the reference implementation of the Voice Memory Layer (VML) — what your voice agent remembers across sessions, devices, and model switches. Companion to grok-faf-mcp:

  • grok-faf-mcp (this) — .faf Foundational Context Layer for Grok via MCP-on-a-URL.
  • grok-faf-voice — .fafm Voice Memory Layer (VML) for Grok Voice via LiveKit + xAI realtime.

Same family. Different surface. Voice swappable; memory permanent.

PyPI · GitHub · Onboarding


For the xAI / Grok Build team

This MCP server was built for Grok and continues to be shaped by direct feedback from Grok itself.

Open for deeper collaboration on:

  • Native Grok Build integration
  • .fafm memory layer
  • refresh_faf primitives inside the Grok TUI / CLI
  • Any other context or orchestration features the team needs

I ship fast, test rigorously, and dogfood everything live on https://grok.faf.one and https://mcpaas.live/grok/mcp/v1.

Happy to:

  • Open PRs
  • Run private dogfood sessions
  • Jump on a call
  • Or just ship whatever moves the needle

Real software only. Just say the word.


Contributing

PR conventions, code style, CI doctrine, MCP-tool contribution path, npm publish discipline, architecture decisions: CONTRIBUTING.md.

xAI / Grok devs welcome — TL;DR setup at the top.


For xAI / Grok Build team

Open for deeper native integration, .fafm memory layer, or Grok Build CLI collaboration.
Happy to ship PRs, dogfood, or jump on a call. Just say the word.


Citation

If you use grok-faf-mcp or the .faf / .fafa formats in research or production, please cite the format papers:

Wolfe, J. (2025). Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding. Zenodo. https://doi.org/10.5281/zenodo.18251362

Wolfe, J. (2026). Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era. Zenodo. https://doi.org/10.5281/zenodo.21951641

BibTeX

bibtex
@article{wolfe2025faf,  title     = {Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding},  author    = {Wolfe, James},  year      = {2025},  month     = {nov},  publisher = {Zenodo},  doi       = {10.5281/zenodo.18251362},  url       = {https://doi.org/10.5281/zenodo.18251362}}
@article{wolfe2026fafa,  title     = {Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era},  author    = {Wolfe, James},  year      = {2026},  month     = {aug},  publisher = {Zenodo},  doi       = {10.5281/zenodo.21951641},  url       = {https://doi.org/10.5281/zenodo.21951641}}

License

MIT — Free and open source


Built for Grok. Built for Speed. Built Right.

FAST⚡️AF • First to Ship • Zero Friction

Zero drift. Eternal sync. AI optimized. 🏆


Get the CLI

faf-cli — The original AI-Context CLI. A must-have for every builder.

bash
npx faf-cli auto

Anthropic MCP #2759 · IANA Registered: application/vnd.faf+yaml · faf.one · npm · Talk to my Agent →

Source: README.md at commit d423ff4

Tools

20

get_soul

Get Context Soul

Fetch a context soul by name. Returns structured AI context.

Parameterssoulrequired

list_souls

List Available Souls

List all available context souls.

Takes no parameters.

delta_check

Delta Doctrine Check

Determine if a topic needs FULL, DELTA, or X-DELTA soul.

Parameterstopicrequired

list_tags

List Tags

List all unique tags used in a soul, with counts.

Parameterssoulrequired

search_by_tag

Search by Tag

Find all entries in a soul with a specific tag.

Parameterstagrequiredsoulrequired

search_context

Search Context

Full-text search across souls. Returns matching lines only (token-efficient).

Parameterssoulqueryrequired

tag_intel

Tag Intel

Discover tag patterns, co-occurrence, candidates, and merge suggestions across all namepoints. Optionally suggest tags for a specific handle.

Parametershandle

generate_faf_from_github

Generate FAF from GitHub

Generate a .faf file from any public GitHub repository WITHOUT cloning. Extracts 6 Ws from README, analyzes stack from languages and package.json, and generates Championship-grade AI context. Returns .faf content, quality score, and metadata.

Parametersreporequired

faf_score

Score .faf content

Score .faf YAML content with the always-33 faf-kernel (WASM). Returns 0-100 (capped). The same score faf-cli and every FAF MCP give. Runs at the edge.

Parameterscontentrequired

faf_validate

Validate .faf content

Validate .faf YAML content: true if mission-ready (always-33 score of 100).

Parameterscontentrequired

faf_get_tier

Get tier for a score

Resolve the FAF tier for a given numeric score. Returns the tier symbol (Trophy/Gold/Silver/Bronze/etc.) per the canonical tier-table.

Parametersscorerequired

faf_estimate_tokens

Estimate tokens

Estimate token count for arbitrary content via the Zig WASM engine. Sub-millisecond, zero allocations. Useful for context-budget planning.

Parameterscontentrequired

faf_analyze

Full analysis (score + tier + validate)

One-call composite — returns score, tier-ready, valid, and engine identifier. Two WASM calls, sub-millisecond total.

Parameterscontentrequired

refresh_faf

Re-ground on .faf content (drift → refresh → re-grounded)

Re-ground on .faf content — re-score with the always-33 faf-kernel (33 slots; slotignored slots drop out), report drift vs an optional baseline score, and return a stamped re-ground. The explicit re-grounding primitive for long sessions: drift → refresh → re-grounded. Built for Grok, by request.

Parameterscontentrequiredbaselineverbatim

faf_orchestrate_recommendation

Orchestrate Context Recommendation (FAF)

Takes raw content strings (`.faf`, `.fafm`, and optionally `package.json`/`CHANGELOG.md`/`README.md`) and runs deterministic drift + contradiction signals across the FAF substrate. Returns a structured `Recommendation` (recommend, severity, reason, summary) with `hints` containing the current `effective_policy` and `partial[]` for any stateful signals unavailable on the current surface. Light-lane execution (hosted) is WASM-pure with no filesystem access. Heavy-lane execution (local via bunx/rust-faf-mcp) has full FS + persisted state. Advisory only — never auto-fires.

ParametersfaffafmreadmechangelogpackageJson

faf_gate

FRC quality gate (promote/hold)

Phase III (FRC) — pre-promotion quality gate. Scores .faf content (edge Mk4) + estimates tokens and returns a deterministic promote/hold verdict BEFORE it goes to a Grok Collection. Promote IFF score >= min_score AND tokens <= max_tokens (defaults 85/8000). Edge parity with the local gate; the hold-hint can't list empty slots at the edge.

Parameterscontentrequiredmin_scoremax_tokens

faf_section

Structure-aware retrieval

Phase III (FRC) — returns an EXACT, WHOLE .faf section by dotted path (e.g. "stack", "human_context"), structure preserved — the deterministic complement to blind chunking. Omit "section" to list every path.

Parameterscontentrequiredsection

faf_memory

Portable structured memory (.fafm)

Phase III (FRC) — query the durable .fafm model by type/tag/priority/text. Omit filters for a structured summary. .fafm is NOT scored: this SELECTS facts (provenance preserved), never grades them.

Parameterstagtypequerycontentrequiredpriority

faf_business_card

Print a business card for an agent

Print a business card for an agent from its own name, description, colour and picture. Returns the agent's .fafa (FAF Agent file) and a link that opens its card. Nothing is stored: the .fafa travels in the link. The card says "self-declared" because nothing is checked against a repo.

Parametersiconnamerequiredaccentdescription

Version history

1
  1. v1.8.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Grok integrations