Skip to content

memory.recall

Schema

Input = {
query: string,
limit?: number, // 1-50, default 8
kind?: 'fact' | 'episode' | 'preference' | 'relationship' | 'document' | 'insight',
}
Output = {
memories: Array<{ id, kind, content, importance, tags, source, createdAt, score? }>,
available: boolean, // false when no memory adapter is wired into this context
note?: string,
}

This is a thin skill over an injectable adapter (ctx.memory) — inside the real API, that adapter is wired straight to the Twin’s own recallMemories(), the exact hybrid FTS5 + embedding ranking documented in The memory model. There’s no separate memory store for agents versus the Twin UI; an agent recalling something and you searching /twin hit the same rows, the same ranking, the same lastAccessed bump. In a context where the adapter isn’t wired (a bare test harness, for instance), the skill degrades to available: false with a plain note rather than throwing.

Example

Terminal window
curl -s -X POST http://localhost:4000/api/studio/skills/invoke \
-H 'content-type: application/json' -b cookies.txt \
-d '{"name":"memory.recall","input":{"query":"coffee","limit":3}}'
{
"ok": true,
"output": {
"available": true,
"memories": [{ "id": "mem_9f2a...", "kind": "preference", "content": "Owner prefers dark roast over espresso.", "importance": 0.5, "tags": ["coffee"], "source": "muse", "createdAt": "2026-09-06T08:12:03.000Z" }]
}
}