memory-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited memory-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Give your AI assistant a second brain that persists across sessions.
| Tier | Latency | How it works |
|---|---|---|
| Hot Cache | 0ms | Printed into context by the SessionStart and UserPromptSubmit hooks |
| Cold Storage | ~50ms | Semantic search via a recall() tool call |
The hooks run memory-mcp-cli hot-cache, whose stdout Claude Code adds to the conversation. No tool call is involved. The footer of that text asks you to call mark_memory_used(id) when one of the injected memories was useful, which is the signal that keeps it in the hot cache.
remember("FastAPI with async endpoints for all APIs", memory_type="project", tags=["tech-stack"])
recall("what framework for backend")
mark_memory_used(id)| Tool | Purpose |
|---|---|
remember(content, memory_type, tags) | Store new memory |
recall(query, mode, limit, expand_relations) | Semantic search |
forget(memory_id) | Delete memory |
list_memories(limit, offset) | Browse all |
memory_stats() | Overview stats |
Memory types: project, pattern, reference, conversation, episodic
Recall modes: precision (few, high-confidence), balanced (default), exploratory (many results)
| Tool | Purpose |
|---|---|
hot_cache_status() | View hot cache contents |
promote(memory_id) | Add to hot cache |
demote(memory_id) | Remove from hot cache |
pin(memory_id) | Prevent auto-eviction |
unpin(memory_id) | Allow auto-eviction |
mark_memory_used(memory_id) | Record that a memory was useful |
| Tool | Purpose |
|---|---|
link_memories(from_id, to_id, relation) | Connect memories |
get_related_memories(memory_id) | Find connected |
Relation types: relates_to, depends_on, supersedes, refines, contradicts, elaborates
| Tool | Purpose |
|---|---|
end_session(session_id) | Consolidate a session's episodic memories |
bootstrap_project(root_path) | Seed from project documentation |
db_maintenance() | Vacuum, analyze, demote stale entries |
These sixteen tools are the whole surface.
| Resource | Contents |
|---|---|
memory://hot-cache | Session-aware active context |
memory://promoted-memories | The promoted backing store |
memory://project-context | Current project memories |
Resources are not injected on their own. Reach one with an @ mention or a resource tool. The hooks are what put the hot cache in front of Claude.
A memory is promoted when its salience score reaches 0.5 and it has been accessed three times. Salience combines importance, trust, access count and recency. A memory is demoted after 14 days without access.
bootstrap_project(root_path=".")remember("Decided to use PostgreSQL for main DB", memory_type="project", tags=["decision", "database"])
recall("database decision")end_session(session_id, promote_top=true)link_memories(postgres_id, pgvector_id, "depends_on")
recall("PostgreSQL", expand_relations=true)decision, convention, tech-stack, gotchaexpand_relations can walk~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.