memory.store
Schema
Input = { content: string, // max 4000 chars kind?: 'fact' | 'episode' | 'preference' | 'relationship' | 'document' | 'insight', // default 'fact' importance?: number, // 0-1, default 0.5 tags?: string[], source?: string, // default 'skill'}
Output = { memory: MemoryItem | null, stored: boolean, note?: string,}Like memory.recall, this writes through the same injected
adapter straight into the real Memory table — a memory an agent stores this way is
indistinguishable from one Muse extracted from conversation, and shows up in your
Constellation immediately. Inside a Studio project, if the caller left source at its
default 'skill', the skill rewrites it to studio:<projectId> automatically, so you can always
trace a memory back to the project that created it.
Muse itself is instructed to call this “once with one clear third-person sentence” whenever it learns something durable (see How Muse thinks) — it’s the same mechanism, just triggered from a chat turn instead of a Studio task.
Example
curl -s -X POST http://localhost:4000/api/studio/skills/invoke \ -H 'content-type: application/json' -b cookies.txt \ -d '{"name":"memory.store","input":{"content":"Owner is planning a trip to Lisbon in November.","kind":"episode","importance":0.6,"tags":["travel"]}}'{ "ok": true, "output": { "stored": true, "memory": { "id": "mem_7c1e...", "kind": "episode", "content": "Owner is planning a trip to Lisbon in November.", "importance": 0.6, "tags": ["travel"], "source": "skill", "createdAt": "2026-09-06T10:41:02.000Z" } }}