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
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" }] }}