Remember a fact
rememberRecord ONE thing worth keeping, in a single call.
`text` is the fact in plain language — it becomes the object's
description and is indexed for search. `class_name` says what KIND of
thing it is (decision, risk, convention, person, session_checkpoint, …);
it defaults to 'note' and a class that does not exist yet is created.
`properties` are typed fields ({"status": "accepted", "decided_on":
"2026-09-11"}), and `relationships` are edges to other objects
([{"type": "decided_by", "target": "sarah_chen"}] — add "target_class"
to create a target that isn't here yet).
Writes land `status='unapproved'`: readable at once, flagged until a
person approves them. That is deliberate — an agent proposes, a human
decides — so tell the user what you recorded rather than treating it as
settled.
Naming: omit `name` and the server derives a unique one from the text.
PASS a `name` that already exists in that class and you UPDATE that
object instead of creating a second one — that is how you revise a fact
rather than accumulate contradictions.
SESSION HANDOFF: before you run out of context, call this with
class_name="session_checkpoint" and a text saying what you did, what is
left and where you stopped. The next session's `recall` hands it straight
back.
For a whole document use the extraction pair (get_extraction_prompt →
submit_extraction_from_llm) instead — it produces many typed rows and
keeps the document on your side. Check `near_duplicates` in the response:
if what you wrote already existed, fold the pair with merge_objects.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| text | Yes | ||
| memory | Yes | ||
| class_name | No | note | |
| properties | No | ||
| source_doc | No | ||
| display_name | No | ||
| relationships | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||