NotariumDocumentation
Documentation version: latest
EN

Intent Tools

The MCP gateway hands the agent not generic CRUD but 21 intent-oriented tools — each one expresses an intent ("create a note," "recall context," "rename a project") rather than an operation on a table. This set draws boundaries by construction: the agent doesn't pick the space or the note's class — the tool itself imposes that, and the token's scope determines which tools are even visible.

The names and descriptions the agent sees in tools/list are static — note content is never mixed into them (protection against tool-poisoning).

Token scope — the visibility ceiling

A read token sees only the reading tools; writing tools don't appear in tools/list at all. On top of that, every call checks access to the specific space. So the tables below are the maximum; the actual set depends on your token.

Bootstrap

Session-start tools: who am I, what's available to me, what changed.

ToolPurpose
start_sessionCall it first in a new session. In a single request: the user profile (always loaded), available projects, and — with a project hint — a compact project index (note count + top-level folders), the delta of changes since your last visit, and knownValues (a dictionary of the categories/tags in use). Idempotent; not required to call — you just get less context.
whoamiWho I am (principal id), my ceiling (read/write), project memberships, and the engine's capabilities (vector/trash/revisions) — so you don't probe blindly.
get_my_projectsA flat list of available projects with ready-made handles — for the project argument. A handle usually looks like space/slug, but for a space's root project it collapses to a single segment, so take it from the response verbatim rather than deriving it from a rule. The personal domain isn't in the list (it's implied by the token).
Call order

start_session → (need a project?) get_my_projects → survey the structure with list_notes/recent_activitysearch/recall before writingcreate_note/remember_*/edit_note/link.

This order is a recommendation, not a mechanism: the model decides which tool to call. To have it followed without prompting, pin it in the agent's standing instructions — Agent rules.

Discover — navigation

ToolPurpose
list_notesls for the knowledge base: a folder's direct notes and subfolders (deterministic, paginated). project selects the space, path is the folder (take it from the response verbatim), tag filters. Lists visible notes, not the agent's memory.
recent_activityThe most recently edited notes ("what was touched lately, needs review"). Each entry: who (human/agent), how, where, when. This isn't the delta from start_session.

Read — reading and recall

ToolPurpose
searchHybrid search (semantic + lexical via RRF); when the vector is unavailable, it falls back to full-text search (FTS) — without an error. It also covers the agent's own memory — "search before writing" dedupes that too. Returns ranked snippets with a score and path, not full notes.
get_noteThe full note by ref (note-id or wiki-ref): content, frontmatter, path, class, versionToken (for safe writes), and provenance. In detailed mode — also outline (headings) and links (graph edges).
recallAssemble a context bundle around a topic, within a token budget: relevant notes plus their graph neighbors. Richer than search, it pulls from knowledge and from private memory. budgetTokens caps the size.

More on the difference between search and recallAgent memory.

Write — writing and intent

ToolPurpose
create_noteCreate a new shared (KB) note in a project, class user-doc. body (Markdown) sets the note's title from a leading # H1; path? is the destination folder; type?/tags? are optional override parameters; links? adds typed edges right away. The agent doesn't pick the class or the space.
remember_about_userRecord a long-lived fact about the user (preferences, context) into their private memory. Appends an observation under a category.
remember_about_projectRecord a fact about a project into the agent's private memory (class agent-memory, symmetric to remember_about_user). Not shared knowledge — use create_note for that.
edit_noteEdit a note incrementally by words, not by positions: append/prepend, replace (the whole body), replaceSection (by heading), findReplace (a unique snippet; empty content = delete). Requires a versionToken (CAS).
delete_noteMove a note to the trash — the agent's only destructive action, reversible by design. Only a human restores or empties the trash.
linkA typed link from→target. The target is to (note-id) or toTitle (a forward-ref by the title of a not-yet-created note). Both notes in the same space.
Writes protected by CAS

edit_note requires a versionToken from a fresh get_note. A concurrent edit returns a versionConflict error — the tool doesn't silently overwrite someone else's changes; the agent re-reads and retries.

Reorganize

The grammar of the reorg tools is verb_entity. A note is addressed by id, a folder by path, a project by handle.

ToolPurpose
move_noteMove a note to another folder, keeping its name. The id and URL stay stable, incoming links don't break.
rename_noteChange a note's title. Link-safe: the old title goes into alias history, incoming [[links]] keep resolving.
move_folderMove an entire folder with its contents under a different parent. The ids of all notes inside stay stable.
rename_folderRename a folder in place. If the folder is a project, its handle doesn't change (for the handle — rename_project).
rename_projectChange a project's handle and/or its human-readable name. Link-safe: the old handle goes into an alias.

Scale — migration at scale

ToolPurpose
create_notesCreate several KB notes in one project per call. Best-effort, not transactional: results[] marks each one ok/error — retry only the failed ones.
link_manyCreate several typed links per call. Best-effort, idempotent.

Next