Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cdeust/hypermnesia-mcp

PYPI · HYPERMNESIA-MCP

Persistent memory for AI agents — 36 cited neuroscience mechanisms, local-first, hybrid retrieval.

Available components

+3 this week 74 Trust /100

Last scanned (1 hour ago)

Scores higher than 70% of PyPI servers

Category Memory and Knowledge

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 4 of 88 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to cdeust/Cortex). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 42 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 20378 tokens (~357/item across 57 items; 57 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management57
  • Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 58 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 26 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/hypermnesia-mcp@4.23.5

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo cdeust/Cortex
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/cdeust/Cortex/.github/workflows/release.yml@refs/tags/v4.23.5
Rekor log index 2920710575
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:944a9d48f59c1318825184e0983a4c2698c86e389334453f35534ee22624e3d5

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 88 packages
Packages resolved 88
Stale 3
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 57 exposed · ~20,203 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_rule ~639

Insert a neuro-symbolic rule into memory_rules so the `apply_rules` engine applies it on every subsequent recall — hard rules EXCLUDE matching memories, soft rules boost/penalize their rank, tag rules attach a tag. condition is '<field> <operator> <value>' (operators: ==, !=, contains, not_contains, >, <, >=, <=, matches — field may be a memory attribute like importance/heat, or 'tag'/'tags' to match against the tags list). action is 'filter' (hard only), 'boost:<float>' or 'penalty:<float>' (soft only), or 'tag:<name>' (tag only). Rejected outright (created=False) if the condition or action does not parse, or if the action's mechanism does not match rule_type. Scopes: global, domain, directory; resolved by priority then specificity. Use this to encode operating principles like `never surface deprecated memories` (condition='tag contains deprecated', action='filter', rule_type='hard') or `boost lessons in the recall pipeline` (condition='tag contains lesson', action='boost:0.3', rule_type='soft'). Distinct from `create_trigger` (proactive prospective memory, fires on context match — not a recall filter), and from `anchor` (per-memory pin, not a population rule). Mutates the memory_rules table; effect is visible at the next `recall` call. Latency ~20ms. Returns {rule_id, condition, action, scope, priority}.

NameTypeReqDescription
actionstringyesAction to perform when the condition matches. 'filter' excludes the memory (hard rules only); 'boost:N' / 'penalty:N' adjusts ranking by N (soft rules only); 'tag:NAME' attaches a tag (tag rules only…
conditionstringyesRule condition as '<field> <operator> <value>' (e.g. 'tag contains deprecated', 'importance > 0.7', 'domain == old_project'). Operators: ==, !=, contains, not_contains, >, <, >=, <=, matches (glob).
priorityinteger–Higher priority rules apply first. Use to break ties among overlapping rules.
rule_typestring–Mechanism: 'hard' = filter results, 'soft' = rerank, 'tag' = attach metadata.
scopestring–Where the rule applies: 'global' = everywhere; 'domain' = one cognitive domain (set scope_value); 'directory' = one project directory (set scope_value).
scope_value––Domain id or absolute directory path. Required when scope is 'domain' or 'directory'.
source_memory_id––M-D6: the id of the lesson memory this rule was promoted from, when created via a `lesson_promotion` job. Omit for rules created directly (not through a promotion job). Stored as memory_rules.source_…

Structured output declared, but exposes no named fields.

No examples provided.

anchor ~248

Mark a memory as compaction-resistant by setting heat=1.0, is_protected=true, importance=1.0, and adding an `_anchor` tag — so the memory survives context compaction, heat decay, and consolidation pruning, and cannot be deleted without force=true. The optional reason is stored as an `[ANCHOR: ...]` content prefix for audit. Use this for critical facts, active architectural decisions, and operating principles that must persist across session boundaries. Distinct from `rate_memory` (raises confidence via metamemory, doesn't pin), `remember` (creates memories, doesn't pin), and `checkpoint` (whole-state snapshot, not per-memory). Mutates the memories table. Latency ~20ms. Returns {anchored, memory_id, content_preview} or {error}.

NameTypeReqDescription
is_globalboolean–If true, mark the memory as visible to all projects/domains, not just its origin.
memory_idintegeryesInteger ID of the memory to anchor (returned by recall or remember).
reason––Short justification for why this memory is being anchored. Stored as a contextual prefix on the content (max 40 chars used in tag).

Structured output declared, but exposes no named fields.

No examples provided.

assess_coverage ~248

Score the memory store itself across five signals: quantity (scoped memory count vs a 100-memory reference), age distribution (fresh vs stale), entity density (total store entities / scoped memory count — a corpus-wide ratio, not a true per-memory measure), domain balance (distribution of scoped memories across domains), and compression ratio (penalty for compressed content). There is no axis scoring which project source files are remembered. Emits actionable recommendations (e.g., `run validate_memory`, `run consolidate`). Use this as a memory-store health check. Distinct from `detect_gaps` (lists specific missing connections, no aggregate score), `memory_stats` (raw counts, no scoring), and `narrative`. Read-only. Latency ~500ms-1s. Returns {coverage_score, total_memories, age_distribution, entity_density, compression, domain_balance, recommendations, directory, domain}.

NameTypeReqDescription
directory––Absolute project directory to assess. Defaults to current working directory.
domain––Cognitive domain to assess when 'directory' is not supplied.
stale_daysinteger–Days since last access for a memory to count as stale in the age-distribution score.

Structured output declared, but exposes no named fields.

No examples provided.

backfill_memories ~416

Import prior Claude Code conversations from ~/.claude/projects/ into the memory store. Walks JSONL session transcripts, extracts memorable items (decisions, lessons, errors-and-fixes) via the session_extractor, stores them with `backfill` tags via `remember(force=True)` — which BYPASSES the predictive-coding write gate, not the standard write path — and links each to the auto-discovered core concepts of the originating project. Idempotent only at the file level: hashes tracked in backfill_log so a plain re-run skips already-processed files. NOT idempotent overall — `force_reprocess=true` re-imports a file's items with the gate still bypassed, which can create duplicate memory rows. Use this on first install, after long absences, or when migrating to a new machine. Distinct from `import_sessions` (more granular control, manual file selection), `seed_project` (codebase structure, not conversation history), and `codebase_analyze` (source files, not transcripts). Mutates memories + backfill_log tables. Latency varies (~30s-10min depending on history size). Returns {sessions_processed, sessions_skipped, memories_imported, errors}.

NameTypeReqDescription
dry_runboolean–Preview what would be imported without writing to the store. Always run a dry_run first.
force_reprocessboolean–Re-process files even if their hash is in the backfill log. Only set this if you have changed the extractor and want a fresh pass.
max_filesinteger–Maximum number of JSONL session files to process per call. Use a small number for an initial dry run, then raise for the full backfill.
min_importancenumber–Minimum extracted-item importance (0.0-1.0) to keep. Lower values import more lower-signal memories.
project––Filter to a specific project directory slug (the Claude Code project ID). Omit to process every project.

Structured output declared, but exposes no named fields.

No examples provided.

calibration ~165

Score the confidences of resolved predictions. Returns the Brier score (mean squared distance between stated confidence and outcome, Brier 1950) with its reference point: a forecaster who always says 0.5 scores 0.25, so anything above that carries less information than a coin, and perfect certainty that holds scores 0. Also returns the reliability breakdown per confidence band, which the mean cannot show: a well-calibrated band around 0.7 is confirmed about seventy percent of the time. Abandoned predictions are counted apart and scored nowhere. Read-only. Returns {scored, abandoned, brier, uninformative_brier, confirmed, refuted, reliability, open}.

NameTypeReqDescription
domain––Score one cognitive domain; omit to score them all.

Structured output declared, but exposes no named fields.

No examples provided.

check_setup ~288

Verify the local Cortex installation before first interactive use. Runs the identical check functions as `python -m mcp_server.doctor` (no duplicated logic), backend-aware. PostgreSQL backend: Python >= 3.10, psycopg/psycopg_pool/pgvector driver imports, DATABASE_URL set, live PostgreSQL connection, pgvector + pg_trgm extensions, ~/.claude/methodology writability, I10 pool-capacity invariant, and an optional ai-architect-mcp-codebase codebase-tool probe. SQLite backend (zero-config default): the PG checks are replaced by a store-open check and a vector-search check that requires sqlite-vec to be loaded (it ships in every install's base package set; absence or a load failure blocks readiness). Checks run in doctor's own dependency order, so an early failure (e.g. missing DATABASE_URL) explains later ones (e.g. no PG connection) -- fix in list order. Call this once before first session, or whenever diagnosing a setup problem. Read-only but reaches outside the DB (env vars, filesystem, a live connection attempt). Takes no arguments. Returns {ready, summary, fixes_needed, checks: [{name, ok, optional, detail, fix_command}]}. `ready` is true iff every non-optional check passed; the codebase-pipeline probe is optional and never blocks readiness.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

checkpoint ~401

Hippocampal-replay-style save/restore of whole working state across context compaction events (McClelland 1995). `save` writes a checkpoint row capturing current task, files-being-edited, key decisions, open questions, planned next steps, and active errors, tied to the current epoch. `restore` reconstructs post-compaction context by fusing the latest checkpoint with anchored + hot + directory-relevant memories. Use `save` before risking compaction; use `restore` immediately after. Distinct from `anchor` (per-memory pinning, no task state), `remember` (creates one memory, no whole-state snapshot), and `query_methodology` (cognitive profile, not session state). Mutates the checkpoints table on save; read-only on restore. Latency ~50ms (save) / ~100ms (restore). Returns {action, checkpoint_id, restored_context?, memories_attached}.

NameTypeReqDescription
actionstringyes'save' to write a new checkpoint capturing current state; 'restore' to reconstruct context from the active checkpoint plus relevant memories.
active_errors––Errors currently being debugged.
current_task––Brief description of the active task or goal.
custom_context––Free-form additional context worth preserving across compaction.
directory––Current working directory the work is happening in.
files_being_edited––Absolute or repo-relative paths of files currently open for editing.
key_decisions––Important decisions made during this session that the next session must respect.
next_steps––Planned next actions, in order.
open_questions––Unresolved questions that block progress.
session_id––Session identifier this checkpoint belongs to. When omitted, falls back to the current window's canonical session id (transcript-stem identity, via the T2 session registry); if that is also unavailab…
NameTypeReqDescription
actionstring––
checkpoint_idinteger–ID of the saved or restored checkpoint row (serial PK, not a UUID).
epochinteger–Session epoch counter the checkpoint ties to.
memories_attachedinteger–Count of hot + anchored + directory-relevant memories fused into the restore payload.
restored_contextstring–Human-readable reconstruction of prior session state. Present on restore.

No examples provided.

codebase_analyze ~471

Walk a codebase and store its structure as memories using tree-sitter AST parsing (with regex fallback for unsupported languages). One memory per file, with symbols as entities and imports as relationships; then cross-file symbol resolution, call-graph extraction, and community detection over the call graph. Incremental — only re-processes files whose content hash changed since last run (tracked via HASH_TAG_PREFIX tags). Use this on first onboarding to a serious codebase, or after a major refactor that invalidates symbol assumptions. Distinct from `seed_project` (5-stage shallow structural sweep, no AST), `backfill_memories` (Claude Code conversations, not source files), `wiki_seed_codebase` (seeds wiki pages from .md docs), and `ingest_codebase` (downstream PRD-generator consumer, and the PRIMARY ingestion path when the ai-architect-mcp-codebase upstream is reachable — this tool is its explicit fallback, per ADR-0052 sec 2; every written memory carries a src:native provenance tag, and the response states fallback_status so a run made while AP is reachable is never silent). Mutates memories + entities + relationships tables. Latency varies (~10s-10min depending on tree size). Returns {files_analyzed, files_skipped, memories_written, entities_created, relationships_created, fallback_status}.

NameTypeReqDescription
directory––Root directory of the codebase to analyze. Defaults to the current working directory.
domain––Cognitive domain to tag analysis memories with. Auto-detected from directory if omitted.
dry_runboolean–Report what would be analyzed and stored without writing any memories.
incrementalboolean–Only re-process files whose content hash changed since the last analysis. Disable for a clean rescan.
languages––Restrict analysis to specific languages by tree-sitter grammar name. Omit to auto-detect from file extensions.
max_file_size_kbinteger–Skip files larger than this many kilobytes (typically generated files or binary blobs).
max_filesinteger–Maximum number of files to process per call. Set to 0 (default) for no limit — process every matching file. Use a positive cap only to bound runaway analysis on extremely large monorepos.

Structured output declared, but exposes no named fields.

No examples provided.

consolidate ~845

Run scheduled memory-system maintenance cycles: thermodynamic heat decay, full-text → gist → tag compression, episodic→semantic CLS transfer, synaptic plasticity LTP/LTD, microglial pruning of orphan edges, homeostatic scaling, cascade stage advancement, and optional deep-sleep replay. Each cycle is delegated to a focused sub-module under handlers/consolidation/; durations are tracked per stage with partial-failure rollup. Use this on a daily/weekly cadence (or after large ingest bursts) to keep recall fast and the heat distribution healthy. Distinct from `wiki_consolidate` (operates on wiki PAGES not memories) and `forget` (one-off deletion, no lifecycle). Mutates memories + entities + relationships tables. Latency varies (~5-60s typical, deep mode minutes). Returns per-cycle counters, duration_ms per stage, status (ok|partial), and failed_stages list. The `cls` and `memify` stages include `reason_for_zero` / `reason_for_inaction` when the cycle produces no mutations, distinguishing early-return from a genuine quiet-store pass.

NameTypeReqDescription
clsboolean–Run Complementary Learning Systems consolidation: extract semantic memories from clusters of episodic ones (McClelland 1995).
compressboolean–Run compression cycle: full-text → gist → tag for memories that are cold but still informative.
decayboolean–Run thermodynamic heat decay (cools cold memories), plus synaptic plasticity (LTP/LTD on co-activated edges) and microglial pruning of orphan edges.
deepboolean–Run deep-sleep compute: dream replay, cluster summarization, re-embedding with a fresh model, and auto-narration. Adds two-stage hippocampal-cortical transfer. Slow — schedule overnight or weekly, no…
memifyboolean–Run the memify self-improvement cycle: prune/strengthen/reweight, plus derive new candidate facts from high-weight entity relationships (extract reusable lessons and rules) and offer each one to the…
wikiboolean–Run autonomous wiki maintenance: purge stub pages, report classifier-reject count, reconcile missing wiki.citations rows (HIGH-reliability tier only), and update the curation backlog. Default true —…
wiki_apply_citation_seedboolean–Reconcile missing `wiki.citations` rows for pages whose `wiki.pages.memory_id` already carries a verified pointer to the memory that authored them (HIGH-reliability tier only — no inferred/fabricated…
wiki_apply_classifier_rejectsboolean–Delete pages that fail the current classifier (audit tags, hard negatives) during the autonomous wiki cycle. Default true — the system decides; non-technical users cannot be expected to classify page…
wiki_apply_stubsboolean–Delete stub pages (body is majority placeholder markers) during the autonomous wiki cycle. Default true — stubs are unambiguous noise.
wiki_citation_seed_limit––Per-cycle scan cap for the citation reconciliation sweep. Defaults to wiki_citation_seed_pass.DEFAULT_SEED_SCAN_LIMIT (5000).
wiki_max_purges_per_axisinteger–Maximum pages each purge axis (stubs, classifier rejects) may delete in one consolidate cycle. Default 500. Pass 0 to disable the cap for a full sweep.

Structured output declared, but exposes no named fields.

No examples provided.

create_trigger ~369

Create a prospective-memory trigger that Cortex auto-fires when its condition matches future context (Einstein & McDaniel 2005). Trigger types: `keyword` (fires when user message contains string), `time` (fires after ISO datetime), `file` (fires when path is accessed/modified), `domain` (fires when that cognitive domain becomes active). Triggers are checked at session start (via `query_methodology`) and on demand. Use this to leave instructions for a future session — `next time we touch X, remember Y` — that you would otherwise forget. Distinct from `add_rule` (passive recall filter applied to ALL queries, no context-match firing), `anchor` (pins a memory but doesn't fire), and `remember` (records a fact, doesn't activate on context). Mutates the prospective_memories table. Latency ~30ms. Returns {trigger_id, trigger_type, trigger_condition, content_preview}.

NameTypeReqDescription
contentstringyesThe reminder text Cortex will surface when the trigger fires.
source_memory_id––M-D6: the id of the lesson memory this trigger was promoted from, when created via a `lesson_promotion` job. Omit for triggers created directly. Stored as prospective_memories.source_memory_id — an u…
target_directory––If set, the trigger only fires when the active project directory matches.
trigger_conditionstringyesThe condition value, interpreted per trigger_type: keyword string for 'keyword', ISO 8601 datetime for 'time', absolute file path for 'file', domain id for 'domain'.
trigger_typestring–Mechanism the trigger fires on.

Structured output declared, but exposes no named fields.

No examples provided.

curate_distill ~468

Auto-distiller: returns structured jobs the in-session LLM consumes to author understanding-level 'lesson' memories from PG memory dossiers (error->success pairs, recurring co-access families, entity-cohesive clusters). Each job carries a dossier's memory_ids, a marker tag for idempotence, and a complete prompt naming the required `remember` call shape (tags=['lesson', <marker>, 'derived-src:<id>', ...], write_class='deliberate'). The conversational LLM reads each job, decides whether the sources justify a durable lesson, and writes it via `remember` — or skips the dossier. No server-side write happens here. Distinct from `curate_wiki` (wiki PAGES; this is memory-level LESSONS) and `consolidate`'s `memify` stage (memify_derive synthesizes templated inventory facts server-side with no LLM judgment; this delegates judgment to the LLM, per M-D8). Also returns `memify_derive_usage`: a read-only snapshot (count/access/useful) of memify_derive's existing 'derived'-tagged output, for the 30-day keep/retire measurement M-D8 requires. Read-only. Latency ~200-500ms. Returns {jobs: [{job_type, dossier_kind, memory_ids, marker, prompt}], total_dossiers_eligible, memify_derive_usage, instructions}.

NameTypeReqDescription
domain––Restrict entity_family dossiers to a single domain. error_success and co_access_family dossiers are corpus-wide (their pairing signal is entity/time, not domain).
include_co_accessboolean––
include_entity_familyboolean––
include_error_successboolean––
limitinteger–Maximum total jobs to return across all dossier kinds.
memory_pool_sizeinteger–Pool size drawn for entity_family clustering.
min_avg_heatnumber–Minimum average heat for an entity_family cluster.
min_memoriesinteger–Minimum memories per entity_family cluster.
window_hoursnumber–Search cap for error->success pairing. Default 168h (7 days) reuses navigate_memory's existing maximum co-access window as the search bound, not a new invented constant.

Structured output declared, but exposes no named fields.

No examples provided.

curate_wiki ~699

Auto-curator: returns structured authoring jobs the in-session LLM (Opus 4.7) consumes to author curated wiki pages from PG memory clusters. Each job carries one cluster's memories, the suggested wiki path, a list of existing related pages for cross-linking, and a complete structured prompt that encodes the wiki documentation conventions (frontmatter, lead, diagrams, 'why this not the alternatives', 'what can go wrong', 'see also', primary sources). The conversational LLM reads each job, authors the page in Markdown, and writes it via `wiki_write`. No external Anthropic API key required — the user's existing Claude Code session is the authoring LLM. Distinct from `wiki_write` (the writer; this is the planner), `narrative` (one summary; this is N pages), and `consolidate` (memory maintenance; this is documentation production). Read-only with respect to PG and wiki. Latency ~300ms for k=5 jobs. Returns {jobs: [{cluster, prompt, suggested_path, related_pages}], total_clusters_eligible, instructions}.

NameTypeReqDescription
coverage_jobs_maxinteger–Cap on how many coverage jobs to return per invocation. Coverage gaps can be large on a fresh wiki; this prevents one call from monopolising the LLM's attention with structural pages.
domain––Restrict curation to a single domain. Omit to curate across all domains (sorted by cluster value).
include_coverageboolean–If true, prepend coverage-driven jobs (missing architecture / services / api / data-flow / operations pages per project) ahead of cluster-driven jobs. Structural scopes get authored before heat clust…
include_reauthorboolean–Mix in re-authoring jobs for existing pages whose linked source files have moved, whose content is older than the freshness window, or whose body is off-template. Legacy pages get the same detailed t…
limitinteger–Maximum number of authoring jobs to return. Higher = more pages to author per invocation; lower = focus on the highest-value clusters.
memory_pool_sizeinteger–Number of memories to draw from before clustering. Higher = better topic coverage, more compute.
min_avg_heatnumber–Minimum average effective_heat of cluster memories. Cold clusters yield stale pages.
min_memoriesinteger–Minimum memories per cluster to earn a page. Below this, a topic doesn't have enough signal.
reauthor_jobs_maxinteger–Cap on how many re-authoring jobs to return per invocation. Drift backlog can be large; this keeps each batch tractable for the LLM.
recent_onlyboolean–If true, only consider recently-accessed memories. If false, scan the full corpus (slower).
report_uncited_deliberateboolean–I6-D7 reverse loop: when true, SKIP job generation entirely and instead return a read-only report of active, deliberate (non-auto-captured), verifiably-important memories that have zero wiki.citation…
uncited_deliberate_limitinteger–Max candidates returned by report_uncited_deliberate=true.

Structured output declared, but exposes no named fields.

No examples provided.

detect_domain ~259

Classify the current working directory + first message into one of the known cognitive domains via a 3-signal weighted score: (1) path tokens (last 3 segments + git root), (2) project ID match against known profiles, (3) keyword overlap with stored domain vocabularies. Returns the best-matching domain plus confidence and the runner-up alternatives. Use this when switching codebases or contexts to recalibrate, or as a cheap preflight before `query_methodology` / `recall`. Distinct from `query_methodology` (returns the FULL profile body, not just the domain id), `list_domains` (enumerates ALL domains), and `rebuild_profiles` (rescans, doesn't classify). Read-only. Latency <20ms. Returns {domain, confidence, alternativeDomains, signals}.

NameTypeReqDescription
cwd––Absolute path to the current working directory. Used to match against known project paths and extract path-token signals (last 3 segments).
first_message––The first user message of the session, used for keyword-based domain inference when path signals are weak.
project––Claude Code project identifier (the slugified path used under ~/.claude/projects/). Falls back to deriving from cwd.

Structured output declared, but exposes no named fields.

No examples provided.

detect_gaps ~360

Surface knowledge gaps across four axes: isolated entities (referenced in memories but with zero relationships, cap 10), sparse domains (entity count under 50% of the cross-domain average, cap 5), temporal drift (domains whose most-recently-accessed memory — sampled from up to 10 per domain — exceeds `stale_threshold_days`, cap 5), and cognitive blind spots (per-domain category/tool/pattern gaps from the profile-based blindspot detector, capped to the first 5 domains and 3 spots each). Does not detect duplicates, contradictions, or domainless/sourceless memories. Use this when planning research priorities or auditing coverage. Distinct from `assess_coverage` (numeric coverage SCORE 0-100 per axis, no specific gap list), and `memory_stats` (population counts only, no gap interpretation). Read-only. Latency ~500ms-2s depending on store size. Returns {total_gaps, gaps: [{gap_type, ...}], by_type: {gap_type: count}, domain_filter}.

NameTypeReqDescription
domain––Focus gap analysis on a specific domain. Omit for a global scan across all domains.
include_domain_gapsboolean–Include cross-domain coverage analysis: domains whose memory count or category coverage falls below the global average.
include_entity_gapsboolean–Include isolated-entity analysis: entities referenced in memories but with no outgoing/incoming relationships.
include_temporal_gapsboolean–Include temporal drift detection: domains whose most recent memory is older than 'stale_threshold_days'.
stale_threshold_daysinteger–Days since last access for a domain to count as temporally drifted. Lower = stricter freshness requirement.

Structured output declared, but exposes no named fields.

No examples provided.

drill_down ~303

Descend one level into a fractal memory cluster previously returned by `recall_hierarchical`: an L2 root cluster expands to its L1 sub-clusters; an L1 cluster expands to the individual memories it contains (full content, heat, tags). Cluster IDs use the form `L<level>-<index>`. Use this for interactive top-down exploration — start broad with `recall_hierarchical`, then drill the most-relevant cluster repeatedly until you reach memories. Distinct from `recall` (flat ranked list, no hierarchy), `navigate_memory` (graph BFS via co-access edges, not cluster tree), and `recall_hierarchical` (entry point that builds the tree). Not read-only: every surfaced memory is recorded as a hippocampal replay event — access_count/replay_count increment and hippocampal_dependency decays — so repeat calls are not idempotent (`track_replay_event`, `replay_tracking.py`). Latency <100ms. Returns {cluster_id, level, children: [{id, label, members?, content?}]}.

NameTypeReqDescription
cluster_idstringyesCluster identifier returned by recall_hierarchical. Format: 'L<level>-<index>'.
domain––Cognitive domain to build the underlying hierarchy from. Omit for global.
min_heatnumber–Minimum heat (0.0-1.0) for a memory to be eligible for the hierarchy.

Structured output declared, but exposes no named fields.

No examples provided.

explore_features ~283

Inspect the user's cognitive profile through one of four interpretability lenses (mechanistic-interpretability inspired, Bricken et al. 2023): `features` returns the active sparse-dictionary behavioral features for a domain; `attribution` perturbation-traces which input signals drove the domain's profile, sampling up to 20 of that domain's own recent sessions from disk (empty graph if the domain has no indexed sessions -- run rebuild_profiles first); `persona` returns the 12D persona vector with drift-from-baseline; `crosscoder` compares two domains to detect persistent behavioral features. Use this when facing an unfamiliar pattern and you want a behavioral explanation. Distinct from `query_methodology` (full profile, not the interpretability internals) and `list_domains` (overview, no analysis). Read-only on profiles.json. Latency <100ms. Returns mode-specific JSON: {dictionary | graph | persona | comparison}.

NameTypeReqDescription
compare_domain––Second cognitive domain for the 'crosscoder' mode comparison.
domain––Cognitive domain to inspect. Omit for global aggregate where supported.
modestringyesWhich interpretability lens to apply. 'features' = sparse dictionary activations; 'attribution' = decision tracing; 'persona' = 12D vector + drift; 'crosscoder' = two-domain feature persistence.
NameTypeReqDescription
attributionarray–Signal → decision attribution edges (mode=attribution).
crosscoderobject–Cross-domain persistent-feature comparison (mode=crosscoder).
featuresarray–Active sparse-dictionary behavioral features (mode=features).
modestringyes–
personaobject–12-dimensional persona vector + drift-from-baseline (mode=persona).

No examples provided.

forget ~230

Delete a memory by integer ID via direct DELETE on the memories table (hard) or by setting is_stale=true + heat=0 (soft, recoverable via SQL). Protected/anchored memories are refused unless force=true. Use this to remove genuinely-wrong memories or accidental captures. Distinct from `rate_memory(useful=false)` (downweights without removing — prefer for low-value memories), `anchor` (protect from deletion), and `validate_memory` (mark stale based on filesystem refs, not user verdict). Mutates the memories table; hard delete is irreversible. Latency ~10ms. Returns {deleted, method, memory_id, content_preview, reason?}.

NameTypeReqDescription
forceboolean–If true, delete even if the memory is protected (anchored). Use sparingly — anchored memories are usually load-bearing.
memory_idintegeryesInteger ID of the memory to delete (returned by recall or memory_stats).
softboolean–If true, soft-delete: set is_stale=true and heat=0 instead of permanently dropping the row. Recoverable via SQL.

Structured output declared, but exposes no named fields.

No examples provided.

get_causal_chain ~323

Walk the Cortex knowledge graph (entities + typed relationships extracted from memory content) via bounded BFS from a seed entity or from every entity in a given memory. Returns chains of causation, dependency, and resolution — useful for understanding why a bug occurred, tracing the origin of a decision, or following imports across modules. Use this when you have a symptom and want the upstream cause, or a cause and want all downstream impact. Distinct from `navigate_memory` (memory-level co-access SR graph, not entity relationships), `recall` (no graph traversal), and `drill_down` (cluster tree, not graph). Read-only. Latency ~100-300ms depending on max_depth/edges. Returns {nodes, edges, paths} capped at max_edges.

NameTypeReqDescription
directionstring–BFS direction: 'outgoing' = effects/impact, 'incoming' = causes/origins, 'both' = full neighborhood.
entity_name––Name of the entity to trace from. Mutually exclusive with memory_id; one of the two must be provided.
max_depthinteger–Maximum BFS depth from the seed entities. Higher = wider blast radius.
max_edgesinteger–Hard cap on the number of edges returned to keep payloads small.
memory_id––Memory ID whose extracted entities seed the BFS frontier.
relationship_types––Filter traversal to specific relationship types. Common types: 'caused_by', 'resolved_by', 'imports', 'depends_on'. Omit to traverse all types.

Structured output declared, but exposes no named fields.

No examples provided.

get_grooming_health ~189

Backlog size and staleness age for the three judgment-level grooming planners (curate_wiki, curate_distill, lesson_promotion) — distinct from `consolidate`'s mechanical wiki maintenance (purge/backfill/dashboards, which already self-reports and needs no staleness alarm). For each kind, returns the exact eligible-backlog count and how long ago that kind of grooming last actually executed (None = never). `stale=true` when a kind has gone longer than `threshold_days` (sourced from measured session cadence, see core.grooming_health) without running, or has never run at all. Read-only. Latency ~1s (curate_distill + curate_wiki are themselves bounded-scan planners, not indexed aggregates — this tool is meant for explicit on-demand health checks, not the SessionStart hot path).

Input schema present but exposes no named parameters.

NameTypeReqDescription
any_staleboolean–True if any kind exceeds threshold_days.
kindsobjectyesPer-kind status keyed 'wiki'/'distillation'/'promotion': {backlog_count, last_run_at, days_since_last_run, stale}.
threshold_daysnumberyesAlert threshold in days, sourced from measured session cadence (mcp_server.core.grooming_health module docstring documents the exact query).

No examples provided.

get_project_story ~228

Generate a period-based autobiographical narrative by bucketing memories chronologically into chapters within a time window (day / week / month / all) — produces a timeline of what actually happened, in order. Use this for retrospectives, status updates, sprint reports, or to brief a collaborator on what they missed. Distinct from `narrative` (generic project summary, no time buckets, no chronology), `assess_coverage` (numeric score, no story), and `recall` (raw memory list, no narrative synthesis). Read-only. Latency ~300-800ms depending on memory count and period. Returns {period, chapters: [{time_range, theme, key_decisions, memory_ids, summary}]}.

NameTypeReqDescription
directory––Absolute project directory whose history to narrate.
domain––Domain to narrate when 'directory' is not supplied.
max_chaptersinteger–Maximum number of time-bucketed chapters in the story.
periodstring–Time window for the story. 'all' uses the full memory history.

Structured output declared, but exposes no named fields.

No examples provided.

get_rules ~264

Enumerate active neuro-symbolic rules in the memory_rules table, optionally filtered by scope (global/domain/directory) or rule_type (hard=filter, soft=rerank, tag=attach metadata). Use this to audit which rules are shaping recall before adding a new one or debugging unexpected results. Distinct from `add_rule` (creates) and `forget` (deletes a memory, not a rule). Read-only. Latency ~30ms. Returns {rules: [{id, scope, scope_value, rule_type, condition, action, priority, active, created_at, source_memory_id}]}. source_memory_id (M-D6) is the lesson memory a rule was promoted from via `lesson_promotion`, or null for directly-created rules.

NameTypeReqDescription
include_inactiveboolean–Include rules that have been deactivated (default omits them).
rule_type––Restrict by rule mechanism: 'hard' = filter results, 'soft' = rerank, 'tag' = attach metadata. Omit for all types.
scope––Restrict to rules at a single scope. 'global' applies everywhere; 'domain' applies to one cognitive domain; 'directory' applies to one project directory. Omit for all scopes.

Structured output declared, but exposes no named fields.

No examples provided.

get_telemetry ~65

Return the in-process telemetry snapshot: per-operation call counts, latency, byte volume, success/failure split, and computed read/write ratio. Counters reset on process restart; the durable record is the JSONL at ~/.claude/methodology/telemetry.jsonl.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countersobjectyesPer-op counter map. Key is the canonical op name (recall, remember, forget, ...); value is {count, ok, fail, bytes_in, bytes_out, result_count, latency_ms_sum, latency_ms_max}.
derivedobject–Per-op derived stats: avg_latency_ms, max_latency_ms.
disabledboolean–True if CORTEX_TELEMETRY_DISABLED=1 was set in the environment when the process started.
embedding_modestring–Embedding provenance for this process: 'neural' = sentence-transformers, 'fallback' = download-free algorithmic embeddings (lower fidelity, engaged when the model is absent), 'unknown' = no encode ha…
log_pathstring–Absolute path to the JSONL audit log.
ratio_reads_writesnumberyesreads / max(writes, 1). Reads = recall, recall_hierarchical, navigate_memory, get_causal_chain, drill_down. Writes = remember, forget, validate_memory, rate_memory.

No examples provided.

import_sessions ~299

Import Claude Code conversation history from ~/.claude/projects/ into the memory store. Walks JSONL session files, extracts memorable items (decisions, errors-and-fixes, architecture notes, key insights) via session_extractor, and routes each through the `remember` write gate (thermodynamics, hierarchical predictive coding, knowledge graph, engram allocation). Supports project / domain filtering and dry-run preview. Use this for an initial bootstrap or to ingest sessions from another machine. Distinct from `backfill_memories` (preferred for incremental, hash-tracked re-runs over the same source), `seed_project` (codebase structure), and `codebase_analyze` (source files). Mutates memories + entities + relationships tables. Latency varies (~1-30min depending on history size). Returns {sessions_processed, memories_imported, dry_run, errors}.

NameTypeReqDescription
domain––Restrict import to sessions classified under this cognitive domain.
dry_runboolean–Preview what would be imported without writing to the store. Always run a dry_run first.
max_sessionsinteger–Maximum number of session files to process this call.
min_importancenumber–Minimum importance (0.0-1.0) for an extracted item to be imported. Lower = more memories, more noise.
project––Filter to a single Claude Code project directory slug. Omit to import from every project.

Structured output declared, but exposes no named fields.

No examples provided.

ingest_document ~308

Ingest a document (.docx or a Confluence storage-format XHTML export) into Cortex's memory/wiki store. Unpacks the container (docx = OOXML zip; Confluence = XHTML file), extracts heading structure + paragraph text + tables into a wiki reference page under documents/<slug>.md, and writes one protected summary memory plus one memory per section — every page and memory stamped with provenance (source path + content version) so documents ride the same staleness/validation path as code references. Embedded images are skipped with an explicit notice (no OCR). Re-ingesting the same document version is idempotent (no duplicate writes). Malformed zip/XML fails loudly, writing nothing. Distinct from `ingest_prd` (markdown PRDs with decision/requirement extraction), `ingest_codebase` (code symbols), and `wiki_write` (manual single page). Returns {ingested, wiki_path, summary_memory_id, section_count, images_skipped, notices, idempotent_skip}.

NameTypeReqDescription
domain––Cognitive domain to tag the ingested memories with.
formatstring–Document format. 'auto' infers from the file extension (.docx → docx; .xml/.xhtml/.html → confluence).
pathstringyesAbsolute path to a .docx file or a Confluence storage-format XHTML export file.
title––Override the document title (else derived from the first heading, else the filename).

Structured output declared, but exposes no named fields.

No examples provided.

ingest_findings ~445

Ingest an ai-architect-mcp-codebase (AP) findings run into Cortex's store. Reads runs/<run_id>/ artifacts directly off disk (no network call to AP — AP never pushes, ADR-0052 D1). Verified findings (stage-2 verified:true) get a wiki page under reference/findings/, file-source links (wiki.page_sources, link_kind='finding' for code files the finding is ABOUT — run AP's stage-4 `prepare_prd_input` on the finding BEFORE ingesting if you want this anchoring, otherwise it is empty, not guessed; link_kind='extracted_from' for the source document the finding was extracted FROM, when stage-1's source_path is present — independent of stage-4), one wiki.memos row per stage-2/6/8 receipt (raw-bytes sha256 digest, re-verifiable, plus AP's own transcript_digest copied verbatim from stage-2.verified.json when present — two independent anchors: byte-exact vs AP's semantic claim), and a memory tagged finding,verified. Non-verified findings get a memory only, tagged finding,hypothesis, at low confidence — a hypothesis is not documentation. Idempotent: re-ingesting the same run does not duplicate memories, pages, page_sources, or memos. Distinct from `ingest_codebase` (symbols/files, not findings) and `ingest_prd` (a PRD document, not a findings run). Mutates memories + wiki.pages/page_sources/memos. Returns {ingested, findings_total, verified_count, hypothesis_count, results, errors}.

NameTypeReqDescription
graph_key––Project key (as used by ingest_codebase's _code_graph:<key> memo tag) to resolve output_dir from the last-memoised graph path. Ignored if output_dir is given.
output_dir––Absolute path to the AP output_dir (parent of runs/ and graph/). Takes precedence over graph_key. Omit to resolve via graph_key or the known graph roster.
run_idstringyesAP run_id whose runs/<run_id>/ artifacts to ingest.

Structured output declared, but exposes no named fields.

No examples provided.

lesson_promotion ~224

Propose promotion jobs for lessons (memories tagged 'lesson' or 'lesson-candidate') that have demonstrated usage evidence (recalled or rated useful at least once). Each job carries the lesson's memory_id, content, and a heuristic suggested_kind ('rule'|'trigger'|'wiki') the in-session LLM may follow or override. The server NEVER calls add_rule/create_trigger/wiki_write itself — a rule reshapes every future recall, so the decision stays with the reviewer. Distinct from `curate_wiki` (wiki authoring jobs from memory clusters, not lesson promotion), `add_rule`/`create_trigger`/`wiki_write` (the actual promotion actions this handler only proposes), and `assess_coverage`/`detect_gaps` (read-only audits with no actionable job queue). Read-only. Latency ~30ms. Returns {jobs: [{memory_id, content, suggested_kind, tags, useful_count, access_count}], candidate_count, instructions}.

NameTypeReqDescription
limitinteger–Maximum number of promotion jobs to return.

Structured output declared, but exposes no named fields.

No examples provided.

list_domains ~172

Read profiles.json and emit an overview row for every cognitive domain Cortex has profiled, sorted by session count. Per domain: id, human label, sessionCount, confidence, lastActive, top-3 work categories with ratios, and dominantMode from the session shape. Use this to discover what domains exist before scoping `recall`, `narrate`, or `rebuild_profiles`. Distinct from `query_methodology` (deep profile for ONE domain), `detect_domain` (classifies the current context, no enumeration), and `memory_stats` (memory-system counts, not domain profiles). Read-only. Takes no arguments. Latency <10ms. Returns {domains: [{id, label, sessionCount, confidence, lastActive, topCategories, dominantMode}], totalDomains, globalStyle}.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

memory_stats ~268

Aggregate population diagnostics for the memory system: total / episodic / semantic / active / archived / stale / protected memory counts, average heat, entity and relationship totals, active prospective triggers, last consolidation timestamp, and vector-search availability (pgvector). Use this for health checks, dashboards, or before/after a `consolidate` run to verify cycles fired. Distinct from `assess_coverage` (scored 0-100 with recommendations, this is raw counts), `detect_gaps` (enumerates specific missing things), and `list_domains` (per-domain profile rows, not memory counts). Read-only. Takes no arguments. Latency ~75ms (includes the grooming-staleness ages below). Returns {total_memories, episodic_count, semantic_count, active_count, archived_count, stale_count, protected_count, avg_heat, total_entities, total_relationships, active_triggers, last_consolidation, has_vector_search, grooming_staleness}. `grooming_staleness` carries last-run age (days) for the three judgment-level grooming kinds (wiki/distillation/promotion) against a sourced threshold -- ages only, no backlog counts (those cost ~1s combined; call `get_grooming_health` for the full picture).

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

narrative ~221

Generate a coherent project narrative from stored memories for a directory or domain. Clusters memories by topic + time, identifies the through-line, and renders either a multi-section story or (when `brief=true`) a one-paragraph executive summary. Use this for status updates, README seeds, or to onboard a new contributor with the project's actual history. Distinct from `get_project_story` (period-bucketed chronological chapters with explicit time ranges), `assess_coverage` (numeric score, no prose), and `recall` (raw ranked memories). Read-only. Latency ~300-800ms. Returns {narrative, memory_count, themes}.

NameTypeReqDescription
briefboolean–If true, return a one-paragraph executive summary instead of the full multi-section narrative.
directory––Absolute project directory to narrate. Pulls all memories tagged to this path. Mutually exclusive with 'domain'.
domain––Domain identifier to narrate (e.g., 'cortex', 'auth-service'). Used when 'directory' is omitted.

Structured output declared, but exposes no named fields.

No examples provided.

navigate_memory ~377

Traverse the memory space via a Successor Representation graph (Dayan 1993) built from temporal co-access — pairs of memories accessed within `window_hours` of each other become weighted edges. Starting from a seed memory_id, BFS outward up to `max_depth` (capped at 4) and return neighbors with SR distances. Use this to follow a thread of thinking, explore latent associations, or discover what a topic touches that you didn't know about. Distinct from `recall` (semantic vector + lexical search, no temporal-proximity edges), `get_causal_chain` (entity knowledge-graph BFS, not memory-level co-access), and `drill_down` (fractal cluster tree, not graph). Not read-only: every returned memory (the seed plus each traversed neighbor) is recorded as a hippocampal replay event — access_count/replay_count increment and hippocampal_dependency decays (CLS-B, Ketz et al. 2023) — so repeat calls are not idempotent (`track_replay_event`, `replay_tracking.py`). Latency ~100-300ms depending on depth + 2D-map flag. Returns {seed, neighbors: [{memory_id, distance, content_preview}], map_2d?: [{x, y, id}]}.

NameTypeReqDescription
include_2d_mapboolean–If true, include 2D coordinates (UMAP/PCA projection) for each returned memory.
max_depthinteger–BFS depth from the seed. Higher = wider exploration. Hard-capped at 4.
memory_idintegeryesInteger ID of the memory to start navigation from.
window_hoursnumber–Co-access time window in hours: two memories accessed within this window count as co-accessed. Smaller = stricter.

Structured output declared, but exposes no named fields.

No examples provided.

predict ~274

Record a falsifiable prediction before its outcome is known: the claim it belongs to, what is expected to happen, the test that would settle it, and the confidence held right now (0 to 1). The row stays open until `resolve_prediction` settles it against an observation, and `calibration` then scores the confidence against what actually happened. Write the prediction BEFORE running the test: a confidence stated afterwards measures nothing. Distinct from `remember` (stores what happened, not what is expected) and from `ingest_findings` (consumes another tool's findings run). Mutates the predictions table. Returns {prediction_id, status}.

NameTypeReqDescription
claimstringyesThe explanation or belief this prediction puts at risk.
confidencenumberyesHow likely the author thinks the prediction is to hold, 0 to 1. A constant 0.5 scores 0.25, the point where a forecast carries no information.
directory––Absolute project directory this belongs to.
domain––Cognitive domain; omit to leave unscoped.
memory_id––Memory this prediction is about, when there is one.
predictionstringyesWhat is expected to happen, in terms an observation can contradict.
teststringyesThe observation or experiment that would settle it.

Structured output declared, but exposes no named fields.

No examples provided.

query_methodology ~262

Read the user's cognitive profile for the current domain from the cached profiles.json and enrich it with hot memories + any fired prospective triggers matching the current cwd / first_message. Profile fields: thinking style (Felder-Silverman), entry patterns, recurring patterns, blind spots, cross-domain bridges, behavioral feature activations. MANDATORY at session start so subsequent reasoning is calibrated to the user's tendencies. Distinct from `rebuild_profiles` (full rescan from JSONL transcripts, much slower), `detect_domain` (just classifies, no profile body), and `list_domains` (overview across all domains). Read-only on profiles.json; mutates triggered_count for any prospective triggers that fire. Latency <50ms (cached). Returns the full profile dict + hotMemories + firedTriggers, or coldStart=true if no profile exists yet (then call `rebuild_profiles`).

NameTypeReqDescription
cwd––Absolute current working directory; primary signal for domain detection (last 3 path segments + git root).
first_message––The first user message of the session. Used for keyword-based domain inference and to fire keyword-trigger prospective memories.
project––Claude Code project identifier (slugified path). Falls back to derivation from cwd when omitted.

Structured output declared, but exposes no named fields.

No examples provided.

rate_memory ~272

Record a usefulness verdict for a memory that just surfaced in recall: increments useful_count when helpful and recomputes metamemory confidence as useful_count / access_count (Nelson & Narens 1990 framework). High-confidence memories resist heat decay and rank higher in future recalls; persistently unhelpful memories drift toward archival. Use this whenever a recalled memory either solved the problem or wasted attention — the feedback loop is what keeps recall accurate. Distinct from `forget` (deletes), `anchor` (pins, doesn't score), and `validate_memory` (filesystem-ref staleness, not user verdict). Mutates the memories table (access_count, useful_count, confidence). Latency ~20ms. Returns {rated, memory_id, useful, access_count, useful_count, confidence, content_preview}.

NameTypeReqDescription
memory_idintegeryesInteger ID of the memory to rate (returned by recall).
query––Optional: the query that surfaced this memory. When provided, the handler records a (raw_ce_score, useful) sample for the reranker's Platt calibrator (AF-2 feedback loop). Omit if the memory was not…
usefulbooleanyestrue if the memory was helpful for the current task; false if it was noise or misleading.

Structured output declared, but exposes no named fields.

No examples provided.

rebuild_profiles ~243

Full rescan of Claude Code session data to rebuild methodology profiles from scratch. Walks ~/.claude/projects/, parses JSONL transcripts, groups by project, and re-derives per-domain cognitive style (Felder-Silverman), entry patterns, blind spots, and cross-domain bridges via the profile_assembler pipeline. Use this on first install, after a major workflow change, or when `query_methodology` returns coldStart=true. Skipped automatically if profiles are <1h old unless force=true. Distinct from `query_methodology` (read the cached profile, no rescan), `record_session_end` (incremental EMA update for one session, no full rebuild), and `detect_domain` (just classifies, doesn't rebuild). Mutates ~/.claude/methodology/profiles.json. Latency <10s on typical histories. Returns {rebuilt_domains, total_sessions, duration_ms}.

NameTypeReqDescription
domain––Rebuild only this single domain instead of the full set. Useful for fast targeted refresh after heavy work in one area.
forceboolean–Bypass the 1-hour freshness check and rebuild even if profiles were updated recently.

Structured output declared, but exposes no named fields.

No examples provided.

recall ~1,099

Retrieve memories from the Cortex store using intent-adaptive PG recall (server-side fusion of vector + FTS + trigram + heat + recency: a weighted sum on PostgreSQL, rank-based WRRF on SQLite) followed by FlashRank cross-encoder reranking and production enrichments (prospective memory injection, Hebbian co-activation strengthening, neuro-symbolic rules, strategic ordering to mitigate Lost-in-the-Middle, Liu et al. 2023). Use this before any non-trivial work to check what Cortex already knows; running blind is unacceptable when recall takes ~200ms. Distinct from `recall_hierarchical` (returns the L0/L1/L2 cluster topology, not a flat ranked list), `navigate_memory` (graph BFS over co-access edges from one seed memory), and `get_causal_chain` (entity-graph traversal, not memory recall). Not read-only: every returned memory is recorded as a hippocampal replay event — access_count/replay_count increment and hippocampal_dependency decays (CLS-B, Ketz et al. 2023) — so repeat calls are not idempotent (`track_replay_event`, `replay_tracking.py`). Returns ranked memories with scores, heat, and source. Bare ADR-NNNN queries resolve the canonical wiki page before semantic retrieval; project_root explicitly selects a tracked project wiki. Page longer decisions with the same query and content_offset.

NameTypeReqDescription
agent_topic––Restrict to memories produced under a specific agent context tag (subagent topic isolation).
content_offsetinteger–With ``memory_id``: start the returned content at this character offset. Page through contents larger than the response budget by re-calling with the previous offset + the length of the slice receive…
cross_domainboolean–Opt in to cross-domain memories in the spreading-activation entity-graph expansion stage only. The primary fused search remains scoped to ``domain``. When true, expansion may inject memories from oth…
directory––Restrict results to memories tagged with a specific absolute project directory.
domain––Restrict results to a single cognitive domain. Omit to search across all domains.
exact_idboolean–Require query to be an exact ADR-NNNN identity; missing IDs never fall back to semantic search.
formatstring–Wire encoding for the ``memories`` list. ``json`` (default) returns an array of memory objects. ``tabular`` declares the field names once in a ``columns`` header and returns each memory as a cell arr…
include_low_signalboolean–When false (default), drops memories tagged as auto-captures (``auto-captured``, ``tool:edit``, ``_backfill``, ``stage-N``, ``session-summary``, …) so curated content (ADRs, lessons, conventions) sur…
include_relatedboolean–When true, inline a one-hop relation walk per recalled memory: ``related.versions`` (supersession-chain neighbors — the fact this row replaced and the one that replaced it) and ``related.entities`` (…
max_resultsinteger–Maximum number of ranked memories to return after reranking.
memory_id––Fetch one memory by id, bypassing search. Use to retrieve the full content of a result that came back with ``truncated: true``. ``query`` is ignored when set (still required by the schema; pass the i…
min_heatnumber–Minimum heat (0.0-1.0) for a memory to be considered. Lower = include colder/older memories. Use 0 to include everything.
project_root––Project with an explicitly configured tracked wiki; never inferred from domain.
querystringyesNatural-language query describing what to retrieve. Free text; intent (temporal/causal/semantic/entity/multi-hop) is auto-classified to weight the fusion signals.
sa_modestring–``tail`` (default) appends spreading-activation candidates only when the result list is shorter than ``max_results``, without reordering or rescoring existing results. ``augment`` applies expansion b…
tags_all––Positive tag filter (AND): keep only memories that carry ALL of the listed tags. Applied after the fused recall pipeline, at the same stage as the low-signal filter.
tags_any––Positive tag filter (OR): keep only memories that carry at least one of the listed tags. Applied after the fused recall pipeline, at the same stage as the low-signal filter. Pass ``tags_any=["archiva…
NameTypeReqDescription
columnsarray–Present only when ``format`` is ``tabular``: the field names, in order, that each row array in ``memories`` carries. Declared once so field names are not repeated per memory.
countinteger–Number of memories returned.
formatstring–The encoding applied to ``memories``: ``json`` (array of objects, default) or ``tabular`` (array of cell arrays + a ``columns`` header). Self-describes the response so a client reads rows correctly w…
intentstring–Classified query intent that drove the signal-weight profile.
memoriesarrayyesRanked list of matching memories. Best result is index 0. With ``format: "json"`` (default) each element is a memory object; with ``format: "tabular"`` each element is a cell array whose fields are n…
receipt_idinteger–Append-only injection receipt recording exactly the memories in this response. Absent when no memory was injected or the receipt write failed.

No examples provided.

recall_hierarchical ~422

Retrieve memories via the fractal three-level hierarchy (L0=individual memories, L1=topic clusters, L2=root clusters), with adaptive level weighting from query length: short queries weight toward broader L2 clusters (you're scanning a topic), long queries toward specific L0 memories (you have a precise question). REQUIRES either `domain` or `memory_ids` to bound the tree build. Use this instead of `recall` when you want the topology of the memory space, not just a flat ranked list. Distinct from `recall` (flat WRRF result, no hierarchy), `drill_down` (consumer of this tool's output, navigates one level deeper into a returned cluster), and `navigate_memory` (graph traversal, not cluster tree). Not read-only: every surfaced memory is recorded as a hippocampal replay event — access_count/replay_count increment and hippocampal_dependency decays — so repeat calls are not idempotent (`track_replay_event`, `replay_tracking.py`). Latency ~150-300ms on domain-scoped calls. Returns {hierarchy: [{cluster_id, level, label, score, members?}], total_clusters}.

NameTypeReqDescription
cluster_thresholdnumber–Cosine-similarity threshold used when forming L1 clusters. Higher = tighter clusters, more groups.
domain––Restrict the hierarchy to a single cognitive domain. Either this OR memory_ids is REQUIRED (ADR-0045 R3).
max_resultsinteger–Maximum number of memories returned across all levels.
memory_ids––Explicit subset of memory IDs to cluster. Either this OR domain is REQUIRED (ADR-0045 R3). Use when you want the tree over a pre-filtered candidate set (e.g., output of `recall` or `navigate_memory`).
min_heatnumber–Minimum heat (0.0-1.0) for a memory to be considered.
querystringyesNatural-language query. Length influences level weighting.

Structured output declared, but exposes no named fields.

No examples provided.

recall_skills ~217

Retrieve learned procedures (recurring successful tool-use sequences) that apply to the current situation — domain, working directory, and recent actions. Procedural memory is retrieved by SITUATION, not by content similarity, which is what distinguishes it from recall_memories (episodic/semantic). Read-only; returns each skill's action sequence, proficiency, use count, and a human-readable rationale. Additive surface — does not alter declarative recall.

NameTypeReqDescription
cwd––Working directory of the current session; matched against the directory context each skill was learned in.
domain––Cognitive-profile domain id to match skills against (e.g. from detect_domain). Omit to match on the other situation signals only.
min_proficiencynumber–Proficiency floor in [0, 1]; skills below it are filtered out before ranking.
recent_tools––Names of the most recently used tools, oldest first; matched against each skill's action sequence.
top_kinteger–Maximum number of skills to return.
NameTypeReqDescription
countinteger––
skillsarrayyesApplicable procedures, strongest first.

No examples provided.

record_session_end ~400

Record session-end signals (tools used, duration, turns, keywords) and apply an incremental EMA update to the matching domain's cognitive profile. Also stores an episodic session-summary memory, runs a session self-critique (overall score + top improvement suggestions — each non-empty suggestion is ALSO persisted as its own 'lesson-candidate'-tagged memory, M-D6, so it is never lost the moment this call returns), and creates prospective triggers from any TODO/decision keywords detected in the message stream. Normally invoked automatically by the SessionEnd hook — call manually only when reconstructing offline sessions. Distinct from `rebuild_profiles` (full rescan from scratch, throws away the cache) and `query_methodology` (read-only profile retrieval). Mutates profiles.json + session-log.json + memories table. Latency <200ms. Returns {domain, profile_updated, session_score, critique, lessonCandidatesStored, memory_id?}.

NameTypeReqDescription
cwd––Working directory the session ran in.
domain––Cognitive domain ID. Auto-detected from cwd/project if omitted.
duration––Session duration in milliseconds.
keywords––Key topics extracted from the session.
project––Claude Code project identifier (slugified path). Falls back to derivation from cwd.
session_idstringyesUnique session identifier (Claude Code session UUID or similar). Used as the row key in the session log. Q2 alignment note: intentionally NOT auto-resolved to the transcript-stem canonical identity —…
tools_used––Names of MCP/CLI tools used during the session.
turn_count––Number of assistant turns in the session.
NameTypeReqDescription
critiquestring–Post-session improvement suggestions (may be empty).
domainstringyesDomain id the session was attributed to.
lessonCandidatesStoredinteger–M-D6: count of critique.top_suggestions persisted as 'lesson-candidate'-tagged memories (source='self-critique', write_class='deliberate'). See `lesson_promotion` for the read-only tool that proposes…
session_memory_idstring–UUID of the episodic memory summarising this session.
triggers_createdinteger–Count of prospective triggers extracted from session TODOs/decisions.
updatedbooleanyesTrue if the profile was mutated.

No examples provided.

remember ~1,115

Store a memory through the flat 4-signal predictive-coding write gate (embedding, entity, temporal, and structural novelty — Friston-inspired prediction-error gating). Novel surprising content passes; redundant content is rejected or merged with the most-similar existing memory via active curation. After write: thermodynamic tagging, knowledge-graph entity extraction, neuromodulation (DA/NE/ACh/5-HT), engram allocation. FOR A DURABLE CLAIM (a fact, decision, or lesson meant to outlive this session), include a checkable reference in `content` — a file path, a git commit SHA, a URL, or a content-addressed artifact digest — so it can grade above 'unverifiable' (see the `provenance` response field and coding-standards.md §8, 'no source, no implementation'); testimony without one is still stored, just graded accordingly. Use this after any non-trivial discovery, fix, decision, or lesson — if it would surprise a future session, store it. Distinct from `anchor` (pins an EXISTING memory, doesn't create), `wiki_write` (creates an .md page, not a memory row), `validate_memory` (re-grades EXISTING memories with network-verified checks, not a write path), and `add_rule` (recall-time filter, not stored content). Mutates memories + entities + relationships tables. Latency ~50-100ms. Returns {stored, memory_id, action: stored|merged|rejected, reason, provenance}.

NameTypeReqDescription
agent_topic––Subagent context tag for topic isolation; recall can scope to a single agent persona.
contentstringyesThe memory content to store. Plain prose works; markdown is preserved. Aim for a single fact, decision, or lesson with enough context to be intelligible standalone.
created_at––Original ISO-8601 timestamp for imported/backfilled memories. Omit for live captures (server timestamps the row).
directory––Absolute project directory the memory belongs to. Defaults to the current working directory; resolved against git-root for stable domain mapping.
domain––Cognitive-domain override. Auto-detected from directory if omitted; only set this when crossing project boundaries.
forceboolean–Bypass the predictive-coding write gate and always insert. Use sparingly — anchored facts and curated lessons only. Combined with supersedes_id this is the sovereign human correction: the gate is byp…
initial_heat––Initial heat override [0.0, 1.0] for backfill and import paths. Defaults to 1.0 for live writes. Surprise boost still applies on top.
is_globalboolean–If true, the memory is visible across all projects/domains. Use for genuinely global facts (e.g., user identity, operating principles).
origin_tool––Name of the tool producing content on automatic capture paths. Capture origin is determined from this channel, not from content text. Network-tool output cannot use content-derived write-gate bypasse…
source––Origin tag for provenance and replay scoring. The enum below is the whole of what a caller may set; `wiki://<path>` is reserved for the pointer memories wiki_write/wiki_adr register in-process, and a…
supersedes_id––ID of the memory this content replaces (append-only correction). A new row is inserted, the target's superseded_by_id is compare-and-set to it, and recall demotes the old version. Rejected when the t…
tags––Free-form tags for filtering and rules. Convention: use lowercase, hyphenated, and include at least one category (e.g., 'bug-fix', 'decision', 'lesson').
write_class––Explicit write class — the caller states what kind of write this is; no source-string inference happens when this is set. One of: 'auto' (unattended tool-output capture — subject to the standard nove…
NameTypeReqDescription
actionstringyesstored=new row; merged=folded into the most-similar existing memory; rejected=redundant per the predictive-coding gate; superseded=new row replaces an older version (append-only edge posted); superse…
current_superseded_by_idinteger|null–The version that currently supersedes the target (present on supersede rejection/conflict so the caller can rebase).
heatnumber–Final heat assigned to the new/merged memory.
memory_idinteger–ID of the resulting memory row (PG bigint). Present when stored=true.
merged_withinteger–ID of the existing memory (PG bigint) when action=merged.
provenanceobject–Write-time provenance feedback (M-D5): grade in {verified, verifiable, unverifiable} computed from LOCAL-ONLY checks (file existence, git commit lookup, artifact digest — no network) on this content'…
reasonstring–Human-readable explanation of the gate decision (e.g. 'low surprise', 'high entity overlap').
storedbooleanyesTrue if content landed in the memory store (as new row or a merge into an existing one).
supersede_target_idinteger–Requested supersession target when the supersede path rejected or conflicted.
superseded_idinteger–ID of the replaced memory when action=superseded.
write_classstring–The write class actually persisted — the explicit argument if provided, otherwise the source-based fallback default ('deliberate'). Present when action=stored|superseded.

No examples provided.

resolve_prediction ~242

Settle an open prediction: what was observed, the verdict (confirmed, refuted, or abandoned when the test was never run), the kind of source that settled it (review, ci, test, manual) and a reference to that source, such as a review-comment URL or a CI run id. Cortex does not fetch the evidence and knows nothing about your host or repository: the caller maps its own convention onto these fields, so the same contract works in any repository. A resolution carrying no reference is refused, and a prediction resolves once. `calibration` scores the resolved rows. Mutates the predictions table. Returns {prediction_id, verdict, resolved}.

NameTypeReqDescription
observedstringyesWhat actually happened, in the terms the test set.
prediction_idintegeryesThe open prediction to settle, from `predict`.
source_kindstringyesWhat settled it.
source_refstringyesWhere that evidence lives: a URL, a run id, a commit, anything a reader can follow.
verdictstringyesconfirmed or refuted score the author's confidence; abandoned records that the test was never run and scores nothing.

Structured output declared, but exposes no named fields.

No examples provided.

seed_project ~359

Bootstrap the memory store from an existing codebase via a five-stage structural sweep — each discovery is stored through the standard `remember` write gate. Distinct from `codebase_analyze` (tree-sitter AST per file, much deeper, slower), `backfill_memories` (Claude Code conversation transcripts, not the codebase itself), `wiki_seed_codebase` (seeds the wiki tree from existing markdown, not memories), and `ingest_codebase` (downstream consumer of analyzer output). Latency varies (~5-60s depending on tree size). Stages: (1) config extraction (package.json, pyproject.toml, Cargo.toml, go.mod...), (2) documentation harvesting (README, CLAUDE.md, docs/, ADRs, changelogs), (3) entry-point scan (main.py, index.js, cmd/, __main__.py), (4) CI/CD detection (.github/workflows, Makefile, Dockerfile, tox.ini), and (5) structural summary (top-level layout, language detection, module map). Each discovery is stored via remember (subject to the write gate). Use this on first onboarding to a project. Returns counts and stored memory IDs.

NameTypeReqDescription
directory––Root directory of the codebase to seed. Defaults to the current working directory.
domain––Domain to tag seeded memories with. Auto-detected from the directory name if omitted.
dry_runboolean–Report discoveries without writing to the memory store. Always run a dry_run first to inspect what would be seeded.
max_file_size_kbinteger–Skip files larger than this many kilobytes during docs and config harvesting. Prevents binary blobs from being summarized.

Structured output declared, but exposes no named fields.

No examples provided.

sync_instructions ~274

Render the project's top hot memories (decisions, patterns, conventions, lessons) as bullets and write them into CLAUDE.md between `<!-- cortex:memory-insights:start -->` markers — adding the section if absent, refreshing it in-place if present. Closes the loop between Cortex's thermodynamic memory and the Claude Code instruction file loaded at every session start, so the next session begins informed without manual querying. Use this after a productive session, or on a periodic schedule. Distinct from `recall` (transient API response, not persisted to file), `narrative` (prose summary, not actionable bullets), and `anchor` (per-memory pinning, no CLAUDE.md write). Mutates the CLAUDE.md file in `directory`. Latency ~200ms. Returns {written, path, insight_count, dry_run, preview?}.

NameTypeReqDescription
directory––Project directory containing the CLAUDE.md to update. Defaults to current working directory.
dry_runboolean–Preview the rendered section without writing to CLAUDE.md.
max_insightsinteger–Maximum number of insight bullets to include in the section.
min_heatnumber–Minimum heat (0.0-1.0) for a memory to qualify as an insight.

Structured output declared, but exposes no named fields.

No examples provided.

unified_search ~290

Unified search across Cortex memories and the automatised-pipeline code graph. Runs cortex.recall and ap.search_codebase in parallel, then merges via Reciprocal Rank Fusion (k=60). Returns a single ranked list with ``source_ranks`` on every record so the UI can explain where each hit came from. Falls back to Cortex-only when AP is disabled (CORTEX_MEMORY_AP_ENABLED=0) or unreachable (status=partial). An explicit project_root adds authored wiki pages matching every query token. Bare ADR-NNNN or exact_id queries resolve only the canonical wiki page, before memory/AP calls.

NameTypeReqDescription
cross_domainboolean–Forwarded to cortex.recall's spreading-activation cross-domain opt-in. Defaults to false, excluding candidates reached from other domains.
domain––Optional Cortex domain filter.
exact_idboolean–Require query to be an exact ADR-NNNN identity; missing IDs never fall back to semantic search.
kinteger–RRF constant (default 60).
max_resultsinteger–Top-N of the fused list.
project_root––Project with an explicitly configured tracked wiki; never inferred from domain.
querystringyesNatural-language query.
sa_modestring–Forwarded to cortex.recall's spreading-activation mode. Defaults to ``tail``; see recall's schema for mode semantics.

Structured output declared, but exposes no named fields.

No examples provided.

validate_memory ~616

Graded provenance verifier (I6-D6): checks every reference a memory makes — file paths, git commit SHAs, URLs (bounded HEAD sample), content-addressed artifact digests (sha256[:16] recomputation) — and citations (DOI/arXiv, recognized but never auto-verified). Writes two things: (1) is_stale, from FILE PATHS ONLY (URLs/commits/digests never feed the staleness score — a dead URL does not invalidate a historical fact); bidirectional since I6-D6, a stale memory whose file refs all resolve again is rehabilitated back to is_stale=false. (2) source_attribution, a provenance grade in {verified, verifiable, unverifiable} — the worst outcome among the memory's checkable references. This handler is the sole writer of that grade; it overwrites any prior value on each verification pass. All-memories scope is cursor-paginated via after_id, 1000 per call (below the full active-store size on large corpora — page with the returned next_after_id). Use this after large refactors, file moves, or before a recall that must not return dead links. Scope to one memory, a domain, a directory, or all memories. Distinct from `forget` (deletes memories outright), `rate_memory` (user verdict on usefulness, not filesystem reality), and `wiki_consolidate` (wiki pages, not memories). Mutates is_stale and source_attribution unless dry_run=true. Latency varies (~100ms-30s depending on scope, ref count, and URL sample size). Returns {validated, stale_found, stale_updated, destaled, graded, dry_run, next_after_id, reports: per-memory breakdown}.

NameTypeReqDescription
after_idinteger–Pagination cursor for the all-memories scope: only memories with id > after_id are considered. Pass the previous call's next_after_id to continue a sweep.
base_dir––Base directory used to resolve relative paths inside memory content. Defaults to the current working directory.
directory––Validate every memory tagged to this absolute project directory.
domain––Validate every memory tagged to this cognitive domain.
dry_runboolean–Assess and report results without updating is_stale or source_attribution in the database.
memory_id––Validate a single memory by its integer ID. Mutually exclusive with the domain/directory scopes.
staleness_thresholdnumber–Score in [0,1] above which a memory is marked is_stale. 0 = mark anything with one missing reference; 1 = mark only memories with all references missing. Computed from file-path references only.
url_check_limitinteger–Max distinct URLs HEAD-checked over the network in this call. URLs beyond the limit are graded as uncheckable-this-pass (verifiable), never penalized as dead — bounds network fan-out on large sweeps.

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the io.github.cdeust/hypermnesia-mcp server?

io.github.cdeust/hypermnesia-mcp runs locally as a PyPI package, launched with uvx hypermnesia-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · hypermnesia-mcp

# add to Claude Code
claude mcp add cdeust-hypermnesia-mcp -- uvx hypermnesia-mcp
Common questions

What is the io.github.cdeust/hypermnesia-mcp server?

io.github.cdeust/hypermnesia-mcp is listed in the public MCP registry as io.github.cdeust/hypermnesia-mcp. Persistent memory for AI agents, 36 cited neuroscience mechanisms, local-first, hybrid retrieval. This page covers its PyPI package (hypermnesia-mcp).

Is the io.github.cdeust/hypermnesia-mcp server safe to use?

io.github.cdeust/hypermnesia-mcp scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cdeust/hypermnesia-mcp server expose?

io.github.cdeust/hypermnesia-mcp exposes 57 tools: query_methodology, detect_domain, rebuild_profiles, list_domains, record_session_end, and 52 more. Their descriptions and schemas cost roughly 20,203 tokens of context every time the server is loaded.

Is the io.github.cdeust/hypermnesia-mcp server still maintained?

io.github.cdeust/hypermnesia-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.cdeust/hypermnesia-mcp server under?

io.github.cdeust/hypermnesia-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.