Skip to content

MCP Tool Reference

Each tool’s inputSchema is standard JSON Schema, returned from tools/list. Every tool returns {"success": true, ...} on success or {"success": false, "error": "TOOL_ERROR", "message": "..."} on failure — errors are never thrown as JSON-RPC protocol errors, so check success in the result body.

Store a new memory.

Parameters:

NameTypeRequiredDescription
contentstringyesThe memory content
policystringyesLifecycle policy for the memory
ttl_secondsintegeryesTTL in seconds; use 0 when the policy has no TTL
tagsstring[]—Classification tags
importancenumber (0–1)—Importance score, default 0.5
emotional_valencenumber (-1–1)—Default 0.0
arousalnumber (0–1)—Default 0.0. >= 0.8 creates a protected “flashbulb” memory: force-promoted to long_term, importance floored at 0.9, exempt from decay/active-forgetting for 30 days. Only applies at creation time.
healthnumber (0–100)—Default 100.0
ttlnumber (seconds)—Only meaningful for short_term
sourcestring—Free-text provenance tag
graph_extractionobject—{entities: [{name, entity_type?, description?}], relationships: [{source, target, relationship_type?, strength?}]} — max 100 entities / 200 relationships. Lets the calling LLM supply entities/relationships it already extracted; each entity becomes a linked long-term memory.

Example:

{
"tool": "store_memory",
"arguments": {
"content": "User's timezone is Europe/Berlin.",
"policy": "long_term",
"tags": ["user", "timezone"],
"importance": 0.6
}
}

Search memories by semantic similarity, keyword, or hybrid.

Parameters:

NameTypeRequiredDescription
querystringyesSearch query
search_type"semantic" | "keyword" | "hybrid"—Default: "hybrid"
limitnumber—Max results, default 10
related_tostring (UUID)—Boosts memories connected to this memory in the graph
filtersobject—{policy, tags[], importance_min, importance_max}

Example:

{
"tool": "search_memories",
"arguments": {
"query": "what timezone is this user in?",
"search_type": "hybrid",
"limit": 5
}
}

Response shape (unwrapped from the MCP text-content envelope):

{
"success": true,
"query": "what timezone is this user in?",
"results_count": 1,
"results": [ { "memory": { "id": "...", "content": "..." }, "score": 0.91 } ],
"summary": "Found 1 memories for 'what timezone is this user in?'"
}

Retrieve a specific memory by ID.

Parameters:

NameTypeRequiredDescription
memory_idstringyesMemory ID
include_connectionsboolean—Include graph connections in the response

Fetching a memory boosts its health by +10 (capped at 100).


Update the content or metadata of an existing memory.

Parameters:

NameTypeRequiredDescription
memory_idstringyesMemory ID
contentstring—New content
tagsstring[]—New tags (replaces existing)
importancenumber (0–1)—New importance score
emotional_valencenumber (-1–1)—New emotional valence
arousalnumber (0–1)—New arousal. Note: raising this to >= 0.8 on an existing memory does not retroactively apply flashbulb protection — that only happens at creation time
healthnumber (0–100)—New health score
sourcestring—New provenance tag

At least one optional field must be present.


Delete a memory, either soft (archive) or hard (permanent).

Parameters:

NameTypeRequiredDescription
memory_idstringyesMemory ID
hard_deleteboolean—If true, permanently delete. Default: false (soft archive)

Traverse the relationship graph from a starting memory.

Parameters:

NameTypeRequiredDescription
memory_idstringyesStarting memory ID
depthnumber—Traversal depth, default 1, max 5
limitnumber—Max results, default 10

Example:

{
"tool": "find_related",
"arguments": {
"memory_id": "mem_01j...",
"depth": 2
}
}

Promote a short-term memory to long-term.

Parameters:

NameTypeRequiredDescription
memory_idstringyesMemory ID

Example:

{
"tool": "promote_to_longterm",
"arguments": { "memory_id": "mem_01j..." }
}

List recently created or accessed memories.

Parameters:

NameTypeRequiredDescription
limitnumber—Max results
policystring—Filter by lifecycle policy
sort_by"created_at" | "accessed_at"—Default: "created_at"

Example:

{
"tool": "list_recent_memories",
"arguments": { "limit": 10, "sort_by": "accessed_at" }
}