Repository navigation
Tools Reference
Nineteen tools: sixteen always on, and three behind feature flags. Memory content is written in English; every tool description says so.
Conventions:
-
namespaceis optional everywhere. It defaults todefault_namespacefrom the configuration, usually set per call toproject/<repo>. Max 100 characters. -
tagsis a list of up to 20 tags of at most 64 characters. In filters, a record must carry all the tags given. -
limitis a number; the default is 10. -
include_privateonly has an effect whilefeatures.visibilityis on. - Expected failures (invalid input, a vault problem) come back as tool errors whose text says what to
fix. Not finding a record is a normal reply, such as
Memory not found. - Redaction is applied to content before it is written, when
redact_secretsis on.
Kinds: note, decision, assumption, task, risk, handoff, snapshot, and receipt when
the feature is on. Listings use type: handoff for kind handoff, context for everything else.
Save a free-form note (kind note).
| Parameter | Type | Required | Notes |
|---|---|---|---|
agent |
string, max 100 | yes | Who is saving, for example claude-code. |
title |
string, max 200 | yes | |
content |
string, max 200000 | yes | |
namespace |
string | no | |
tags |
list of strings | no |
Returns Context saved with ID: <id>.
Save a structured record.
| Parameter | Type | Required | Notes |
|---|---|---|---|
agent |
string | yes | |
kind |
enum | yes |
note, decision, assumption, task, risk, snapshot. handoff is refused (use create_handoff); receipt is created only by write_receipt. |
title |
string | yes | |
content |
string | yes | |
namespace |
string | no | |
status |
string, max 100 | no | Free text, for example open, accepted, done. |
relatedFiles |
list of strings, each max 500 | no | |
branch |
string, max 500 | no | |
commit |
string, max 500 | no | |
nextAction |
string, max 200 | no | |
tags |
list of strings | no | |
supersedes |
list of record ids | no | Records of the same namespace that this one replaces. Each is marked superseded_by. Already-superseded records and receipts are refused. |
Returns Memory saved with ID: <id>.
Save a durable summary of a namespace (kind snapshot, tag snapshot). The latest snapshot is what
get_project_brief returns.
| Parameter | Type | Required |
|---|---|---|
agent, title, content
|
string | yes |
namespace |
string | no |
Returns Snapshot created with ID: <id>.
Change fields of an existing record in place. Kind, namespace, id and file name never change.
| Parameter | Type | Required | Notes |
|---|---|---|---|
id |
string | yes | |
expected_revision |
integer, at least 1 | no | If the record's revision differs, nothing is written and the reply is a conflict message naming the current revision. |
title |
string | no | |
content |
string | no | Replaces the whole body text; the generated Related block is kept. |
tags |
list of strings | no | Replaces all tags. |
status |
string | no | |
visibility |
public, internal, private
|
no | |
validity |
valid, rejected
|
no |
rejected needs rejected_reason. |
rejected_reason |
string | no | Allowed only when the resulting validity is rejected. |
At least one field to change is required. Other arguments are refused. Receipts cannot be updated.
Returns Memory updated. ID: <id>. Revision: <n>, Memory not found., or
Revision conflict: expected revision <a> but the current revision is <b>. Read the record again before updating.
A handoff is a record of kind handoff, titled Handoff to <to>, with to and read fields.
See Multi-Agent Handoffs for the lifecycle.
| Parameter | Type | Required | Notes |
|---|---|---|---|
to |
string | yes | Destination agent. |
summary |
string, max 200 | yes | |
context |
string | yes | Full context needed to continue. |
namespace |
string | no | |
supersedes |
list of handoff ids | no | Those handoffs become read and get superseded_by. Only handoffs of the same namespace. |
The body is ## Summary and ## Full Context. Returns Handoff created for <to>. ID: <id>.
Read the newest pending handoff for an agent and mark it read.
| Parameter | Type | Required |
|---|---|---|
agent |
string | yes |
namespace |
string | no |
Returns the handoff text, or No pending handoff.
Same as read_handoff without marking it read. Parameters: agent (required), namespace.
Mark a handoff read by id. Parameters: id (required), namespace. Returns
Handoff marked as read. ID: <id> or Handoff not found.
Mark a read handoff pending again. Parameters: id (required), namespace. Returns
Handoff reopened. ID: <id> or Handoff not found.
| Parameter | Type | Required | Notes |
|---|---|---|---|
namespace |
string | no | |
agent |
string | no | Destination agent filter. |
status |
all, pending, read
|
no | Default all. |
limit |
number | no |
Returns one line per handoff, newest first, or No handoffs found.
The latest non-private, non-rejected snapshot of the namespace. If there is none, a generated brief
of the most recent records, one line each ([kind] title (agent): content). With the companion
feature on, the last-session card is appended.
| Parameter | Type | Required | Notes |
|---|---|---|---|
namespace |
string | no | |
limit |
number | no | Recent items when there is no snapshot; default 10. |
Free-text search plus filters. Text is lowercased and stemmed, so caching finds cache and
cached. A record matches when every query stem appears in its title, content or tags. Title hits
count three times as much as content hits; ties go to the newest record.
| Parameter | Type | Required | Notes |
|---|---|---|---|
namespace |
string | no | |
query |
string | no | Without it the filters alone apply. |
agent |
string | no | Agent that wrote the record. |
tags |
list of strings | no | |
type |
context, handoff
|
no | |
kind |
enum | no | One of the active kinds. |
handoffStatus |
all, pending, read
|
no | |
limit |
number | no | |
include_private |
boolean | no | Default false. |
Returns numbered lines or No matching memory found.
Recent records, newest first. Parameters: namespace, agent, tags, type, kind, limit,
include_private, as in search_memory. Returns No saved context yet. when empty.
The most recent context record (any kind except handoff), optionally by agent.
| Parameter | Type | Required |
|---|---|---|
namespace |
string | no |
agent |
string | no |
include_private |
boolean | no |
Returns **<title>** - <agent> - <timestamp> followed by the content, or No context found.
Outgoing links and backlinks of a record, resolved the way Obsidian resolves them.
| Parameter | Type | Required |
|---|---|---|
id |
string | yes |
Returns the lists, with unresolved targets called out, or Memory not found.
No parameters. Lists vault files that look like records but cannot be used, with the reason: invalid
YAML, a missing id, kind or namespace, an unknown kind, a kind that does not match its folder,
or a duplicate id. The files are never modified. Returns No issues found. when clean.
| Parameter | Type | Required | Notes |
|---|---|---|---|
agent |
string | yes | |
title |
string | yes | |
summary |
string | yes | What was done. |
refs |
list of strings, max 50, each max 500 | yes | File paths or commit SHAs. |
namespace |
string | no | |
harness |
string, max 100 | no | For example claude-code. |
session |
string, max 500 | no |
Returns Receipt saved with ID: <id>. Receipts are immutable.
Parameter: namespace. Returns the last-session and threads cards of the namespace.
| Parameter | Type | Required | Notes |
|---|---|---|---|
namespace |
string | no | |
last_session |
string | no | New card text: what the last session did and left open. |
threads |
string | no | New card text: open threads to pick up. |
At least one card is required. Each card is capped at companion.max_chars (default 3000) after
redaction; if any card is over the cap, nothing is written and the error asks the agent to compact
the text. Returns Companion updated.