The essential MCP components for a project's context (AGENTS.md), cross-session memory, and identity — a base MCP on its own, or a drop-in extension for any existing MCP server. Discoverable through the Server Card _meta block and ai-catalog.json sibling entries.
Strong foundation with clear, well-documented tools addressing a coherent domain (project context, memory, identity). All 9 tools have descriptions (avg ~120 chars) and explicit input schemas with typed parameters. Naming follows verb_noun convention (read_, list_, author_, remember, recall, forget, whoami, render_). However, output schemas are not documented in the visible code, responses are inferred from descriptions rather than formally specified. Error handling is minimal; no recovery guidance or actionable error messages visible. Parameter descriptions are present but terse (avg ~50 chars), lacking format/constraint details. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles (remember=WRITE, forget=DESTRUCTIVE).
Author an AGENTS.md for this project and return the draft — BETTER from repo facts alone (via agents-md-facts: real build/test commands, entry points, toolchain conventions, nothing invented), or BEST when a project.faf exists (facts plus its structured goal/who/why as a second managed block ahead of them). Does not write a file.
Remove a fact by id — to correct or drop something stale. A missing id is reported, not an error.
List the headings in this project's AGENTS.md, so a client can pull one section instead of spending context on the whole file.
What context does this project publish (AGENTS.md, memory, identity), in what media types, and through which discovery surface. For a client connecting cold.
Return this project's AGENTS.md — the whole file, or one section by heading. The instructions a client would otherwise have to know to look for and read wholesale.
Retrieve a fact stored in a previous session by id. Exact lookup — not fuzzy or substring.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'return the draft', 'render as HTML') but formal response schemas are absent from visible code. LLMs cannot plan downstream tool calls or extract structured fields without documented output types.
No tool annotations despite clear risk profiles. 'remember' and 'forget' modify state (WRITE/DESTRUCTIVE) but lack readOnlyHint/destructiveHint annotations. Agents cannot distinguish safe-to-retry tools from irreversible operations.
Parameter descriptions lack format/constraint details. 'section' param in read_agents_md says 'case-insensitive, prefix match' but no length limits, character restrictions, or examples. 'theme' enum is declared but 'accent' (CSS hex) has no pattern or validation guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Persist a fact past the session boundary — written to a .fafm file, not held in memory. Reusing an existing id replaces that fact's text in place (no duplicate); a new id appends. Facts are written verification_status: unverified.
Render the whole card — identity, AGENTS.md, memory, discovery — as one self-contained HTML page a person can read or screenshot. AGENTS.md sections collapse by default; pass expanded:true for the full render. Also served at GET /card (?expand=all) over the HTTP transport.
This server's own identity — name, vendor, version, status, license — from its .fafa card.
No error recovery guidance. If 'recall' finds no memory for an id, the description says it returns 'no memory for <id> message' but does not guide the LLM on next steps (e.g., 'try remember() to create it' or 'list available ids'). Error responses lack actionable recovery paths.
Composition risk: 'author_agents_md' and 'read_agents_md' both operate on AGENTS.md but with different semantics (author generates a draft; read retrieves existing). No clear guidance on when to use each or how they interact. LLMs may conflate them.