Total Agent Memory
PYPI · TOTAL-AGENT-MEMORY
Persistent local memory for coding agents: temporal knowledge graph, procedural and episodic recall
Available components
Last scanned (2 hours ago)
Scores higher than 0% of PyPI servers
Category Memory and Knowledge
Recent critical change
CVE-2026-112398 affects this package (29 Oct 2026). See the changelog before you install this server.
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 Security74
- No malware found by supply-chain analysis.Pass
- CVE check failed: an unpatched critical CVE affects this package; the score is capped at 0. See how to fix → View diagnostics → Fail
- Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- Dependency health was assessed across the 119 of 121 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability66
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 8844 tokens (~111/item across 79 items; 79 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 Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage82
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 46% of tool parameters carry a description.Partial
Tool Safety79
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 1 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "memory_eval_locomo" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 80 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
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
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 0
- Stability: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- 4 Nov 26 0
- Malware scan: pass → unverified ▼ security
- 1 Nov 26 0
- Malware scan: unverified → pass ▲ security
- 31 Oct 26 0
- Malware scan: pass → unverified ▼ security
- Package version: 14.9.0 → 14.10.0 functional
- 30 Oct 26 0
- Malware scan: unverified → pass ▲ security
- 29 Oct 26 −32
- CVE-2026-112398 affects this package: none ▼ critical
- CVE-2026-112403 affects this package: none ▼ critical
- CVE-2026-96639 affects this package: none ▼ critical
- CVE-2026-112393 affects this package: none ▼ critical
- CVE-2026-112900 affects this package: none ▼ critical
- Score status: scored → failed ▼ critical
- Known CVEs: CVE check failed: an unpatched critical CVE affects this package; the score is capped at 0. critical
- Malware scan: pass → unverified ▼ security
- CVE-2026-45833 no longer affects this package ▲ security
- CVE-2026-45829 no longer affects this package ▲ security
- Injection markers: unverified → pass ▲ security
- Stability: unverified → pass ▲ security
- Schema quality: 8028 → 8844 ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Package version: 14.9.0 → 14.10.0 functional
- 28 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Package version: 14.7.0 → 14.9.0 functional
- 27 Oct 26 −15
- Malware scan: pass → unverified ▼ security
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/total-agent-memory@14.10.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 67 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-2wm9-hf6c-p5cr | CVE-2026-45830 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | no |
| GHSA-36p7-vc44-83pf | CVE-2026-45833 | critical | no | |
| GHSA-f4j7-r4q5-qw2c | CVE-2026-45829 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | no |
| GHSA-xph7-9rjv-w5fr | CVE-2026-45831 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | no |
| PYSEC-2026-311 | CVE-2026-45829 | none | no | |
| PYSEC-2026-3813 | CVE-2026-45830 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | no |
| PYSEC-2026-3814 | CVE-2026-45833 | none | no | |
| PYSEC-2026-3815 | CVE-2026-45831 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | no |
| GHSA-22hg-r758-rrw9 | CVE-2026-112390 | high | yes | |
| GHSA-24rc-8hj2-v98c | CVE-2026-96638 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H | yes |
| GHSA-254f-3936-288h | CVE-2026-112391 | medium | yes | |
| GHSA-27h8-gf7j-v5hc | CVE-2026-112392 | high | yes | |
| GHSA-332p-7hrc-92wf | CVE-2026-112393 | critical | yes | |
| GHSA-3j72-p6qg-6xp7 | CVE-2026-96642 | high | yes | |
| GHSA-4558-3h8r-v8xp | CVE-2026-112394 | medium | yes | |
| GHSA-462x-pgg6-55fp | CVE-2026-112395 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L | yes |
| GHSA-4rm8-3hmm-39fg | CVE-2026-96641 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H | yes |
| GHSA-4rr5-89j8-mwwm | CVE-2026-112396 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-58r4-6rv3-gfh8 | CVE-2026-112397 | high | yes | |
| GHSA-5x8w-8jj5-q52h | CVE-2026-112398 | critical | yes | |
| GHSA-5xm2-6676-qcp9 | CVE-2026-112399 | high | yes | |
| GHSA-654x-cwwv-5j9c | CVE-2026-114501 | medium | yes | |
| GHSA-65qm-jvmh-6pqg | CVE-2026-112400 | high | yes | |
| GHSA-74r2-7ff9-mjj2 | CVE-2026-112401 | medium | yes | |
| GHSA-78g4-xqwv-q3g8 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H | yes | |
| GHSA-7mwm-ghpf-9vrm | CVE-2026-112402 | high | yes | |
| GHSA-8g5g-8vmr-9782 | CVE-2026-112403 | critical | yes | |
| GHSA-9v9v-9qvf-h2hj | CVE-2026-96644 | high | yes | |
| GHSA-c6hw-5grf-ff96 | CVE-2026-112404 | high | yes | |
| GHSA-cp9v-662q-vvx9 | CVE-2026-112405 | high | yes | |
| GHSA-f2g6-542v-9j58 | CVE-2026-112406 | high | yes | |
| GHSA-fc9g-5qg7-mf45 | CVE-2026-112891 | medium | yes | |
| GHSA-g4qv-2jxx-769h | CVE-2026-96643 | high | yes | |
| GHSA-g7cr-3p24-7wf7 | CVE-2026-96778 | high | yes | |
| GHSA-g842-9rc4-69pw | CVE-2026-96637 | high | yes | |
| GHSA-gg2r-wvfm-q9rx | CVE-2026-112892 | high | yes | |
| GHSA-j4m9-6w36-pw47 | CVE-2026-112893 | high | yes | |
| GHSA-jg86-v3jv-hrpm | CVE-2026-112894 | high | yes | |
| GHSA-mrfp-p49p-3hf2 | CVE-2026-96640 | high | yes | |
| GHSA-p4wg-p73j-c528 | CVE-2026-112895 | high | yes | |
| GHSA-p8hx-v2p6-rp84 | CVE-2026-96636 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H | yes |
| GHSA-pchr-8j38-3x4p | CVE-2026-112896 | high | yes | |
| GHSA-q45j-58j2-45rg | CVE-2026-112897 | high | yes | |
| GHSA-rfgq-q3w2-pmv2 | CVE-2026-112898 | medium | yes | |
| GHSA-v9pv-5gc8-w2m6 | CVE-2026-96639 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | yes |
| GHSA-vx6w-vv9f-6gvg | CVE-2026-112899 | medium | yes | |
| GHSA-w889-685w-c8fh | CVE-2026-112900 | critical | yes | |
| GHSA-xgh8-jp6q-p5x8 | CVE-2026-112901 | medium | yes | |
| GHSA-xvh5-g6gv-559v | CVE-2026-112902 | high | yes | |
| PYSEC-2026-4326 | CVE-2026-112392 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Showing 50 of 67 vulnerabilities.
Background: What a vulnerability scan can and cannot prove →
Dependencies 119 packages
| Packages resolved | 119 |
|---|---|
| Stale | 13 |
| No linked repository | 2 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
Background: SBOMs and build attestations, explained →
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 →
analogize ~70
Find past solutions/lessons from OTHER projects whose feature set overlaps with the given problem text (Jaccard similarity).
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_project | string | – | – |
| limit | integer | – | – |
| min_score | number | – | – |
| only_types | array | – | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
benchmark ~48
Run the eval harness: recall_at_k, prevention_rate, latency percentiles. Loads scenarios from evals/scenarios/*.json by default.
| Name | Type | Req | Description |
|---|---|---|---|
| scenarios_path | string | – | Custom scenarios dir or file |
No output schema declared.
No examples provided.
classify_task ~39
v8.0: classify task into L1-L4 complexity + suggested phases.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | yes | – |
| project | string | – | – |
No output schema declared.
No examples provided.
file_context ~62
BEFORE editing a file, call this to surface past errors, lessons, and related rules for that file path. Returns risk_score ∈ [0, 1].
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| path | string | yes | – |
| project | string | – | – |
No output schema declared.
No examples provided.
ingest_codebase ~69
Parse a file or directory into semantic AST chunks (functions, classes, methods) across 8 languages. Returns chunk count + sample.
| Name | Type | Req | Description |
|---|---|---|---|
| include | array | – | Extension allowlist e.g. ['.py','.go'] |
| path | string | yes | – |
| sample_limit | integer | – | – |
No output schema declared.
No examples provided.
kg_add_fact ~130
Record a temporal fact assertion (subject, predicate, object). Supersedes any prior assertion with same (s,p) and different object — full history is preserved. Use for evolving architectural decisions.
| Name | Type | Req | Description |
|---|---|---|---|
| confidence | number | – | – |
| context | string | – | – |
| invalidate_previous | boolean | – | – |
| object | string | yes | – |
| predicate | string | yes | – |
| project | string | – | – |
| subject | string | yes | – |
| valid_from | string | – | ISO 8601 time the fact became true; default now. Back-dated facts close and are closed by their neighbours. |
No output schema declared.
No examples provided.
kg_at ~85
Point-in-time query: return fact assertions valid at `timestamp` (ISO 8601). Omit timestamp for currently-valid facts.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| object | string | – | – |
| predicate | string | – | – |
| project | string | – | – |
| subject | string | – | – |
| timestamp | string | – | ISO 8601 or omit for now |
No output schema declared.
No examples provided.
kg_invalidate_fact ~76
Close a currently-valid fact assertion. History is retained.
| Name | Type | Req | Description |
|---|---|---|---|
| at | string | – | ISO 8601 time the fact stopped being true; default now |
| object | string | yes | – |
| predicate | string | yes | – |
| project | string | – | – |
| reason | string | – | – |
| subject | string | yes | – |
No output schema declared.
No examples provided.
kg_timeline ~46
Full chronological history of assertions for a subject.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| predicate | string | – | – |
| project | string | – | – |
| subject | string | yes | – |
No output schema declared.
No examples provided.
learn_error ~108
Structured error capture: file, error, root_cause, fix, pattern. After N (default 3) errors share the same pattern, a prevention rule is auto-synthesized into the rules table.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| error | string | yes | – |
| file | string | yes | – |
| fix | string | yes | – |
| pattern | string | yes | – |
| project | string | – | – |
| root_cause | string | yes | – |
| severity | string | – | – |
No output schema declared.
No examples provided.
list_intents ~55
List recent user prompts from the intents table, newest first. Filter by project and/or session. Max 500 rows.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| project | string | – | – |
| session_id | string | – | – |
No output schema declared.
No examples provided.
memory_answer ~228
Generate and verify a cited answer using the configured reasoning LLM. Evidence carries recording dates; when records about the same subject disagree, the latest one gives the current value and the answer names the value it replaced. First runs negative retrieval: a contradiction-seeking second search; a score >= 0.60 hands both sides to the reader and answers with a caveat (MEMORY_CONTRADICTION_POLICY=abstain refuses instead), 0.30-0.60 answers with a caveat (see `negative`); MEMORY_CONTRADICTION_SCORER=jev scores the pairs with TypeSafe's Jev instead of the LLM. Up to one missing-relation retrieval and eight LLM calls including inversion retry and bounded quote repair. Explicit project required. Citation offsets refer to returned evidence content. Ordinary recall remains local.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | – | – |
| followup | boolean | – | – |
| limit | integer | – | – |
| max_bytes | integer | – | – |
| project | string | yes | – |
| query | string | yes | – |
| type | string | – | – |
No output schema declared.
No examples provided.
memory_associate ~114
Associative recall — brain-like spreading activation through knowledge graph. Finds memories through concept resonance, not keyword search. In 'composition' mode, finds minimum set of memories covering all needed concepts.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | – | – |
| min_coverage | number | – | Min coverage for composition mode (0.0-1.0) |
| mode | string | – | recall=find related, composition=build solution from parts |
| project | string | – | Filter by project |
| query | string | yes | Natural language query |
No output schema declared.
No examples provided.
memory_concepts ~60
List or search concepts in the knowledge graph.
| Name | Type | Req | Description |
|---|---|---|---|
| include_memories | boolean | – | Include linked knowledge records |
| limit | integer | – | – |
| query | string | – | Search concepts by name |
| type | string | – | Filter by node type |
No output schema declared.
No examples provided.
memory_consolidate ~92
Find and merge duplicate/similar knowledge records. Keeps the longest version, supersedes shorter duplicates. Reduces noise in recall results.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | If true, only show what would be merged |
| project | string | – | Consolidate only this project (optional) |
| threshold | number | – | Similarity threshold 0.0-1.0 (default 0.75) |
No output schema declared.
No examples provided.
memory_consolidate_status ~52
v11.0 W2-G: report the consolidation daemon state — per-project last-run, active locks, recent activity. Use to verify the idle-project worker is making progress without interfering with active work.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
memory_context_build ~66
Build optimal context for a query. Combines: spreading activation + knowledge graph + episodes + skills + self-model. The 'brain thinking' tool.
| Name | Type | Req | Description |
|---|---|---|---|
| max_tokens | integer | – | – |
| project | string | – | – |
| query | string | yes | What you need context for |
No output schema declared.
No examples provided.
memory_delete ~97
Delete a knowledge record. By default a soft delete: the record leaves search results and vectors but stays in the database. hard=true erases it for good, with its earlier versions, derived rows and its text in the raw call log (use for personal data or anything that must not be kept).
| Name | Type | Req | Description |
|---|---|---|---|
| hard | boolean | – | Erase permanently instead of hiding; cannot be undone |
| id | integer | yes | Knowledge record ID to delete |
No output schema declared.
No examples provided.
memory_entity_resolve ~118
v11.0 W1-F: resolve a mention to its canonical entity within a project+type. Cross-session coreference via name/alias index + embedding cosine. Returns canonical_id, matched_via, and is_new flag. Pronouns return -1.
| Name | Type | Req | Description |
|---|---|---|---|
| create_if_missing | boolean | – | – |
| mention | string | yes | – |
| project | string | – | – |
| threshold | number | – | Cosine similarity threshold for embedding match. |
| type | string | – | Entity type: person, technology, project, company, ... |
No output schema declared.
No examples provided.
memory_episode_recall ~75
Find past episodes (experiences). Search by concepts, outcome, project, or impact.
| Name | Type | Req | Description |
|---|---|---|---|
| concepts | array | – | – |
| limit | integer | – | – |
| min_impact | number | – | – |
| outcome | string | – | – |
| project | string | – | – |
| query | string | – | Search narrative text |
No output schema declared.
No examples provided.
memory_episode_save ~133
Save an episode — narrative of WHAT HAPPENED and HOW. Not just facts, but the journey: what was tried, what failed, what worked.
| Name | Type | Req | Description |
|---|---|---|---|
| approaches_tried | array | – | – |
| concepts | array | – | Key concepts involved |
| frustration_signals | integer | – | – |
| impact_score | number | – | 0.0-1.0, how significant |
| key_insight | string | – | The aha moment, if any |
| narrative | string | yes | 2-3 sentence narrative of what happened |
| outcome | string | yes | – |
| project | string | – | – |
No output schema declared.
No examples provided.
memory_eval_contradictions ~67
v11.0 Phase 8: runs contradiction_detector against a labelled fixture. Requires balanced/deep mode (LLM). Returns {status: 'not_implemented', ...} if module is unavailable.
| Name | Type | Req | Description |
|---|---|---|---|
| fixture_path | string | – | – |
| mode | string | – | – |
No output schema declared.
No examples provided.
memory_eval_entity_consistency ~44
v11.0 Phase 8: verifies entity_dedup canonicalization is stable across repeated saves of variant tag spellings.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | – |
No output schema declared.
No examples provided.
memory_eval_locomo ~128
v11.0 Phase 8: run the LongMemEval-style recall+prevention scenario suite (loaded from evals/scenarios/) against the live store. Forces MEMORY_MODE=fast by default. Returns {scenarios_total, scenarios_passed, recall_at_5, recall_at_10, latency_ms, mode, llm_calls_during_eval, network_calls_during_eval}.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Cap how many scenarios to run. |
| mode | string | – | – |
| scenarios_path | string | – | Optional override path. |
| top_k | integer | – | – |
No output schema declared.
No examples provided.
memory_eval_long_context ~70
v11.0 Phase 8: large-context recall scenario. Saves N records and queries them at the tail. Reuses eval_harness scenarios tagged 'long_context' if present.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | – |
| n_records | integer | – | – |
| top_k | integer | – | – |
No output schema declared.
No examples provided.
memory_eval_recall ~71
v11.0 Phase 8: generic recall benchmark on a dataset path or a small built-in fixture. Same payload shape as memory_eval_locomo.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_path | string | – | – |
| limit | integer | – | – |
| mode | string | – | – |
| top_k | integer | – | – |
No output schema declared.
No examples provided.
memory_eval_temporal ~58
v11.0 Phase 8: temporal recall using temporal_kg + temporal_filter. Returns {status: 'not_implemented', ...} when modules are missing.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| mode | string | – | – |
No output schema declared.
No examples provided.
memory_explain_search ~108
v11.0: same as memory_search_fast but returns a per-tier breakdown (fts/semantic/graph/fuzzy/hyde with raw scores, the merged RRF list, rerank_applied flag, embedding_space). Use to debug why a record did or didn't surface for a query.
| Name | Type | Req | Description |
|---|---|---|---|
| embedding_space | string|array | – | – |
| limit | integer | – | – |
| project | string | – | – |
| query | string | yes | – |
| type | string | – | – |
No output schema declared.
No examples provided.
memory_exploration_recall ~147
Before re-reading files to answer a codebase question, look up earlier exploration conclusions. Results are ranked by question similarity; each carries status 'fresh' (every source file is byte-identical to when the conclusion was recorded: reuse it) or 'stale' (changed_files / missing_files list what to re-read).
| Name | Type | Req | Description |
|---|---|---|---|
| include_stale | boolean | – | Also return memos whose files changed since recording |
| limit | integer | – | Maximum memos returned |
| project | string | yes | Project name |
| question | string | yes | The question being asked now |
| root | – | – | Absolute project root to verify files against; default: the server's working directory |
No output schema declared.
No examples provided.
memory_exploration_record ~194
Record the conclusion of a codebase exploration together with the SHA-256 of every file read to reach it. Call it after answering a structural question by reading files (how X is wired, where Y is decided). Paths are stored relative to `root` (default: the server's working directory); files outside root are refused. Up to 64 files of at most 32 MB each. Recording the same question again for the project replaces the earlier memo.
| Name | Type | Req | Description |
|---|---|---|---|
| conclusion | string | yes | What was concluded, self-contained enough to reuse without re-reading |
| files | array | yes | Files read to reach the conclusion: paths relative to root, or absolute paths inside root |
| project | string | yes | Project name |
| question | string | yes | The question the exploration answered, e.g. 'how is auth wired?' |
| root | – | – | Absolute project root directory; default: the server's working directory |
No output schema declared.
No examples provided.
memory_export ~64
Export all knowledge as JSON for backup or migration. Includes knowledge, sessions, relations and the agent action log.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | – | Export only this project (optional) |
| save_to_file | boolean | – | Save to <memory-dir>/backups/ (default true) |
No output schema declared.
No examples provided.
memory_extract_session ~116
Get pending session transcripts for knowledge extraction. Previous sessions are auto-captured on exit. Use action='list' to see pending, 'get' to read transcript, then save knowledge via memory_save, then 'complete' to mark as processed.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | list: show pending sessions. get: return transcript data. complete: mark as done. |
| chunk | integer | – | Chunk number for large transcripts (0-based) |
| session_id | string | – | Session ID (required for 'get' and 'complete') |
No output schema declared.
No examples provided.
memory_forget ~70
Apply retention policy: archive stale records (>180d, never recalled, low confidence), purge very old archived records (>365d), prune the agent action log past TAM_ACTION_LOG_RETENTION_DAYS. Keeps memory clean.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | If true, only show what would be affected |
No output schema declared.
No examples provided.
memory_get ~103
Batched fetch by ID — complement to memory_recall(mode='index'). Returns full content for ONLY the IDs the caller chose after inspecting an index. Typical 3-layer flow: recall(mode='index') → pick IDs → memory_get(ids=[...]).
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | 'summary' truncates content to 150 chars, 'full' returns everything |
| ids | array | yes | Knowledge record IDs (max 50 per call; extras are silently dropped) |
No output schema declared.
No examples provided.
memory_graph ~77
Query the unified knowledge graph. Returns neighborhood of a node: connected rules, skills, memories, concepts, entities.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | Traversal depth (1-3) |
| node | string | yes | Node name or ID to explore |
| types | array | – | Filter by node types (rule, skill, concept, etc.) |
No output schema declared.
No examples provided.
memory_graph_index ~42
Reindex CLAUDE.md rules and skills into the knowledge graph. Run after modifying CLAUDE.md or adding new skills.
| Name | Type | Req | Description |
|---|---|---|---|
| target | string | – | – |
No output schema declared.
No examples provided.
memory_graph_stats ~25
Knowledge graph statistics: nodes, edges, communities, top concepts, health metrics.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
memory_history ~51
View version history for a knowledge record. Shows the chain of superseded versions (newest → oldest), enabling time-travel through knowledge evolution.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Knowledge record ID to get history for |
No output schema declared.
No examples provided.
memory_index_passages ~50
Build local passage indexes before evidence searches. Repeat using next_after_id until remaining=0.
| Name | Type | Req | Description |
|---|---|---|---|
| after_id | integer | – | – |
| limit | integer | – | – |
| project | string | yes | – |
No output schema declared.
No examples provided.
memory_observe ~123
Save a lightweight observation (auto-capture). No dedup, no ChromaDB — fast and cheap. Use for tracking file changes, tool usage, and session activity. Observations auto-cleanup after 30 days.
| Name | Type | Req | Description |
|---|---|---|---|
| files_affected | array | – | List of affected file paths |
| observation_type | string | – | Type of observation |
| project | string | – | – |
| summary | string | yes | What happened (e.g. 'Modified auth controller') |
| tool_name | string | yes | Which tool triggered this (Write, Edit, Bash, etc.) |
No output schema declared.
No examples provided.
memory_perf_report ~57
v11.0: dump in-process telemetry counters (search_total_ms, embed_ms, fts_ms, vector_ms, llm_calls, network_calls) plus persistent embedding_cache stats. Use to verify the fast hot path stays clean.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
memory_rebuild_embeddings ~114
v11.0: re-encode every record (or every record in a given embedding space) and update the binary + float32 vectors. Idempotent. Pass embedding_space='code' to refresh only code rows after switching the code embedder. Returns {rebuilt: int, skipped: int}.
| Name | Type | Req | Description |
|---|---|---|---|
| batch_size | integer | – | – |
| embedding_space | string|array | – | Optional: only re-encode rows in these spaces. |
| limit | integer | – | – |
| project | string | – | – |
No output schema declared.
No examples provided.
memory_rebuild_fts ~55
v11.0: drop and rebuild the SQLite FTS5 virtual table from `knowledge` rows. Useful after migrations or content_type column changes that the FTS triggers didn't see. Returns {rebuilt: int}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
memory_recall ~749
Search ALL memory: decisions, solutions, facts, lessons from ALL past sessions. 6-stage pipeline: FTS5+BM25 → semantic → fuzzy → graph → (optional) CrossEncoder → (optional) MMR. Default: hybrid mode (BM25 + semantic + RRF). Use BEFORE starting any task. v11.0: routes to fast hot path when MEMORY_MODE=fast (default). Use memory_search_fast / memory_explain_search for explicit fast routing.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | ISO date or datetime that relative dates in the query ('last month', 'three weeks ago', 'yesterday') are counted from. Default: now. |
| branch | string | – | Filter by git branch (also includes branch-agnostic records) |
| context_max_chars | integer | – | Context character budget; evidence mode uses the same value as a stricter UTF-8 byte budget. |
| decisions_only | boolean | – | Return only structured decisions (v8.0): type=decision AND tags contain 'structured'. Results include parsed schema payload under 'decision'. |
| detail | string | – | Level of detail: 'compact' ~50 tokens/result (id+title+score), 'summary' truncates content to 150 chars, 'full' returns everything, 'auto' picks based on query complexity (paths/urls/code → full, sho… |
| diverse | boolean | – | Enable MMR diversity to reduce redundant results (useful for broad queries) |
| entities | array | – | Filter by extracted entity names (technology/person/project, case-insensitive) |
| evidence_followup | boolean | – | Evidence mode: allow one search for an explicitly supplied missing_relation. |
| expand_budget | integer | – | Max number of additional records to include via graph expansion |
| expand_context | boolean | – | Add graph-related records (1-hop neighbors via knowledge graph) as 'expansion' results |
| fill_budget | boolean | – | Context mode: search deeper (up to 100 hits) and keep whole hits in rank order until context_max_chars is used, instead of excerpting the top `limit` hits to fit. Neighbours default to 0 here; pass `… |
| fusion | string | – | Score fusion method: 'rrf' = Reciprocal Rank Fusion (better multi-tier ranking), 'legacy' = original additive scoring |
| intent | string | – | Filter by classified intent (question|procedural|fact|decision|problem|solution|incident|plan) |
| limit | integer | – | – |
| missing_relation | object | – | Evidence mode: missing relation; subject must occur in the original question. |
| mode | string | – | Progressive-disclosure mode: 'search' (default) = normal results, 'index' = ultra-compact metadata only (id+title+score+type+project+created_at, ~40-60 tok/hit, no cognitive expansion, use memory_get… |
| neighbors | integer | – | Timeline/context modes: records before/after each hit; context accepts 0–3. |
| project | string | – | Filter by project name |
| query | string | yes | What to search for |
| rerank | boolean | – | Enable CrossEncoder re-ranking for higher precision (adds ~30ms latency) |
| topics | array | – | Filter results to records tagged with any of these topics (from deep enrichment) |
| type | string | – | – |
No output schema declared.
No examples provided.
memory_recall_iterative ~107
v11.0 W1-B: IRCoT-style iterative retrieval. Decomposes the query into sub-questions, retrieves per sub-question, and asks a planner LLM whether more retrieval is needed. Best for multi-hop questions. Returns unified evidence + provenance per iteration.
| Name | Type | Req | Description |
|---|---|---|---|
| k_per_iter | integer | – | – |
| llm_model | string | – | – |
| max_iters | integer | – | – |
| project | string | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
memory_reflect_now ~57
Run reflection (the 'sleep' process). Consolidates knowledge, finds patterns, generates skill proposals, updates self-model.
| Name | Type | Req | Description |
|---|---|---|---|
| scope | string | – | quick=dedup only, full=digest+synthesize, weekly=deep analysis |
No output schema declared.
No examples provided.
memory_relate ~75
Create a typed relation between two knowledge records. Enriches graph expansion in Tier 4 search. Types: causal, solution, context, related, contradicts.
| Name | Type | Req | Description |
|---|---|---|---|
| from_id | integer | yes | Source knowledge record ID |
| to_id | integer | yes | Target knowledge record ID |
| type | string | yes | Relation type |
No output schema declared.
No examples provided.
memory_report ~436
Activity report for a project (or all projects) over a period: today (period=day), this week (week, ISO Monday-Sunday), this month (month), all time (all) or custom since/until dates; offset=-1 gives the previous day/week/month ('last week'). Sections: summary numbers with deltas against the previous equal period, key decisions with their WHY, solutions and fixes, errors with recurring patterns and lessons, open next steps and pitfalls from session summaries, most touched files, entities/technologies, and a day-by-day timeline. Every item carries source IDs (#id -> memory_get). Built deterministically from stored records, no LLM; include_llm_summary=true adds an optional paragraph from the configured LLM. Periods use the local timezone (or tz). save=true writes the Markdown to <memory dir>/reports/<project>/<period>-<date>.md. Use it when the user asks what happened, for a status/progress report, a weekly summary or a retrospective.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (readable) or json (structured) |
| include_llm_summary | boolean | – | Add an LLM-written paragraph (needs a configured LLM) |
| limit | integer | – | Maximum items per section |
| offset | integer | – | day/week/month only: 0 = current, -1 = previous (yesterday, last week, last month) |
| period | string | – | day = today, week = this ISO week, month = this calendar month, all = since the first record, custom = since/until |
| project | – | – | Project name; omit for all projects |
| save | boolean | – | Also write the Markdown under <memory dir>/reports/ |
| since | – | – | custom only: first day YYYY-MM-DD (inclusive) or an ISO date-time |
| tz | – | – | IANA timezone for period boundaries, e.g. Europe/Berlin; default: MEMORY_REPORT_TZ, TZ or the system zone |
| until | – | – | custom only: last day YYYY-MM-DD (inclusive) or an ISO date-time (exclusive); default today |
No output schema declared.
No examples provided.
memory_save ~514
Save knowledge explicitly. Types: decision (MUST include WHY in context), solution, lesson, fact, convention. Saving the same words again (case and punctuation aside) replaces the stored record, so it carries the latest date; any other text, including a changed value, is stored as a new record. v10: a quality gate scores the record before save; below-threshold records are rejected with a `rejected_by_quality_gate: true` response (override with MEMORY_QUALITY_GATE_ENABLED=false). Use `importance` to surface critical decisions at recall time (boosts the final RRF score). v11.0: routes to fast hot path when MEMORY_MODE=fast (default). Use memory_save_fast for explicit fast routing.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | Optional Claude Code subagent ID (x-claude-code-agent-id header / OTEL agent_id attribute, v2.1.139+). Lets recall trace which subagent produced this knowledge. |
| branch | string | – | Git branch this knowledge relates to |
| content | string | yes | The knowledge to save |
| context | string | – | Additional context, WHY for decisions |
| coref | boolean | – | Opt into v10 coreference rewrite — expand pronouns ('after this it broke') into self-contained text using recent session history. Costs ~1s LLM round-trip; default off. |
| filter | string | – | Optional content filter (pytest|cargo|git_status|docker_ps|generic_logs). Trims noisy CLI output while preserving URLs/paths/code. |
| importance | string | – | Recall-time boost: critical x1.5, high x1.2, medium x1.0, low x0.8. Reserve `critical` for migration-blocking decisions and security incidents. |
| parent_agent_id | string | – | Optional parent agent ID (the dispatching Agent tool / parent span). Together with agent_id forms the subagent lineage tree. |
| project | string | – | – |
| source_format | string | – | Conversation preserves dialogue structure and bypasses automatic CLI filters. |
| supersede | boolean | – | Retire active records of the same project and type that this one gives a new value for: same opening words, different trailing value ("X's citizenship is Argentina" -> "... is Armenia"). Use for sing… |
| tags | array | – | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
memory_save_fast ~185
v11.0: same as memory_save but routes through the fast hot path (skip_quality=True, no LLM, no async-blocking). Use when you want to bypass the v10 quality gate without flipping the env flag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | Optional Claude Code subagent ID (v2.1.139+) |
| branch | string | – | – |
| content | string | yes | – |
| context | string | – | – |
| filter | string | – | – |
| importance | string | – | – |
| parent_agent_id | string | – | Optional parent agent ID (the dispatching span) |
| project | string | – | – |
| source_format | string | – | – |
| supersede | boolean | – | Same as memory_save.supersede: retire records this one gives a new value for. |
| tags | array | – | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
How do I install the Total Agent Memory MCP server?
Total Agent Memory runs locally as a PyPI package, launched with uvx total-agent-memory. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · total-agent-memory
claude mcp add vbcherepanov-total-agent-memory -- uvx total-agent-memory
What is the Total Agent Memory MCP server?
Total Agent Memory is an MCP server listed in the public MCP registry as io.github.vbcherepanov/total-agent-memory. Persistent local memory for coding agents: temporal knowledge graph, procedural and episodic recall. This page covers its PyPI package (total-agent-memory).
What tools does the Total Agent Memory MCP server expose?
Total Agent Memory exposes 79 tools: memory_recall, memory_timeline, memory_index_passages, memory_answer, memory_save, and 74 more. Their descriptions and schemas cost roughly 8,625 tokens of context every time the server is loaded.
Is the Total Agent Memory MCP server still maintained?
Total Agent Memory 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 Total Agent Memory MCP server under?
Total Agent Memory declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.