Settings apply to writes made after you save them. Memories already stored are never
re-extracted, so changing these is safe and never rewrites history.
The knobs
guidance is added to the standard rules and applies in every mode. Reach for it
first; it is the one most spaces ever need.
custom_prompt replaces those rules, and only applies while mode is custom. The
memory format is untouched either way: dates, entities and the fields of a memory are
read the same, so custom rules change what gets kept, never the shape of what comes back.
labels is different in kind. The two above steer what a write keeps; labels ask the
same pass to classify what it kept, along dimensions you define. A labelled memory can
then be filtered on directly. See Label taxonomy.
Read the settings
200 OK
null means unset: that field follows the platform
default and keeps following it. That is a different thing from setting it to whatever the
default happens to be today.
Update the settings
PUT replaces the whole record, so a field you leave out is cleared, not kept. The
body always describes the state you want, not a patch on top of what is there. The SDK
methods send the whole record too, so an argument you omit clears that field.
Response 200 OK. The stored settings, in the same shape as the GET.
Reset to the defaults
204 No Content
The space goes back to the standard rules. Stored memories are unaffected.
Modes
Writing good guidance
Extraction responds to specifics, not adjectives. “Be thorough” changes little; naming a field changes a lot.- Name your vocabulary. Ambiguous abbreviations are the single most common source of wrong extractions, and one sentence fixes them.
- List the fields that must never be dropped. That is what turns a good guess into a reliable one.
- Say what to skip. Excluding noise is as valuable as including signal, and it keeps memories smaller and recall sharper.
Label taxonomy
Guidance changes what a write keeps. A label taxonomy changes what a write is filed under: you name the dimensions that matter in your domain, and extraction classifies every memory along them at write time. Because the classification happens once, on the way in, filtering on it later costs nothing and cannot drift. A group withtag: true is the useful case. Its classification is written onto the memory
as the tag "<key>:<value>", which means
tag_groups on retrieve can filter on it
like any other tag.
Group types
value and multi-values need their values listed. text and multi-text must not
list any: they take whatever the memory itself supplies.
Identity: the case multi-text exists for
The most useful taxonomy is usually the simplest one. A single name group teaches
extraction to record every surface form a thing is known by, so a later query can match
the word your user actually typed rather than the word your docs happen to use.
name:kubernetes, name:k8s and name:kube, and
all three retrieve it:
A classification dimension
The other common shape is a small fixed vocabulary, which lets a query exclude a whole class of memory:not, that is “everything except what we have moved on from”:
Reserved keys
A key becomes the part of the tag before the colon, so it must be lowercase letters, digits,- or _, and it may not be anona. That namespace carries
user, agent and session scoping, and a label group is written by
extraction rather than by you, so a group allowed to claim it could file a memory under
another end user’s scope.
What gets refused
Every one of these is a setting that would look saved and do nothing, which is worse than an error:What a description is, and what it must not be
A group’s description is instruction text. It is rendered into the extraction prompt on
every write and the model reads it, so it is the single most powerful field here and the
easiest one to write badly.
Describe the label: what the dimension means, what its values mean, and how to write a
value. Do not describe extraction: what counts as a memory, when to split one fact into
two, what to leave out. The model cannot tell whose job it is reading about, and a
description phrased as extraction policy quietly changes what gets stored.
This is not a theoretical risk. One name group whose description said “those are separate
memories with their own names” and “a name must pick this memory out on its own” took the
same 35 document corpus from 52 memories to 10, and every job still reported completed
with no error. The same description, rewritten to talk only about names, stored 48.
Keep descriptions short for the same reason you keep guidance short: the whole taxonomy
is sent on every write, so its length is a cost on each one. Keep them to what changes a
decision.
Labels apply to writes made after you save them. Memories already stored keep whatever
they were written with, so switching a taxonomy on does not retag your history.
Verifying a change
There is no error when guidance is unhelpful; extraction simply keeps different things. The quickest way to see the effect:- Save the settings.
- Record a representative piece of text with
POST /v1/record. - Read the memory back with
GET /v1/spaces/{space_id}/memoriesand check the facts are the ones you wanted.
tags entry of "<key>:<value>" for every group you marked tag: true. If the
tags are absent, extraction did not find the dimension in the text, and the group’s
description is what to change.
Adjust and repeat. Because nothing is re-extracted, older memories keep whatever they
were stored with.
Permissions
Extraction settings decide what every member’s writes turn into, so reading and changing them is limited to the space’s owner. A member of a shared space gets403 space_owner_only.
These routes are not metered, so an org that has run out of credits can still change or
turn off its settings.