{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T17:30:54.950Z","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","markdownUrl":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc.md","server":{"slug":"one-faf-claude-faf-mcp","name":"Claude FAF","registryName":"one.faf/claude-faf-mcp","description":"Persistent project context for Claude. IANA-registered .faf format.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","type":"mcpb","identifier":"https://github.com/Wolfe-Jam/claude-faf-mcp/releases/download/v7.1.0/claude-faf-mcp-7.1.0.mcpb","withdrawn":false,"url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","version":"7.1.0","transport":"stdio","scoredAt":"2026-11-05T10:17:42.825Z"},"score":{"total":61,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":61},{"date":"2026-11-04","total":61},{"date":"2026-11-03","total":61},{"date":"2026-11-02","total":61},{"date":"2026-11-01","total":61},{"date":"2026-10-31","total":61},{"date":"2026-10-30","total":61},{"date":"2026-10-29","total":61},{"date":"2026-10-28","total":61},{"date":"2026-10-27","total":61},{"date":"2026-10-26","total":61},{"date":"2026-10-25","total":61},{"date":"2026-10-24","total":60},{"date":"2026-10-23","total":60},{"date":"2026-10-22","total":60},{"date":"2026-10-21","total":59},{"date":"2026-10-20","total":59},{"date":"2026-10-19","total":58},{"date":"2026-10-18","total":58},{"date":"2026-10-17","total":57},{"date":"2026-10-16","total":57},{"date":"2026-10-15","total":56},{"date":"2026-10-14","total":56},{"date":"2026-10-13","total":55},{"date":"2026-10-12","total":55},{"date":"2026-10-10","total":54},{"date":"2026-10-09","total":53},{"date":"2026-10-04","total":51},{"date":"2026-10-03","total":51},{"date":"2026-10-02","total":50}]},"categories":[{"name":"Supply Chain Security","score":17,"verdict":"partial","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs were checked across the 112 of 112 dependencies we could resolve, so this covers what we could see, not the whole tree.","Declares code that runs automatically (postinstall) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does.","34 of 112 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.tree_partial","args":{"seen":"112","resolved":"112"}},{"code":"installscript.unreviewed","args":{"hooks":"postinstall"}},{"code":"dephealth.assessed","args":{"deps":"112","unhealthy":"34"}}]},{"name":"Provenance & Transparency","score":48,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 8 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"8"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":81,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 2633 tokens (~164/item across 16 items; 14 tools + 2 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"164","items":"16","tools":"14","tokens":"2633","resources":"2"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (64% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"64"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"14"}},{"code":"toolsafety.manipulation_clean","args":{"units":"16","judged":"16"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package."],"malware":[],"components":[{"slug":"https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","type":"mcpb","identifier":"https://github.com/Wolfe-Jam/claude-faf-mcp/releases/download/v7.1.0/claude-faf-mcp-7.1.0.mcpb","withdrawn":false,"score":61,"current":true,"url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","markdownUrl":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc.md"},{"slug":"claude-faf-mcp","type":"npm","identifier":"claude-faf-mcp","withdrawn":false,"score":84,"current":false,"url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/claude-faf-mcp","markdownUrl":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/claude-faf-mcp.md"}],"facts":[{"label":"Registry","value":"mcpb"},{"label":"Package","value":"https://github.com/Wolfe-Jam/claude-faf-mcp/releases/download/v7.1.0/claude-faf-mcp-7.1.0.mcpb"},{"label":"Version","value":"7.1.0"},{"label":"Transport","value":"stdio"},{"label":"SHA-256","value":"34752ebde8f6397f6fe35ae56105900b77aa8268172af9e972260fb41b204c62"}],"install":{"available":true,"bundleSha256":"34752ebde8f6397f6fe35ae56105900b77aa8268172af9e972260fb41b204c62"},"tools":[{"name":"faf_about","title":"About .faf","description":"Explain what the .faf format is — project context for AI, IANA-registered as application/vnd.faf+yaml — and how this server uses it. Returns a short plain-text overview with this server's version. Reads nothing and writes nothing. Use it when someone asks what FAF is.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":67},{"name":"faf_score","title":"Score .faf","description":"Score the project's .faf with faf-cli's scorer — the one score every faf tool reports: 0–100%, the tier, populated/active slots, and a faf-parity/v1 hash of the result. details: true lists every slot as populated, empty or slotignored. Reads only. Use faf_doctor for what to fix.","inputs":[{"name":"details","type":"boolean","required":false,"description":"List every slot as populated, empty or slotignored, and the tools that fill the empty ones"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[{"name":"active","type":"number","required":false,"description":"Slots active for this app_type"},{"name":"empty","type":"number","required":false,"description":"Active slots still empty"},{"name":"hasFaf","type":"boolean","required":true,"description":"Whether a readable, valid project.faf was scored"},{"name":"ignored","type":"number","required":false,"description":"Slots marked slotignored (inactive for this app_type)"},{"name":"inherited","type":"boolean","required":false,"description":"True if the score is attested from a source repo (an about: block)"},{"name":"nextTier","type":"object|null","required":false,"description":"Next tier above the current score, or null at top tier"},{"name":"parity","type":"object","required":false,"description":"faf-parity/v1 — claude-faf-mcp's own spec (no other engine computes it yet): sha256 over a canonical projection of faf-cli's score for these exact bytes. Check it yourself: sha256(projection) === par…"},{"name":"path","type":"string","required":false,"description":"Path that was scored"},{"name":"populated","type":"number","required":false,"description":"Active slots that are filled"},{"name":"score","type":"number","required":true,"description":"AI-readiness score, 0-100 (-1 only together with unknown: true)"},{"name":"slots","type":"object","required":false,"description":"Slot paths by state"},{"name":"tier","type":"string","required":true,"description":"Tier name for this score (e.g. BRONZE, TROPHY)"},{"name":"total","type":"number","required":false,"description":"Total slots"},{"name":"unknown","type":"boolean","required":false,"description":"True when the score is not known: an About repo with no about.source_score. Shown as \"unknown (—)\", never as a number."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":120},{"name":"faf_init","title":"Create project.faf","description":"Create a new project.faf for a folder: faf-cli detects its name, language and stack, and the reply gives the file path, faf-cli's starting score and the birth .faf-dna. An existing project.faf is left as it is — use faf_auto to fill its empty slots from your manifests, or faf_go for the human 6Ws. force: true replaces an existing project.faf with a fresh one, after copying the old file to a backup beside it.","inputs":[{"name":"force","type":"boolean","required":false,"description":"Replace an existing project.faf with a fresh one: every value and comment in it is replaced. The old file is copied to project.faf.bak-<time> first."},{"name":"path","type":"string","required":false,"description":"Project path or name. Smart resolution: \"my-app\" finds ~/Projects/my-app OR ~/Code/my-app. Full paths like ~/Projects/app or /Users/me/code/app work too; \".\", \"..\", \"./app\" are relative to the active…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":236},{"name":"faf_trust","title":"Trust Receipt","description":"Attest the project's .faf: faf-cli's validateFaf, faf-cli's score, and a faf-parity/v1 hash (claude-faf-mcp's own spec) of that score that anyone can check with sha256(projection) === parityHash. Returns a trust receipt whose subject is the project. An invalid .faf, or a score that is unknown, gets no receipt (isError). Reads only.","inputs":[{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[{"name":"errors","type":"array","required":false,"description":"faf-cli's validateFaf errors, when valid is false"},{"name":"hasFaf","type":"boolean","required":true,"description":"Whether a project.faf was found"},{"name":"parity","type":"object","required":false,"description":"faf-parity/v1 — claude-faf-mcp's own spec (no other engine computes it yet): sha256 over a canonical projection of faf-cli's score for these exact bytes. Check it yourself: sha256(projection) === par…"},{"name":"path","type":"string","required":false,"description":"Path that was attested"},{"name":"reason","type":"string","required":false,"description":"Why no receipt was issued"},{"name":"receipt","type":"object","required":false,"description":"The trust receipt — render-identical, self-verifying score + parity."},{"name":"score","type":"number","required":false,"description":"AI-readiness score, 0-100"},{"name":"sourceSha256","type":"string","required":false,"description":"SHA-256 of the raw .faf bytes"},{"name":"subject","type":"string","required":false,"description":"The project the receipt attests: project.name, else its folder name"},{"name":"tier","type":"string","required":false,"description":"Tier name for this score"},{"name":"valid","type":"boolean","required":true,"description":"Whether faf-cli's validateFaf accepts the .faf"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":112},{"name":"faf_setup","title":"Session Hook Setup","description":"Install the native SessionStart hook in the project settings (<project>/.claude/settings.json) — every Claude Code session in this project starts with fresh .faf context. Shows the exact settings first (preview); writes only with confirm: true, install or remove. faf changes only its own hook entry; every other key and hook stays as written. remove: true takes out only the hook whose command is exactly the faf hook command. Never writes the user settings: the home folder is refused.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Write the change to the project settings (.claude/settings.json). Without it, faf_setup only previews — install and remove alike."},{"name":"path","type":"string","required":false,"description":"Project path. Defaults to the current project context."},{"name":"remove","type":"boolean","required":false,"description":"Remove the faf SessionStart hook (and only it) from the project settings. Previews unless confirm: true."}],"outputs":[{"name":"action","type":"string","required":true,"description":"What faf_setup did"},{"name":"hookCommand","type":"string","required":false,"description":"The command the SessionStart hook runs"},{"name":"message","type":"string","required":true,"description":"Human-readable summary"},{"name":"settings","type":"object","required":false,"description":"The full settings object as written (or as it would be written in preview)"},{"name":"settingsPath","type":"string","required":true,"description":"The settings file involved"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":184},{"name":"faf_sync","title":"Sync .faf to CLAUDE.md","description":"Write project.faf into CLAUDE.md as a faf-managed block (faf-cli's render and injector), and on request into AGENTS.md (agents), .cursorrules (cursor), GEMINI.md (gemini) and .github/copilot-instructions.md (copilot) — or all of them (all) — with faf-cli's writers. Each file keeps every line outside faf's block. Returns the files written and any requested file that could not be written, with the reason (then isError). Use it after editing project.faf.","inputs":[{"name":"agents","type":"boolean","required":false,"description":"Also write AGENTS.md (OpenAI Codex and other agents)"},{"name":"all","type":"boolean","required":false,"description":"Write every format: CLAUDE.md + AGENTS.md + .cursorrules + GEMINI.md + .github/copilot-instructions.md"},{"name":"copilot","type":"boolean","required":false,"description":"Also write .github/copilot-instructions.md (GitHub Copilot)"},{"name":"cursor","type":"boolean","required":false,"description":"Also write .cursorrules (Cursor IDE)"},{"name":"gemini","type":"boolean","required":false,"description":"Also write GEMINI.md (Google Gemini CLI)"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[{"name":"fafPath","type":"string","required":false,"description":"The .faf the files were written from"},{"name":"filesFailed","type":"array","required":true,"description":"Requested files that were not written"},{"name":"filesWritten","type":"array","required":true,"description":"Files written, CLAUDE.md first"},{"name":"score","type":"string","required":false,"description":"faf-cli's score of that .faf, as text (\"85%\" or \"unknown (—)\")"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":251},{"name":"faf_context","title":"Active Project","description":"Show the active project — the folder every faf_* call without a path uses — and the .faf there; pass path to make another folder the active project (your home folder and the filesystem root are refused). detail: true also returns the .faf's text. Writes no file. Call it once at the start of a session.","inputs":[{"name":"detail","type":"boolean","required":false,"description":"Also return the text of the .faf (read with faf-cli's reader), for reading project.faf in one call"},{"name":"path","type":"string","required":false,"description":"Set active project path. If omitted, shows current context."}],"outputs":[{"name":"active","type":"string","required":true,"description":"Absolute path of the active project"},{"name":"changed","type":"boolean","required":true,"description":"True if this call set a new context, false if it only reported"},{"name":"content","type":"string","required":false,"description":"detail: true — the text of the .faf"},{"name":"filename","type":"string|null","required":false,"description":"The .faf filename, if found"},{"name":"hasFaf","type":"boolean","required":true,"description":"Whether a project.faf (or .faf) was found there or one level up"},{"name":"path","type":"string|null","required":false,"description":"The .faf file readers use (faf-cli's finder: the folder, then one level up), if found"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":124},{"name":"faf_go","title":"Guided Interview","description":"The human half of project.faf. Without answers it returns the Table-of-8 — project name, goal and the 6Ws (who, what, why, where, when, how) — each filled, seeded from the goal, or empty, with faf-cli's score and, for each slot still empty, whether it is a fact from repo (faf_auto writes it: its dry run, the one faf_formats shows) or needs an answer here. With answers (slot path → text, e.g. {\"stack.hosting\": \"<the answer>\"}) it writes them into <folder>/project.faf in place and returns the new score; a value already in a slot you answer is replaced. With no project.faf yet it runs faf_init and faf_auto first. faf_auto writes each fact from repo; a stack slot with no fact in repo is answered here.","inputs":[{"name":"answers","type":"object","required":false,"description":"Answers to apply: a slot path (e.g. \"project.goal\", \"human_context.why\", \"stack.database\") → the answer text. Any other key, or an answer that is not text, is refused and nothing is written. If provi…"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":270},{"name":"faf_auto","title":"Fill from the Repo","description":"Create <folder>/project.faf, or fill the empty slots of the one there, with faf-cli's detection over the repo's own files (package.json, Cargo.toml, pyproject.toml, go.mod…) — no hardcoded defaults. A value already there is kept. A typed None or placeholder word is an empty slot: in a tech slot the app-type uses, only a repo fact replaces it (with no fact it stays as typed); in a tech slot the app-type leaves out, faf_auto writes slotignored; in a 6W it stays as typed (faf_go asks). Every value it changes is listed. Then writes CLAUDE.md's faf-managed block. Returns what was filled and faf-cli's score before and after. faf_go does the human 6Ws.","inputs":[{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":187},{"name":"faf_bench","title":"Grounding Benchmark","description":"Prove the .faf earns its place — measure how much the context is worth, on THIS repo, falsifiably. Questions derive from the project.faf's own populated slots (the .faf is the answer key), so grading is mechanical — no judge, no rubric. action=questions returns the answer-key-safe question set; action=grade takes your answers WITHOUT the .faf (cold) and WITH it (faf), grades both, and returns the cold→with-faf lift with a receipt hash. The delta is the product; the cold number belongs to the absence of context, never to FAF. Reads only.","inputs":[{"name":"action","type":"string","required":false,"description":"questions = get the answer-key-safe question set to answer; grade = submit cold + with-faf answers to score the delta. Default: questions."},{"name":"cold","type":"object","required":false,"description":"action=grade: answers produced WITHOUT the .faf (general repo knowledge only). Map of question number → answer string."},{"name":"coldTokens","type":"number","required":false,"description":"action=grade (optional): tokens spent answering cold."},{"name":"faf","type":"object","required":false,"description":"action=grade: answers produced WITH the project.faf in context. Map of question number → answer string."},{"name":"fafTokens","type":"number","required":false,"description":"action=grade (optional): tokens spent answering with the .faf."},{"name":"model","type":"string","required":false,"description":"action=grade (optional): the model that produced the answers."},{"name":"path","type":"string","required":false,"description":"Project path (optional — the active project if omitted)."}],"outputs":[{"name":"action","type":"string","required":false,"description":null},{"name":"cold","type":"object","required":false,"description":"action=grade — score WITHOUT context (absence baseline)."},{"name":"delta","type":"number","required":false,"description":"with-faf minus cold — the product."},{"name":"faf","type":"object","required":false,"description":"action=grade — score WITH the .faf."},{"name":"protocol","type":"string","required":false,"description":"in-session — answers are self-reported by the agent under test."},{"name":"qsetHash","type":"string","required":false,"description":"Hash of the question set — rides the receipt; same .faf reproduces it."},{"name":"questions","type":"array","required":false,"description":"action=questions only — NEVER includes the answer key."},{"name":"receipt","type":"object","required":false,"description":"faf-cli's bench receipt — sha256 over the canonical projection; third-party verifiable."},{"name":"total","type":"number","required":false,"description":"Number of questions in the set."},{"name":"version","type":"string","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":304},{"name":"faf_doctor","title":"Diagnose .faf","description":"Diagnose the project's .faf: faf-cli's validateFaf errors, faf-cli's score with every empty slot and the tool that fills it (faf_auto from the repo, faf_go for the 6Ws), whether CLAUDE.md is there, and the formats faf-cli finds in the folder. Returns a checklist of findings, each with its fix. Reads only. Use it when faf_score is below 100%.","inputs":[{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[{"name":"checks","type":"number","required":true,"description":"Number of checks run"},{"name":"diagnostics","type":"array","required":true,"description":"Per-check results"},{"name":"errors","type":"number","required":false,"description":"Count of error-level findings"},{"name":"health","type":"string","required":true,"description":"Overall verdict: ok | warning | error"},{"name":"score","type":"number|null","required":false,"description":"faf-cli's score (-1 only with unknown: true), or null when not scored"},{"name":"unknown","type":"boolean","required":false,"description":"True when the score is not known (an About repo with no about.source_score)"},{"name":"valid","type":"boolean|null","required":false,"description":"faf-cli's validateFaf verdict, or null when no .faf could be read"},{"name":"warnings","type":"number","required":false,"description":"Count of warning-level findings"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":110},{"name":"faf_tri_sync","title":"Tri-Sync to MEMORY.md","description":"Write project.faf as a faf-managed block into the MEMORY.md Claude Code loads for this project (~/.claude/projects/<project-id>/memory/MEMORY.md, or under CLAUDE_CONFIG_DIR). Only the block changes; every note of Claude's is kept, and the reply says so only after reading the file back. action: status reads only. faf_sync writes CLAUDE.md.","inputs":[{"name":"action","type":"string","required":false,"description":"export = write faf's block into MEMORY.md (default), status = show what MEMORY.md holds (reads only)"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":135},{"name":"faf_etch","title":"Etch Memory","description":"Remember a decision, gotcha, or win across sessions by writing it to the project soul (soul.fafm) with faf-cli's Soul. Returns the stored memory and the soul's size. Re-etching an id updates that memory in place. Use it to persist something an AI should recall later; faf_recall reads them back.","inputs":[{"name":"id","type":"string","required":false,"description":"Stable id — re-etching the same id updates in place (dedup)"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."},{"name":"priority","type":"string","required":false,"description":"Recall ranks by priority then recency"},{"name":"tags","type":"array","required":false,"description":"Tags (e.g. decision, gotcha, win) for filtering + recall coupling"},{"name":"text","type":"string","required":true,"description":"The memory to remember — capture the why (decision/gotcha/win)"},{"name":"type","type":"string","required":false,"description":"Memory category"}],"outputs":[{"name":"etched","type":"object","required":true,"description":null},{"name":"namepoint","type":"string","required":false,"description":null},{"name":"soul","type":"string","required":true,"description":"Path to soul.fafm"},{"name":"total","type":"number","required":false,"description":"Total memories in the soul"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":188},{"name":"faf_recall","title":"Recall Memory","description":"Recall memories from the project soul (soul.fafm), ranked by priority then recency, filtered by query/tags/type. Returns the matching entries. Reads only. Use it to surface past decisions; faf_etch adds new ones.","inputs":[{"name":"limit","type":"number","required":false,"description":"Max memories to return"},{"name":"minPriority","type":"string","required":false,"description":"Priority floor (default ephemeral)"},{"name":"path","type":"string","required":false,"description":"Project path. Sets session context for subsequent calls."},{"name":"query","type":"string","required":false,"description":"Case-insensitive substring match on memory text (optional)"},{"name":"tags","type":"array","required":false,"description":"Filter by tag intersection"},{"name":"type","type":"string","required":false,"description":"Filter by memory type"}],"outputs":[{"name":"memories","type":"array","required":true,"description":null},{"name":"soul","type":"string","required":false,"description":null},{"name":"soulTotal","type":"number","required":false,"description":"Total memories in the soul"},{"name":"total","type":"number","required":true,"description":"Number returned"}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":137}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T10:17:42.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"postinstall","tier":"unreviewed"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":112,"partial":false,"deprecated":null,"stale":34,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-09-26","recent":[{"id":"chg_01a17ff2-3a8f-76d9-9c5c-e1403be770db","kind":"package.version_changed","summary":"Package version (7.0.1 → 7.1.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a17ff2-3a8f-76d9-9c5c-e1403be770db"},{"id":"chg_01a177c9-95a7-7c36-933a-15d7936d103e","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a177c9-95a7-7c36-933a-15d7936d103e"},{"id":"chg_01a172a2-4883-7367-bbe4-42ee9c9d4a6a","kind":"score.total_changed","summary":"Trust score (60 → 61)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a172a2-4883-7367-bbe4-42ee9c9d4a6a"},{"id":"chg_01a16333-4cdb-7d94-b2f9-2b1611c63c2e","kind":"score.total_changed","summary":"Trust score (59 → 60)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a16333-4cdb-7d94-b2f9-2b1611c63c2e"},{"id":"chg_01a158e3-48be-727b-b204-e08ec1a8a16c","kind":"score.total_changed","summary":"Trust score (58 → 59)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a158e3-48be-727b-b204-e08ec1a8a16c"},{"id":"chg_01a14e9c-e08f-7855-9d7c-98524cb2509e","kind":"score.total_changed","summary":"Trust score (57 → 58)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a14e9c-e08f-7855-9d7c-98524cb2509e"},{"id":"chg_01a1444d-17af-7919-8862-5b3c7aea23e2","kind":"score.total_changed","summary":"Trust score (56 → 57)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a1444d-17af-7919-8862-5b3c7aea23e2"},{"id":"chg_01a13a01-63cc-7746-9268-06cf8624bfec","kind":"score.total_changed","summary":"Trust score (55 → 56)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a13a01-63cc-7746-9268-06cf8624bfec"},{"id":"chg_01a12e62-988d-7388-9187-9a78320c84e5","kind":"score.total_changed","summary":"Trust score (54 → 55)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a12e62-988d-7388-9187-9a78320c84e5"},{"id":"chg_01a12692-70b3-7018-8890-bdc2f02b5fcc","kind":"score.total_changed","summary":"Trust score (53 → 54)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-10","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a12692-70b3-7018-8890-bdc2f02b5fcc"},{"id":"chg_01a12139-cd93-75e3-a5b6-c03ee9a778f1","kind":"check.reverified","summary":"Provenance (unverified → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-09","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a12139-cd93-75e3-a5b6-c03ee9a778f1"},{"id":"chg_01a12139-cdf7-726a-93b0-71d3bb98ac3f","kind":"score.total_changed","summary":"Trust score (51 → 53)","materiality":"functional","direction":"improvement","scoreDelta":2,"occurredOn":"2026-10-09","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a12139-cdf7-726a-93b0-71d3bb98ac3f"},{"id":"chg_01a10673-a7bf-73b3-8b81-46ac9b611d24","kind":"check.unverifiable","summary":"Provenance (fail → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-04","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a10673-a7bf-73b3-8b81-46ac9b611d24"},{"id":"chg_01a10146-a8ba-7937-bac9-326be1f9400c","kind":"score.total_changed","summary":"Trust score (50 → 51)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-03","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a10146-a8ba-7937-bac9-326be1f9400c"},{"id":"chg_01a0f54a-aac9-72ef-aea1-4a9d9d85d565","kind":"score.total_changed","summary":"Trust score (15 → 50)","materiality":"functional","direction":"improvement","scoreDelta":35,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f54a-aac9-72ef-aea1-4a9d9d85d565"},{"id":"chg_01a0f54a-aac7-75e4-b5b2-4d4315551a33","kind":"check.reverified","summary":"Stability (unverified → 0.17)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f54a-aac7-75e4-b5b2-4d4315551a33"},{"id":"chg_01a0f540-eef0-74b2-b091-0f96645b6015","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f540-eef0-74b2-b091-0f96645b6015"},{"id":"chg_01a0f540-eef0-7b42-ba39-ffc5596b4948","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f540-eef0-7b42-ba39-ffc5596b4948"},{"id":"chg_01a0f540-eef1-7a7b-a431-420de8d89946","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f540-eef1-7a7b-a431-420de8d89946"},{"id":"chg_01a0f540-eef1-7f2e-8f0d-5fa002043095","kind":"check.verdict","summary":"Dependency health (partial → 0.86)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-01","url":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc#chg-chg_01a0f540-eef1-7f2e-8f0d-5fa002043095"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc/changelog.json"},"links":{"html":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc","markdown":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc.md","changelogJson":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc/changelog.json","changelogRss":"https://verifymcp.io/servers/one-faf-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v7-0-0-claude-faf-mc.xml","external":[{"label":"Repository","href":"https://github.com/Wolfe-Jam/claude-faf-mcp"},{"label":"Website","href":"https://faf.one/"}]}}