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
memory_type"short_term" | "long_term"Default short_term
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
sourcestringFree-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.",
"memory_type": "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"
limitnumberMax results, default 10
related_tostring (UUID)Boosts memories connected to this memory in the graph
filtersobject{memory_type, 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_connectionsbooleanInclude 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
contentstringNew 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
sourcestringNew 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_deletebooleanIf true, permanently delete. Default: false (soft archive)

Traverse the relationship graph from a starting memory.

Parameters:

NameTypeRequiredDescription
memory_idstringyesStarting memory ID
depthnumberTraversal depth, default 1, max 5
limitnumberMax 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
limitnumberMax results
memory_type"short_term" | "long_term"Filter by type
sort_by"created_at" | "accessed_at"Default: "created_at"

Example:

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