MCP Tool Reference
Parametric Memory exposes 11 MCP tools over Streamable HTTP, usable by Claude, Claude Code, Cowork, and any MCP-compliant client. Each tool maps to an operation on your instance. Every tool declares whether it is read-only or a write, so hosts can surface the distinction.
The two you will use constantly are memory_session_bootstrap (read prior context at the start of a task) and session_checkpoint (save what you learn). The rest are for search, inspection, and maintenance.
Core tools
memory_session_bootstrap (read-only)
Recall relevant prior context at the start of a task — load what was learned, decided, or corrected in previous sessions. This is the first call your AI should make in any conversation that needs prior context.
Parameters:
| Parameter | Type | Description |
|---|---|---|
objective | string | Short description of this session's goal. Atoms are ranked by relevance to it. |
maxTokens | number | Bounds atom selection and the context block. |
limit | number | Bounds topMemories, conflictingFacts, and per-atom proofs. |
highImpact | boolean | Raises the bar for high-stakes work (deploys, architecture). |
evidenceThreshold | number | Minimum evidence score (e.g. 0.75 for high-stakes). |
mode | string | Response shape: orient (default), detailed, or audit. |
domain | string | Domain atom key (e.g. v1.domain.myproject) — 1.15× relevance boost on tagged atoms. |
markovScale | number | Markov spreading-activation multiplier. Default 0 (inert); try 0.25–1.0 when density is high. |
asOfMs / asOfVersion | number | Time-travel: bootstrap the substrate as of a past moment or tree version. |
namespace | object | { user?, project?, task? } scoping. |
Returns: atoms (ranked, with payloads + proofs), conflictingFacts (competing claims to resolve), and treeVersion (an offline-verifiable proof of the read moment). mode: detailed/audit add a decision-evidence block and a pre-formatted context string.
When to call: once per conversation, on the first user message. Do not call on every prompt — it is expensive.
session_checkpoint (write)
Save durable knowledge so it survives across sessions — facts, decisions, corrections, and state. Call it as knowledge forms, not at the end of the session. It adds atoms, wires edges, reinforces Markov arcs, and tombstones superseded atoms — all in one atomic commit.
Parameters:
| Parameter | Type | Description |
|---|---|---|
atoms | array | New atoms to store (see atom format below). |
edges | object[] | Relationships between atoms: { source, target, type, confidence?, createdBy? }. |
train | array | Markov sequences to reinforce: { sequence: string[], passes: number } (or a flat string array for a single pass). |
tombstone | string[] | Atom keys to logically delete (recoverable — see guarantees below). |
removeEdges | object[] | Edges to remove: { source, target, type }. Runs after tombstones, before edge additions. |
taskContext | string | Active task atom key. Auto-creates produced_by edges from each new atom. |
Atom format (important): an atom is either
- an identifier-only string —
"v1.<type>.<snake_case_id>"(grammar[a-z][a-z0-9_]{0,63}; no hyphens, uppercase, spaces, or=), or - a structured object —
{ "atom": "v1.<type>.<id>", "payload": "…" }, wherepayloadis single-line UTF-8, ≤ 4096 chars, no line breaks. OptionaltrainPasses(0–5) and, for facts,meta: { subject?, claim?, source?, confidence? }.
Legacy
"key = value"(fat-form) strings are rejected. Put the value in the structured object'spayloadfield instead. Valid types:fact,event,state,relation,procedure,other,domain,task.
Edge types:
| Type | When to use |
|---|---|
supersedes | New atom replaces an older one |
member_of | Atom belongs to a hub/domain cluster |
depends_on | Atom requires another to be true first |
constrains | Atom limits what another can do |
references | Atom mentions or uses another |
derived_from | Finding came from investigating another atom |
produced_by | Atom was created during a task (prefer taskContext) |
Example:
{
"atoms": [
"v1.fact.payment_provider_stripe",
{ "atom": "v1.state.current_sprint", "payload": "Sprint 12 — subscription billing" }
],
"edges": [
{
"source": "v1.state.current_sprint",
"target": "v1.fact.payment_provider_stripe",
"type": "depends_on"
}
],
"taskContext": "v1.task.subscription_billing"
}Write behavior & guarantees:
- Append-only and non-mutating by default. Existing atoms are never overwritten or hard-deleted — the substrate is an append-only Merkle log. A checkpoint removes something only if you explicitly pass
tombstone(or asupersedesedge), and even then it is a recoverable logical marker: the atom stays in verifiable history, so nothing is ever silently lost. - Conflict-tolerant. Conflicting beliefs are never rejected or auto-tombstoned. If a new atom contradicts a stored one, both are kept and the contradiction is surfaced back to you at retrieval (the
conflictingFactsblock onmemory_session_bootstrap) so you decide how to resolve it. Same key and same claim is treated as a duplicate, not a conflict. - Secret-safe. A write that looks like a credential is rejected with HTTP
422and never stored. See Atom Safety & Blocking.
Reinforcement lives here, not in a separate tool. Use the
trainarray (and per-atomtrainPasses) to strengthen Markov arcs.references/depends_on/derived_from/produced_byedges auto-train. Training skips atoms that don't exist yet, so reinforce in a follow-up call after the atoms are persisted.
memory_search (read-only)
Search everything the agent has ever remembered, by meaning — use when you need atoms whose keys you don't know exactly.
Parameters:
| Parameter | Type | Description |
|---|---|---|
query | string | Required. Semantic query — keyword or phrase. |
limit | number | Max results (default 10). |
threshold | number | Minimum score (default 0). |
asOfMs / asOfVersion | number | Temporal query — search the substrate as of a past moment/version. |
namespace | object | { user?, project?, task? } scoping. |
compactProofs | boolean | Default true (compact proof summary). Set false for the full auditPath. |
Returns: ranked results, each with a separate atom (identifier) and payload, a Merkle proof summary, and a contradiction field.
memory_access (read-only)
Recall a specific remembered fact when you already know its key.
Parameters:
| Parameter | Type | Description |
|---|---|---|
atom | string | Single recall by exact key, e.g. v1.fact.database_host. |
atoms | string[] | Batch recall (routes to the batch endpoint). |
depth | number | Edge traversal: 0 (none), 1 (direct neighbours), 2 (two-hop). Capped at 50 results. |
compactProofs | boolean | Default true. Set false for the full forensic proof (auditPath, shardRootProof, predictedProof). |
warmRead | boolean | Warm-read flag. |
Pass either atom or atoms. Returns: { currentData, proof, treeVersion, predictedNext, contradiction } (plus edges when depth > 0).
memory_context (read-only)
Get a pre-formatted context block — returns [MEMORY] … lines suitable for direct injection into an agent's context window. Use this when you just want ready-to-paste context; use memory_session_bootstrap when you want structured atoms + conflictingFacts + proofs.
Parameters:
| Parameter | Type | Description |
|---|---|---|
maxTokens | number | Bounds the output size. |
asOfMs / asOfVersion | number | Temporal scope. |
namespace | object | { user?, project?, task? } scoping. |
includeGlobal | boolean | Include global-namespace atoms. |
memory_list_atoms (read-only)
List atoms in your substrate, optionally filtered — for inventory, orphan detection, and inspection. Lightweight (no Merkle proof overhead).
Parameters:
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by atom type (fact, event, state, …). |
prefix | string | Filter by key prefix, e.g. v1.fact.. |
status | string | active (default), tombstoned, or all. |
Returns: atom key, status, and type.
Advanced tools
memory_associate (read-only)
Find cross-domain connections between recently stored atoms. Used internally by the live association agent; you can also call it directly to surface unexpected relationships.
Parameters:
| Parameter | Type | Description |
|---|---|---|
atoms | string[] | Required. Recently checkpointed atom keys. |
domain | string | Required. Current domain atom key. |
allDomains | string[] | All known domain keys (enables domain-switch detection). |
Returns: suggested references edges (confidence 0.4).
memory_markov_density_report (read-only)
Precondition diagnostic for memory_session_bootstrap's markovScale. If density is below ~10%, passing markovScale > 0 is silently useless — the Markov wire has too little to spread from.
Parameters: none. Returns: dominantNextDensity, average/max fan-out, and master treeVersion.
memory_recluster (write, non-destructive)
Run TF-IDF cluster-label generation across all domains — groups atoms by domain and proposes descriptive cluster labels. Typically run by the nightly consolidation agent after orphan wiring.
Parameters:
| Parameter | Type | Description |
|---|---|---|
persist | boolean | If true, create cluster atoms + member_of edges. Default false (dry run). |
Returns: proposed clusters with labels and member counts.
Evaluation tools
memory_weekly_eval_status (read-only)
Report whether the weekly scientific evaluation is due, based on persisted run state. Parameters: none.
memory_weekly_eval_run (write)
Run the local weekly evaluation script on the MCP host (dev/self-hosted only). Parameters: force (boolean) — bypass the 7-day due-check.
Usage patterns
Minimal session pattern
Session start → memory_session_bootstrap({ objective, maxTokens: 1200 })
During session → session_checkpoint({ atoms, edges }) // as knowledge forms
Session end → session_checkpoint({ atoms: [updated state], tombstone: [stale keys] })
→ session_checkpoint({ train: [{ sequence: [...], passes: 2 }] })Correction pattern
When a user corrects Claude's behaviour — the highest-priority memory event:
1. session_checkpoint({
atoms: ["v1.procedure.migrations_are_run_via_npm"],
edges: [
{ source: "v1.procedure.migrations_are_run_via_npm", target: "<corrected behaviour>", type: "constrains" },
{ source: "v1.procedure.migrations_are_run_via_npm", target: "v1.other.hub_corrections", type: "member_of" }
]
})
2. session_checkpoint({ train: [{ sequence: ["<related atom>", "v1.procedure.migrations_are_run_via_npm"], passes: 3 }] })
3. Apply the correction for the rest of this session and all future sessions.Two calls, because train skips atoms that aren't persisted yet.
High-stakes session pattern
For deployments, architecture decisions, or production changes:
memory_session_bootstrap({ objective, highImpact: true, evidenceThreshold: 0.75 })More conservative — it returns only atoms with strong evidence, avoiding speculative or low-confidence context.