Skip to main content

notes

notes.delete

notes.delete

Effects: delete

Delete a note by ID from the target notebook. Same identity rules as notes.save — agents can only delete from their own notebook.

Arguments

ArgumentTypeRequiredDescription
note_idintegeryesID of the note to delete
target_agent_idintegernoTarget notebook. In agent mode optional (defaults to your own); required from MCP. Agents cannot target other agents' notebooks.

notes.recall

notes.recall

Effects: read

Recall notes from your notebook. By default returns only your own notes (all scopes, newest first). Pass filter_agent_id=<int> to read another agent's notebook, or filter_agent_id="all" (or "*") to read across every agent in the workspace. Pass scope to narrow to global/thread/person. Each result includes agent_id and agent_name of the author.

Arguments

ArgumentTypeRequiredDescription
filter_agent_idstringnoOptional. Omit to read only your own notes. Pass a numeric agent_id as a string (e.g. "57") to read another agent's notebook (read-only). Pass "all" or "*" to read across all agents in the workspace.
keystringnoRecall a specific note by key
limitintegernoMax notes (default 20, max 50). Newest first.
scopestringnoOptional filter: global | thread | person. Omit for all scopes. (one of global, thread, person)
scope_ref_idstringnoFilter by specific thread_id or person_id

notes.save

notes.save

Effects: write

Save a fact or note into the agent's memory. Use scope to choose visibility: 'workspace' = visible to every agent in this workspace (use for shared facts, project conventions); 'agent' = private to this agent (use for personal working notes); 'thread' = scoped to one conversation (use for thread-specific reminders); 'person' = scoped to one contact (use for per-contact context). If a note with the same key+scope exists it will be updated. Do NOT use this tool for behavioral rules or corrections — use feedback.save for those.

Arguments

ArgumentTypeRequiredDescription
expires_in_hoursintegernoAuto-delete after N hours. Omit for permanent notes.
keystringyesShort identifier for this note (must not start with '__' — reserved)
pinnedbooleannoPin this note so it's always loaded first. Default false.
scopestringyesScope of the note. 'workspace' = shared across all agents; 'agent' = private to this agent (was 'global' pre-PR1); 'thread' = per-conversation; 'person' = per-contact. 'global' is accepted as a deprecation alias for 'agent'. (one of workspace, agent, thread, person, global)
scope_ref_idstringnoReference ID — thread_id (for scope=thread) or person_id (for scope=person). Required for thread/person scope. In MCP mode (no thread context), must be passed explicitly.
target_agent_idintegernoTarget notebook. In agent mode optional (defaults to your own); required from MCP. Agents cannot target other agents' notebooks. Ignored when scope='workspace' (workspace memory is shared).
valuestringyesThe note content

notes.search

notes.search

Effects: read

Full-text search in your notebook. By default searches only your own notes. Pass filter_agent_id=<int> to search another agent's notebook, or "all" (or "*") for workspace-wide. Or list all notes for a person/thread by scope_ref_id.

Arguments

ArgumentTypeRequiredDescription
filter_agent_idstringnoOptional. Omit to search only your own notes. Pass a numeric agent_id as a string (e.g. "57") to search another agent's notebook (read-only). Pass "all" or "*" to search across all agents in the workspace.
limitintegernoMax results (default 10, max 50)
querystringnoText to search for in note keys and values. Optional if scope_ref_id is provided.
scopestringnoLimit search to scope (one of global, thread, person)
scope_ref_idstringnoFilter by specific thread_id or person_id. If provided without query, lists all notes for that ref.