Agent API reference
This page lists every tool Memry's MCP server offers and every desktop API operation those tools reach, with each argument's type, whether it is required, the values it takes, and an example call with the reply a running Memry gave. It is written for agents and the people who set them up, so an agent never has to read the app's own files to find out how to call it.
Describes Memry 2026.928.1+main. A version ending in +main means the reference was regenerated from the source after that release, and the next release ships it. The reference is generated from the schemas Memry checks every call against, the same schemas behind vault_desktop_describe and the VALIDATION errors, and is regenerated for each release.
The same content as JSON Schema (draft 2020-12), for an agent to fetch: https://docs.memrynote.com/agent-api/memry-agent-api.schema.json. Its $defs hold one entry per tool (the arguments object) and one per desktop operation (the args array), each with its description, whether it needs approval, and the example below.
Calling a tool
Memry serves MCP over HTTP at http://127.0.0.1:<port>/mcp, with the bearer token from Settings -> AI Assistant -> Agent MCP. See Agent Chat & MCP Server for the connection, and for which clients may write. A tool call is a JSON-RPC tools/call request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "vault_search_notes", "arguments": { "query": "budget", "limit": 5 } }
}The reply's result.content[0].text is the JSON shown as the reply in each example below. A refused call sets result.isError and its text is { code, message, details }. Example ids, dates and times come from a test vault; arrays in a reply are cut to their first three entries and long strings are shortened, marked ….
Write tools pause for the owner's approval unless the owner set confirmations to Always allow, and only a turn Memry itself runs can write. A call whose arguments do not match the schema is refused with VALIDATION before any approval, and nothing runs. Every tool refuses an argument it does not take.
Named tools
Read tools
vault_search_notes
Full-text search across notes and filed files; returns id, title, snippet, folder_path, file_type. A file_type other than "markdown" (pdf/image/audio/video) is a filed file, not a note. PDFs and images match on the text read out of them on this device, and a note matches on the visible text of the HTML blocks it embeds. Pass file_types to restrict the search, e.g. ["markdown"] for notes only; omitted returns every file type.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
query | string | yes | min length 1 |
limit | integer | no | max 50; greater than 0 |
folder_id | string | no | min length 1 |
file_types | ("markdown" | "pdf" | "image" | "audio" | "video")[] | no | min items 1 |
Example call:
{
"query": "relaunch",
"limit": 5
}Reply:
[
{
"id": "<noteId>",
"title": "Website relaunch plan",
"snippet": "# Website <mark>relaunch</mark> plan\n\nSecond draft.\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"folder_path": "Projects",
"file_type": "markdown",
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
}
]vault_read_note
Read a markdown note by id; returns full markdown content + metadata. For a filed pdf or image, returns extracted_text instead: the text read on this device (the PDF text layer, else OCR), one entry per page, with status "extracting" | "done" | "failed", page_count and pages_read. Pages come in chunks of about 100 KB; pass next_page as from_page to continue. A markdown note that embeds PDFs, images or HTML blocks adds attachment_text, the text read from each ({ file, text }; the visible text for an HTML block), about 100 KB at most. Errors with VALIDATION for a filed audio or video file. To look at an image or a PDF page, use vault_view_file.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
from_page | integer | no | max 9007199254740991; greater than 0 |
Example call:
{
"id": "<noteId>"
}Reply:
{
"id": "<noteId>",
"title": "Website relaunch plan",
"content_markdown": "# Website relaunch plan\n\nSecond draft.\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"tags": ["website", "planning"],
"folder_path": "Projects",
"frontmatter": {
"tags": ["website", "planning"],
"stage": "idea",
"project": ["Website relaunch"]
},
"file_type": "markdown",
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
},
"sources": [
{
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
]
}vault_view_file
Look at an image, or one page of a PDF, from the vault. Returns the picture as image content (PNG, or JPEG when large) with its long edge at most 1568 px, plus JSON that says what was sent: file, width and height, the source size for an image, and page and page_count for a PDF. Pass the id of a filed image or PDF (file_type "image" or "pdf"); page picks the PDF page, default 1, one page per call. For an image or PDF a markdown note embeds, pass the note id and the file name as attachment: the name after attachments/<note id>/ in the note, or attachment_text[].file from vault_read_note. A model that cannot take images gets a text notice instead of the picture.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
attachment | string | no | min length 1 |
page | integer | no | max 9007199254740991; greater than 0 |
Example call:
{
"id": "<noteId>",
"attachment": "<attachmentName>"
}Reply:
{
"json": {
"id": "<noteId>",
"title": "Website relaunch plan",
"attachment": "<attachmentName>",
"file": "attachments/<noteId>/<attachmentName>",
"file_type": "image",
"mime_type": "image/png",
"width": 48,
"height": 48,
"source_width": 48,
"source_height": 48,
"message": "The image follows as image content at 48 x 48 px.",
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
},
"sources": [
{
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
]
},
"image": {
"type": "image",
"mimeType": "image/png",
"data": "<4620 bytes of base64>"
}
}vault_list_folder
List the sub-folders and notes in a folder, addressed by path (as returned in folder_path/path fields); omit path for the vault root. Paths are vault-relative with no leading slash ("projects/active"); a leading slash is also accepted. A folder that does not exist fails with NOT_FOUND. recursive includes every nested level instead of direct children only. Returns at most 1000 notes. Each note entry carries file_type; a filed pdf/image/audio/video file lists as kind "file", not "note".
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | no | |
id | string | no | min length 1 |
recursive | boolean | no |
Example call:
{
"path": "Projects"
}Reply:
[
{
"kind": "note",
"id": "<noteId>",
"name": "Website relaunch plan",
"path": "Projects/Website relaunch plan.md",
"file_type": "markdown",
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
},
{
"kind": "file",
"id": "<fileId>",
"name": "report",
"path": "Projects/report.pdf",
"file_type": "pdf",
"href": "memry://note/<fileId>",
"source_ref": {
"kind": "note",
"id": "<fileId>",
"title": "report",
"href": "memry://note/<fileId>"
}
},
{
"kind": "note",
"id": "<deleteNote2Id>",
"name": "Scratch 2",
"path": "Projects/Scratch 2.md",
"file_type": "markdown",
"href": "memry://note/<deleteNote2Id>",
"source_ref": {
"kind": "note",
"id": "<deleteNote2Id>",
"title": "Scratch 2",
"href": "memry://note/<deleteNote2Id>"
}
}
]vault_get_current_note
Return the note currently open in the originating renderer window, or null.
Read tool.
Takes no arguments.
Example call:
{}Reply:
nullvault_list_tasks
List tasks, optionally filtered. status is "open" (not completed), "completed", or a status id from vault_list_statuses; omitted, completed tasks are excluded. due_before is an ISO date; tag matches one tag name. Returns id, title, status label, due, project id, and tags.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
status | string | no | |
project_id | string | no | min length 1 |
due_before | string | no | |
tag | string | no | |
limit | integer | no | max 200; greater than 0 |
Example call:
{
"status": "open",
"project_id": "<projectId>",
"limit": 5
}Reply:
[
{
"id": "<taskId>",
"title": "Write landing page copy",
"status": "open",
"due": "2026-10-09",
"project": "<projectId>",
"tags": ["website"],
"href": "memry://task/<taskId>",
"source_ref": {
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>"
}
},
{
"id": "ztuhBvw-P3_1skGUZE4Xv",
"title": "Draft the hero headline",
"status": "open",
"due": null,
"project": "<projectId>",
"tags": [],
"href": "memry://task/ztuhBvw-P3_1skGUZE4Xv",
"source_ref": {
"kind": "task",
"id": "ztuhBvw-P3_1skGUZE4Xv",
"title": "Draft the hero headline",
"href": "memry://task/ztuhBvw-P3_1skGUZE4Xv"
}
},
{
"id": "<task2Id>",
"title": "Review the new design",
"status": "open",
"due": "2026-10-07",
"project": "<projectId>",
"tags": [],
"href": "memry://task/<task2Id>",
"source_ref": {
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>"
}
}
]vault_get_task
Read a task by id.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<taskId>"
}Reply:
{
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write landing page copy",
"description": null,
"priority": 2,
"position": 0,
"dueDate": "2026-10-09",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:25.637Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0,
"href": "memry://task/<taskId>",
"source_ref": {
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>"
},
"sources": [
{
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>"
}
]
}vault_list_projects
List all projects with task counts and linked note/file/event counts.
Read tool.
Takes no arguments.
Example call:
{}Reply:
[
{
"id": "inbox",
"name": "Inbox",
"status": "active",
"task_count": 0,
"icon": "📥",
"home_note_id": null,
"linked_counts": {
"notes": 0,
"files": 0,
"events": 0
},
"href": "memry://project/inbox",
"source_ref": {
"kind": "project",
"id": "inbox",
"title": "Inbox",
"href": "memry://project/inbox",
"icon": "📥"
}
},
{
"id": "<projectId>",
"name": "Website relaunch",
"status": "active",
"task_count": 9,
"icon": null,
"home_note_id": null,
"linked_counts": {
"notes": 1,
"files": 0,
"events": 0
},
"href": "memry://project/<projectId>",
"source_ref": {
"kind": "project",
"id": "<projectId>",
"title": "Website relaunch",
"href": "memry://project/<projectId>"
}
},
{
"id": "<project2Id>",
"name": "Autumn hiring",
"status": "active",
"task_count": 0,
"icon": null,
"home_note_id": null,
"linked_counts": {
"notes": 0,
"files": 0,
"events": 0
},
"href": "memry://project/<project2Id>",
"source_ref": {
"kind": "project",
"id": "<project2Id>",
"title": "Autumn hiring",
"href": "memry://project/<project2Id>"
}
}
]vault_get_project
Read a project by id.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<projectId>"
}Reply:
{
"id": "<projectId>",
"name": "Website relaunch",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 1,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.610Z",
"modifiedAt": "2026-10-07T11:17:25.610Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
],
"href": "memry://project/<projectId>",
"source_ref": {
"kind": "project",
"id": "<projectId>",
"title": "Website relaunch",
"href": "memry://project/<projectId>"
},
"sources": [
{
"kind": "project",
"id": "<projectId>",
"title": "Website relaunch",
"href": "memry://project/<projectId>"
}
]
}vault_list_statuses
List statuses for a project.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
project_id | string | yes | min length 1 |
Example call:
{
"project_id": "<projectId>"
}Reply:
[
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]vault_get_journal_entry
Return the journal entry for an ISO date or null.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"date": "2026-10-05"
}Reply:
{
"id": "j2026-10-05",
"date": "2026-10-05",
"content_markdown": "Kicked off the relaunch.",
"sources": [
{
"kind": "journal",
"id": "2026-10-05",
"title": "Journal 2026-10-05",
"href": "memry://journal/2026-10-05"
}
]
}vault_list_journal_entries
List journal entry summaries within a date range (inclusive).
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
from | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
to | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"from": "2026-10-01",
"to": "2026-10-31"
}Reply:
[
{
"id": "j2026-10-06",
"date": "2026-10-06",
"title": "2026-10-06"
},
{
"id": "j2026-10-05",
"date": "2026-10-05",
"title": "2026-10-05"
}
]vault_list_inbox_items
List inbox items (unread first by default).
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
unread_only | boolean | no |
Example call:
{
"unread_only": false
}Reply:
[
{
"id": "<voiceInboxId>",
"type": "voice",
"source": "voice",
"title": "Voice memo (0:01)",
"snippet": "",
"captured_at": 1791371845946,
"href": "memry://inbox/<voiceInboxId>",
"source_ref": {
"kind": "inbox",
"id": "<voiceInboxId>",
"title": "Voice memo (0:01)",
"href": "memry://inbox/<voiceInboxId>",
"itemType": "voice"
}
},
{
"id": "<linkInboxId>",
"type": "link",
"source": "https://example.com/pricing",
"title": "Pricing",
"snippet": "",
"captured_at": 1791371845922,
"href": "memry://inbox/<linkInboxId>",
"source_ref": {
"kind": "inbox",
"id": "<linkInboxId>",
"title": "Pricing",
"href": "memry://inbox/<linkInboxId>",
"itemType": "link"
}
},
{
"id": "<inbox15Id>",
"type": "note",
"source": "note",
"title": "Idea 15",
"snippet": "Idea 15: follow up on the launch",
"captured_at": 1791371845900,
"href": "memry://inbox/<inbox15Id>",
"source_ref": {
"kind": "inbox",
"id": "<inbox15Id>",
"title": "Idea 15",
"href": "memry://inbox/<inbox15Id>",
"itemType": "note"
}
}
]vault_get_inbox_item
Read an inbox item by id.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<inboxId>"
}Reply:
{
"id": "<inboxId>",
"type": "note",
"title": "Printer",
"content": "Call the printer about flyers",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:25.759Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inboxId>",
"source_ref": {
"kind": "inbox",
"id": "<inboxId>",
"title": "Printer",
"href": "memry://inbox/<inboxId>",
"itemType": "note"
},
"sources": [
{
"kind": "inbox",
"id": "<inboxId>",
"title": "Printer",
"href": "memry://inbox/<inboxId>",
"itemType": "note"
}
]
}vault_get_tags
List all tags with usage counts, color, icon, sort order, and the tag category they belong to (category_id and category_name, both null when uncategorized).
Read tool.
Takes no arguments.
Example call:
{}Reply:
[
{
"name": "website",
"count": 3,
"color": "violet",
"icon": null,
"category_id": null,
"category_name": null,
"sort_order": 0
},
{
"name": "planning",
"count": 2,
"color": "indigo",
"icon": null,
"category_id": null,
"category_name": null,
"sort_order": 0
},
{
"name": "active",
"count": 1,
"color": "pink",
"icon": null,
"category_id": null,
"category_name": null,
"sort_order": 0
}
]vault_list_canvases
List spatial canvases with how many notes/tasks/events sit on each. Canvases live in folders, so two can share a title — each entry carries its folder and the folder-qualified path ("Work/Plan") that names it unambiguously. Never returns scene geometry.
Read tool.
Takes no arguments.
Example call:
{}Reply:
[
{
"id": "<deleteCanvasId>",
"title": "Scratch board",
"folder": null,
"path": "Scratch board",
"updated_at": 1791371846105,
"item_count": 0
},
{
"id": "<canvasId>",
"title": "Launch board",
"folder": null,
"path": "Launch board",
"updated_at": 1791371846095,
"item_count": 0
}
]vault_read_canvas
Read one canvas: title, the entities on it (with titles), and any text written on it. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Returns no scene geometry — use vault_add_canvas_item to change what is on it.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<canvasId>"
}Reply:
{
"id": "<canvasId>",
"title": "Launch board",
"created_at": 1791371846095,
"updated_at": 1791371846095,
"items": [],
"texts": [],
"element_count": 0,
"texts_truncated": false
}vault_read_canvas_elements
Read the SHAPES on a canvas: every element with its id, type, position, size, text, colors, arrow bindings and frame. This is the read to use before drawing — an element id from here is what vault_draw_on_canvas binds an arrow to and what vault_edit_canvas_elements changes. Cards carry entity_type/entity_id. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Use vault_read_canvas instead when you only need to know WHICH notes/tasks/events are on it.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<canvasId>"
}Reply:
{
"canvas_id": "<canvasId>",
"elements": [],
"element_count": 0,
"truncated": false
}vault_desktop_read
Run an allowlisted read-only desktop API operation through the memrynote window. A note in the reply that is a filed pdf/image/audio/video file comes back as its metadata with contentOmitted: true and contentAccess naming how to read it. A reply whose JSON is over 100 KB in UTF-8 bytes comes back as { truncated, totalBytes, message, partial }. args are the positional arguments; vault_desktop_describe returns each operation's argument schema, and a call that does not match it is refused with the field, the expected type and the allowed values. Calendar examples: calendar.listEvents with args [{}], calendar.getRange with args [{"startAt":"2026-05-14T00:00:00.000Z","endAt":"2026-06-15T00:00:00.000Z"}].
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
operation | "notes.get" | "notes.getByPath" | "notes.getFile" | "notes.resolveByTitle" | "notes.resolveWikiTarget" | "notes.previewByTitle" | "notes.list" | "notes.getTags" | "notes.getLinks" | "notes.getFolders" | "notes.exists" | "notes.getPropertyDefinitions" | "notes.listAttachments" | "notes.getFolderConfig" | "notes.getFolderTemplate" | "notes.getVersions" | "notes.getVersion" | "notes.getPositions" | "notes.getAllPositions" | "notes.getLocalOnlyCount" | "notes.getCalendarPropertyNames" | "tasks.get" | "tasks.list" | "tasks.getSubtasks" | "tasks.getProject" | "tasks.listProjects" | "tasks.listStatuses" | "tasks.getTags" | "tasks.getStats" | "tasks.getToday" | "tasks.getUpcoming" | "tasks.getOverdue" | "tasks.getLinkedTasks" | "tasks.listProjectLinks" | "tasks.listProjectContents" | "tasks.listForItem" | "inbox.get" | "inbox.list" | "inbox.previewLink" | "inbox.getSuggestions" | "inbox.getTags" | "inbox.getSnoozed" | "inbox.getStats" | "inbox.getJobs" | "inbox.getPatterns" | "inbox.getStaleThreshold" | "inbox.listArchived" | "inbox.getFilingHistory" | "journal.getEntry" | "journal.getHeatmap" | "journal.getMonthEntries" | "journal.getYearStats" | "journal.getDayContext" | "journal.getAllTags" | "journal.getStreak" | "properties.get" | "templates.list" | "templates.get" | "savedFilters.list" | "bookmarks.get" | "bookmarks.list" | "bookmarks.isBookmarked" | "bookmarks.listByType" | "bookmarks.getByItem" | "tags.getNotesByTag" | "tags.getAllWithCounts" | "tags.listCategories" | "folderView.getConfig" | "folderView.getViews" | "folderView.listWithProperties" | "folderView.getAvailableProperties" | "folderView.getFolderSuggestions" | "folderView.folderExists" | "reminders.get" | "reminders.list" | "reminders.getUpcoming" | "reminders.getDue" | "reminders.getForTarget" | "reminders.countPending" | "calendar.getEvent" | "calendar.listEvents" | "calendar.getRange" | "settings.get" | "settings.getJournalSettings" | "settings.getAISettings" | "settings.getVoiceTranscriptionSettings" | "settings.getVoiceModelStatus" | "settings.getVoiceRecordingReadiness" | "settings.getVoiceTranscriptionOpenAIKeyStatus" | "settings.getAIModelStatus" | "settings.getTabSettings" | "settings.getNoteEditorSettings" | "settings.getGeneralSettings" | "settings.getEditorSettings" | "settings.getTaskSettings" | "settings.getKeyboardSettings" | "settings.getSyncSettings" | "settings.getBackupSettings" | "settings.getGraphSettings" | "settings.getCalendarSettings" | "settings.getFeaturesSettings" | "settings.getInboxSettings" | "search.query" | "search.quick" | "search.getStats" | "search.getReasons" | "search.getAllTags" | "graph.getData" | "graph.getLocal" | "homePages.list" | "homePages.get" | "vault.getAll" | "vault.getStatus" | "vault.getConfig" | "vault.listAccount" | "canvas.list" | "canvas.getAsset" | "canvas.listAssets" | "canvas.libraryList" | yes | "notes.get", "notes.getByPath", "notes.getFile", "notes.resolveByTitle", "notes.resolveWikiTarget", "notes.previewByTitle", "notes.list", "notes.getTags", "notes.getLinks", "notes.getFolders", "notes.exists", "notes.getPropertyDefinitions", "notes.listAttachments", "notes.getFolderConfig", "notes.getFolderTemplate", "notes.getVersions", "notes.getVersion", "notes.getPositions", "notes.getAllPositions", "notes.getLocalOnlyCount", "notes.getCalendarPropertyNames", "tasks.get", "tasks.list", "tasks.getSubtasks", "tasks.getProject", "tasks.listProjects", "tasks.listStatuses", "tasks.getTags", "tasks.getStats", "tasks.getToday", "tasks.getUpcoming", "tasks.getOverdue", "tasks.getLinkedTasks", "tasks.listProjectLinks", "tasks.listProjectContents", "tasks.listForItem", "inbox.get", "inbox.list", "inbox.previewLink", "inbox.getSuggestions", "inbox.getTags", "inbox.getSnoozed", "inbox.getStats", "inbox.getJobs", "inbox.getPatterns", "inbox.getStaleThreshold", "inbox.listArchived", "inbox.getFilingHistory", "journal.getEntry", "journal.getHeatmap", "journal.getMonthEntries", "journal.getYearStats", "journal.getDayContext", "journal.getAllTags", "journal.getStreak", "properties.get", "templates.list", "templates.get", "savedFilters.list", "bookmarks.get", "bookmarks.list", "bookmarks.isBookmarked", "bookmarks.listByType", "bookmarks.getByItem", "tags.getNotesByTag", "tags.getAllWithCounts", "tags.listCategories", "folderView.getConfig", "folderView.getViews", "folderView.listWithProperties", "folderView.getAvailableProperties", "folderView.getFolderSuggestions", "folderView.folderExists", "reminders.get", "reminders.list", "reminders.getUpcoming", "reminders.getDue", "reminders.getForTarget", "reminders.countPending", "calendar.getEvent", "calendar.listEvents", "calendar.getRange", "settings.get", "settings.getJournalSettings", "settings.getAISettings", "settings.getVoiceTranscriptionSettings", "settings.getVoiceModelStatus", "settings.getVoiceRecordingReadiness", "settings.getVoiceTranscriptionOpenAIKeyStatus", "settings.getAIModelStatus", "settings.getTabSettings", "settings.getNoteEditorSettings", "settings.getGeneralSettings", "settings.getEditorSettings", "settings.getTaskSettings", "settings.getKeyboardSettings", "settings.getSyncSettings", "settings.getBackupSettings", "settings.getGraphSettings", "settings.getCalendarSettings", "settings.getFeaturesSettings", "settings.getInboxSettings", "search.query", "search.quick", "search.getStats", "search.getReasons", "search.getAllTags", "graph.getData", "graph.getLocal", "homePages.list", "homePages.get", "vault.getAll", "vault.getStatus", "vault.getConfig", "vault.listAccount", "canvas.list", "canvas.getAsset", "canvas.listAssets", "canvas.libraryList" |
args | any[] | no | default [] |
Example call:
{
"operation": "notes.list",
"args": [
{
"folder": "Projects",
"limit": 2
}
]
}Reply:
{
"notes": [
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:25.736Z",
"tags": ["planning", "website"],
"wordCount": 17,
"snippet": "Website relaunch plan Second draft. Goals - Faster pages - Clearer pricing See Launch checklist.",
"emoji": null,
"localOnly": false,
"fileType": "markdown",
"mimeType": null,
"fileSize": null
},
{
"id": "<fileId>",
"path": "Projects/report.pdf",
"title": "report",
"created": "2026-10-07T11:17:19.741Z",
"modified": "2026-10-07T11:17:25.104Z",
"tags": [],
"wordCount": null,
"emoji": null,
"localOnly": false,
"fileType": "pdf",
"mimeType": "application/pdf",
"fileSize": 590
}
],
"total": 7,
"hasMore": true
}vault_desktop_describe
Look up how to call a desktop API operation before calling it through vault_desktop_read or vault_desktop_write. With operation, returns a summary of what it does, its tool, whether it needs approval, its parameters in call order and args_schema: the JSON Schema (draft 2020-12) of the args array, with every type, required key, allowed value and default. Without operation, lists every operation with its tool and call shape; a trailing ? marks an optional argument.
Read tool.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
operation | "notes.get" | "notes.getByPath" | "notes.getFile" | "notes.resolveByTitle" | "notes.resolveWikiTarget" | "notes.previewByTitle" | "notes.list" | "notes.getTags" | "notes.getLinks" | "notes.getFolders" | "notes.exists" | "notes.getPropertyDefinitions" | "notes.listAttachments" | "notes.getFolderConfig" | "notes.getFolderTemplate" | "notes.getVersions" | "notes.getVersion" | "notes.getPositions" | "notes.getAllPositions" | "notes.getLocalOnlyCount" | "notes.getCalendarPropertyNames" | "tasks.get" | "tasks.list" | "tasks.getSubtasks" | "tasks.getProject" | "tasks.listProjects" | "tasks.listStatuses" | "tasks.getTags" | "tasks.getStats" | "tasks.getToday" | "tasks.getUpcoming" | "tasks.getOverdue" | "tasks.getLinkedTasks" | "tasks.listProjectLinks" | "tasks.listProjectContents" | "tasks.listForItem" | "inbox.get" | "inbox.list" | "inbox.previewLink" | "inbox.getSuggestions" | "inbox.getTags" | "inbox.getSnoozed" | "inbox.getStats" | "inbox.getJobs" | "inbox.getPatterns" | "inbox.getStaleThreshold" | "inbox.listArchived" | "inbox.getFilingHistory" | "journal.getEntry" | "journal.getHeatmap" | "journal.getMonthEntries" | "journal.getYearStats" | "journal.getDayContext" | "journal.getAllTags" | "journal.getStreak" | "properties.get" | "templates.list" | "templates.get" | "savedFilters.list" | "bookmarks.get" | "bookmarks.list" | "bookmarks.isBookmarked" | "bookmarks.listByType" | "bookmarks.getByItem" | "tags.getNotesByTag" | "tags.getAllWithCounts" | "tags.listCategories" | "folderView.getConfig" | "folderView.getViews" | "folderView.listWithProperties" | "folderView.getAvailableProperties" | "folderView.getFolderSuggestions" | "folderView.folderExists" | "reminders.get" | "reminders.list" | "reminders.getUpcoming" | "reminders.getDue" | "reminders.getForTarget" | "reminders.countPending" | "calendar.getEvent" | "calendar.listEvents" | "calendar.getRange" | "settings.get" | "settings.getJournalSettings" | "settings.getAISettings" | "settings.getVoiceTranscriptionSettings" | "settings.getVoiceModelStatus" | "settings.getVoiceRecordingReadiness" | "settings.getVoiceTranscriptionOpenAIKeyStatus" | "settings.getAIModelStatus" | "settings.getTabSettings" | "settings.getNoteEditorSettings" | "settings.getGeneralSettings" | "settings.getEditorSettings" | "settings.getTaskSettings" | "settings.getKeyboardSettings" | "settings.getSyncSettings" | "settings.getBackupSettings" | "settings.getGraphSettings" | "settings.getCalendarSettings" | "settings.getFeaturesSettings" | "settings.getInboxSettings" | "search.query" | "search.quick" | "search.getStats" | "search.getReasons" | "search.getAllTags" | "graph.getData" | "graph.getLocal" | "homePages.list" | "homePages.get" | "vault.getAll" | "vault.getStatus" | "vault.getConfig" | "vault.listAccount" | "canvas.list" | "canvas.getAsset" | "canvas.listAssets" | "canvas.libraryList" | "notes.create" | "notes.update" | "notes.rename" | "notes.move" | "notes.delete" | "notes.createFolder" | "notes.renameFolder" | "notes.deleteFolder" | "notes.createPropertyDefinition" | "notes.updatePropertyDefinition" | "notes.ensurePropertyDefinition" | "notes.addPropertyOption" | "notes.addStatusOption" | "notes.removePropertyOption" | "notes.renamePropertyOption" | "notes.updateOptionColor" | "notes.deletePropertyDefinition" | "notes.uploadAttachment" | "notes.deleteAttachment" | "notes.setFolderConfig" | "notes.restoreVersion" | "notes.deleteVersion" | "notes.reorder" | "notes.importFiles" | "notes.setLocalOnly" | "notes.setCalendarPropertyVisibility" | "notes.applyTemplate" | "notes.exportPdf" | "notes.exportHtml" | "tasks.create" | "tasks.update" | "tasks.delete" | "tasks.complete" | "tasks.uncomplete" | "tasks.archive" | "tasks.unarchive" | "tasks.move" | "tasks.reorder" | "tasks.duplicate" | "tasks.convertToSubtask" | "tasks.convertToTask" | "tasks.createProject" | "tasks.updateProject" | "tasks.deleteProject" | "tasks.archiveProject" | "tasks.reorderProjects" | "tasks.linkProjectItem" | "tasks.unlinkProjectItem" | "tasks.setProjectLinkPinned" | "tasks.setProjectHomeNote" | "tasks.captureUrlToProject" | "tasks.importFilesToProject" | "tasks.createStatus" | "tasks.updateStatus" | "tasks.deleteStatus" | "tasks.reorderStatuses" | "tasks.bulkComplete" | "tasks.bulkDelete" | "tasks.bulkMove" | "tasks.bulkArchive" | "inbox.captureText" | "inbox.captureLink" | "inbox.captureImage" | "inbox.captureVoice" | "inbox.captureClip" | "inbox.capturePdf" | "inbox.update" | "inbox.archive" | "inbox.file" | "inbox.trackSuggestion" | "inbox.convertToNote" | "inbox.convertToTask" | "inbox.convertToEvent" | "inbox.convertToReminder" | "inbox.linkToNote" | "inbox.addTag" | "inbox.removeTag" | "inbox.snooze" | "inbox.unsnooze" | "inbox.markViewed" | "inbox.bulkFile" | "inbox.bulkArchive" | "inbox.bulkTag" | "inbox.bulkSnooze" | "inbox.fileAllStale" | "inbox.retryTranscription" | "inbox.retryMetadata" | "inbox.setStaleThreshold" | "inbox.unarchive" | "inbox.deletePermanent" | "inbox.undoFile" | "inbox.undoArchive" | "journal.createEntry" | "journal.updateEntry" | "journal.deleteEntry" | "properties.set" | "properties.rename" | "templates.create" | "templates.update" | "templates.delete" | "templates.duplicate" | "savedFilters.create" | "savedFilters.update" | "savedFilters.delete" | "savedFilters.reorder" | "bookmarks.create" | "bookmarks.delete" | "bookmarks.toggle" | "bookmarks.reorder" | "bookmarks.bulkDelete" | "bookmarks.bulkCreate" | "tags.pinNoteToTag" | "tags.unpinNoteFromTag" | "tags.renameTag" | "tags.updateTagColor" | "tags.deleteTag" | "tags.removeTagFromNote" | "tags.mergeTag" | "tags.updateTagIcon" | "tags.createCategory" | "tags.renameCategory" | "tags.deleteCategory" | "tags.reorder" | "folderView.setConfig" | "folderView.setView" | "folderView.deleteView" | "reminders.create" | "reminders.update" | "reminders.delete" | "reminders.dismiss" | "reminders.snooze" | "reminders.bulkDismiss" | "calendar.createEvent" | "calendar.updateEvent" | "calendar.deleteEvent" | "settings.set" | "settings.setJournalSettings" | "settings.setAISettings" | "settings.setVoiceTranscriptionSettings" | "settings.setTabSettings" | "settings.setNoteEditorSettings" | "settings.setGeneralSettings" | "settings.setEditorSettings" | "settings.setTaskSettings" | "settings.setKeyboardSettings" | "settings.resetKeyboardSettings" | "settings.setSyncSettings" | "settings.setBackupSettings" | "settings.setGraphSettings" | "settings.setCalendarSettings" | "settings.setFeaturesSettings" | "settings.setInboxSettings" | "search.rebuildIndex" | "search.addReason" | "search.clearReasons" | "homePages.create" | "homePages.update" | "homePages.delete" | "homePages.reorder" | "vault.switch" | "vault.reindex" | "vault.updateConfig" | "vault.downloadRemote" | "canvas.create" | "canvas.delete" | no | "notes.get", "notes.getByPath", "notes.getFile", "notes.resolveByTitle", "notes.resolveWikiTarget", "notes.previewByTitle", "notes.list", "notes.getTags", "notes.getLinks", "notes.getFolders", "notes.exists", "notes.getPropertyDefinitions", "notes.listAttachments", "notes.getFolderConfig", "notes.getFolderTemplate", "notes.getVersions", "notes.getVersion", "notes.getPositions", "notes.getAllPositions", "notes.getLocalOnlyCount", "notes.getCalendarPropertyNames", "tasks.get", "tasks.list", "tasks.getSubtasks", "tasks.getProject", "tasks.listProjects", "tasks.listStatuses", "tasks.getTags", "tasks.getStats", "tasks.getToday", "tasks.getUpcoming", "tasks.getOverdue", "tasks.getLinkedTasks", "tasks.listProjectLinks", "tasks.listProjectContents", "tasks.listForItem", "inbox.get", "inbox.list", "inbox.previewLink", "inbox.getSuggestions", "inbox.getTags", "inbox.getSnoozed", "inbox.getStats", "inbox.getJobs", "inbox.getPatterns", "inbox.getStaleThreshold", "inbox.listArchived", "inbox.getFilingHistory", "journal.getEntry", "journal.getHeatmap", "journal.getMonthEntries", "journal.getYearStats", "journal.getDayContext", "journal.getAllTags", "journal.getStreak", "properties.get", "templates.list", "templates.get", "savedFilters.list", "bookmarks.get", "bookmarks.list", "bookmarks.isBookmarked", "bookmarks.listByType", "bookmarks.getByItem", "tags.getNotesByTag", "tags.getAllWithCounts", "tags.listCategories", "folderView.getConfig", "folderView.getViews", "folderView.listWithProperties", "folderView.getAvailableProperties", "folderView.getFolderSuggestions", "folderView.folderExists", "reminders.get", "reminders.list", "reminders.getUpcoming", "reminders.getDue", "reminders.getForTarget", "reminders.countPending", "calendar.getEvent", "calendar.listEvents", "calendar.getRange", "settings.get", "settings.getJournalSettings", "settings.getAISettings", "settings.getVoiceTranscriptionSettings", "settings.getVoiceModelStatus", "settings.getVoiceRecordingReadiness", "settings.getVoiceTranscriptionOpenAIKeyStatus", "settings.getAIModelStatus", "settings.getTabSettings", "settings.getNoteEditorSettings", "settings.getGeneralSettings", "settings.getEditorSettings", "settings.getTaskSettings", "settings.getKeyboardSettings", "settings.getSyncSettings", "settings.getBackupSettings", "settings.getGraphSettings", "settings.getCalendarSettings", "settings.getFeaturesSettings", "settings.getInboxSettings", "search.query", "search.quick", "search.getStats", "search.getReasons", "search.getAllTags", "graph.getData", "graph.getLocal", "homePages.list", "homePages.get", "vault.getAll", "vault.getStatus", "vault.getConfig", "vault.listAccount", "canvas.list", "canvas.getAsset", "canvas.listAssets", "canvas.libraryList", "notes.create", "notes.update", "notes.rename", "notes.move", "notes.delete", "notes.createFolder", "notes.renameFolder", "notes.deleteFolder", "notes.createPropertyDefinition", "notes.updatePropertyDefinition", "notes.ensurePropertyDefinition", "notes.addPropertyOption", "notes.addStatusOption", "notes.removePropertyOption", "notes.renamePropertyOption", "notes.updateOptionColor", "notes.deletePropertyDefinition", "notes.uploadAttachment", "notes.deleteAttachment", "notes.setFolderConfig", "notes.restoreVersion", "notes.deleteVersion", "notes.reorder", "notes.importFiles", "notes.setLocalOnly", "notes.setCalendarPropertyVisibility", "notes.applyTemplate", "notes.exportPdf", "notes.exportHtml", "tasks.create", "tasks.update", "tasks.delete", "tasks.complete", "tasks.uncomplete", "tasks.archive", "tasks.unarchive", "tasks.move", "tasks.reorder", "tasks.duplicate", "tasks.convertToSubtask", "tasks.convertToTask", "tasks.createProject", "tasks.updateProject", "tasks.deleteProject", "tasks.archiveProject", "tasks.reorderProjects", "tasks.linkProjectItem", "tasks.unlinkProjectItem", "tasks.setProjectLinkPinned", "tasks.setProjectHomeNote", "tasks.captureUrlToProject", "tasks.importFilesToProject", "tasks.createStatus", "tasks.updateStatus", "tasks.deleteStatus", "tasks.reorderStatuses", "tasks.bulkComplete", "tasks.bulkDelete", "tasks.bulkMove", "tasks.bulkArchive", "inbox.captureText", "inbox.captureLink", "inbox.captureImage", "inbox.captureVoice", "inbox.captureClip", "inbox.capturePdf", "inbox.update", "inbox.archive", "inbox.file", "inbox.trackSuggestion", "inbox.convertToNote", "inbox.convertToTask", "inbox.convertToEvent", "inbox.convertToReminder", "inbox.linkToNote", "inbox.addTag", "inbox.removeTag", "inbox.snooze", "inbox.unsnooze", "inbox.markViewed", "inbox.bulkFile", "inbox.bulkArchive", "inbox.bulkTag", "inbox.bulkSnooze", "inbox.fileAllStale", "inbox.retryTranscription", "inbox.retryMetadata", "inbox.setStaleThreshold", "inbox.unarchive", "inbox.deletePermanent", "inbox.undoFile", "inbox.undoArchive", "journal.createEntry", "journal.updateEntry", "journal.deleteEntry", "properties.set", "properties.rename", "templates.create", "templates.update", "templates.delete", "templates.duplicate", "savedFilters.create", "savedFilters.update", "savedFilters.delete", "savedFilters.reorder", "bookmarks.create", "bookmarks.delete", "bookmarks.toggle", "bookmarks.reorder", "bookmarks.bulkDelete", "bookmarks.bulkCreate", "tags.pinNoteToTag", "tags.unpinNoteFromTag", "tags.renameTag", "tags.updateTagColor", "tags.deleteTag", "tags.removeTagFromNote", "tags.mergeTag", "tags.updateTagIcon", "tags.createCategory", "tags.renameCategory", "tags.deleteCategory", "tags.reorder", "folderView.setConfig", "folderView.setView", "folderView.deleteView", "reminders.create", "reminders.update", "reminders.delete", "reminders.dismiss", "reminders.snooze", "reminders.bulkDismiss", "calendar.createEvent", "calendar.updateEvent", "calendar.deleteEvent", "settings.set", "settings.setJournalSettings", "settings.setAISettings", "settings.setVoiceTranscriptionSettings", "settings.setTabSettings", "settings.setNoteEditorSettings", "settings.setGeneralSettings", "settings.setEditorSettings", "settings.setTaskSettings", "settings.setKeyboardSettings", "settings.resetKeyboardSettings", "settings.setSyncSettings", "settings.setBackupSettings", "settings.setGraphSettings", "settings.setCalendarSettings", "settings.setFeaturesSettings", "settings.setInboxSettings", "search.rebuildIndex", "search.addReason", "search.clearReasons", "homePages.create", "homePages.update", "homePages.delete", "homePages.reorder", "vault.switch", "vault.reindex", "vault.updateConfig", "vault.downloadRemote", "canvas.create", "canvas.delete" |
Example call:
{
"operation": "notes.ensurePropertyDefinition"
}Reply:
{
"operation": "notes.ensurePropertyDefinition",
"summary": "Define a status, select or multiselect property if it does not exist yet.",
"tool": "vault_desktop_write",
"call": "notes.ensurePropertyDefinition(name, type)",
"requires_approval": true,
"params": [
{
"name": "name",
"required": true
},
{
"name": "type",
"required": true
}
],
"args_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"prefixItems": [
{
"type": "string",
"minLength": 1
},
{
"type": "string",
"enum": ["status", "select", "multiselect"]
}
],
"minItems": 2,
"maxItems": 2
}
}Write tools
vault_create_note
Create a new note. Checkbox lines you add are stored as plain checkboxes, marked {check}, unless the owner turned on task conversion for agents; then they become tasks and the reply lists them in created_tasks. Create tasks with vault_create_task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | yes | min length 1 |
content_markdown | string | yes | |
folder_path | string | no | |
tags | string[] | no |
Example call:
{
"title": "Release notes draft",
"content_markdown": "# Release notes\n\n- New onboarding\n",
"folder_path": "Projects",
"tags": ["website"]
}Reply:
{
"id": "efoqaligj1ut",
"title": "Release notes draft",
"folder_path": "Projects",
"tags": ["website"],
"properties": {},
"body_bytes": 34,
"body_sha256": "54c77e654f16fdeb7d264c2ee27825368140cb51fdd6f4a2badbcdf3e4e61e8c",
"href": "memry://note/efoqaligj1ut",
"source_ref": {
"kind": "note",
"id": "efoqaligj1ut",
"title": "Release notes draft",
"href": "memry://note/efoqaligj1ut"
},
"sources": [
{
"kind": "note",
"id": "efoqaligj1ut",
"title": "Release notes draft",
"href": "memry://note/efoqaligj1ut"
}
]
}vault_rename_note
Rename a note. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
title | string | yes | min length 1; max length 200 |
Example call:
{
"id": "<renameNoteId>",
"title": "Q4 roadmap"
}Reply:
{
"id": "<renameNoteId>",
"title": "Q4 roadmap",
"folder_path": "Projects",
"tags": ["draft"],
"properties": {},
"body_bytes": 11,
"body_sha256": "c754f685059af7118ad4203b1296b15c16e82185c4b90e0da05c80f4805c6212",
"href": "memry://note/<renameNoteId>",
"source_ref": {
"kind": "note",
"id": "<renameNoteId>",
"title": "Q4 roadmap",
"href": "memry://note/<renameNoteId>"
},
"sources": [
{
"kind": "note",
"id": "<renameNoteId>",
"title": "Q4 roadmap",
"href": "memry://note/<renameNoteId>"
}
]
}vault_delete_note
Delete a note. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<deleteNote2Id>"
}Reply:
{
"id": "<deleteNote2Id>"
}vault_create_folder
Create a note folder. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | yes | min length 1 |
Example call:
{
"path": "Projects/Research"
}Reply:
{
"path": "Projects/Research",
"href": "memry://folder/Projects%2FResearch",
"source_ref": {
"kind": "folder",
"id": "Projects/Research",
"title": "Projects/Research",
"href": "memry://folder/Projects%2FResearch"
},
"sources": [
{
"kind": "folder",
"id": "Projects/Research",
"title": "Projects/Research",
"href": "memry://folder/Projects%2FResearch"
}
]
}vault_rename_folder
Rename a note folder. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
old_path | string | yes | min length 1 |
new_path | string | yes | min length 1 |
Example call:
{
"old_path": "Projects/Research",
"new_path": "Projects/User research"
}Reply:
{
"path": "Projects/User research",
"href": "memry://folder/Projects%2FUser%20research",
"source_ref": {
"kind": "folder",
"id": "Projects/User research",
"title": "Projects/User research",
"href": "memry://folder/Projects%2FUser%20research"
},
"sources": [
{
"kind": "folder",
"id": "Projects/User research",
"title": "Projects/User research",
"href": "memry://folder/Projects%2FUser%20research"
}
]
}vault_delete_folder
Delete a note folder and its contents. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | yes | min length 1 |
Example call:
{
"path": "Projects/User research"
}Reply:
{
"path": "Projects/User research"
}vault_create_task
Create a new task. Without project_id it goes to the Inbox project. status_id takes an id from vault_list_statuses. due_date and due are aliases (due_date wins), as are description and notes. source_note_id links the task back to the note it came from. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | yes | min length 1; max length 500 |
status_id | string | null | no | |
project_id | string | null | no | |
parent_id | string | null | no | |
due | string | null | no | |
due_date | string | null | no | |
due_time | string | null | no | |
start_date | string | null | no | |
priority | integer | no | min 0; max 4 |
notes | string | null | no | |
description | string | null | no | |
is_repeating | boolean | no | |
repeat_config | Record<string, any> | null | no | |
repeat_from | "due" | "completion" | null | no | "due", "completion" |
tags | string[] | no | max items 20 |
linked_note_ids | string[] | no | |
source_note_id | string | null | no | |
position | integer | no | min -9007199254740991; max 9007199254740991 |
Example call:
{
"title": "Book the launch venue",
"project_id": "<projectId>",
"due_date": "2026-10-20",
"priority": 2,
"tags": ["launch"]
}Reply:
{
"id": "3qwZ40o0wAIvXbsKo6dWU",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Book the launch venue",
"description": null,
"priority": 2,
"position": 8,
"dueDate": "2026-10-20",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:30.877Z",
"modifiedAt": "2026-10-07T11:17:30.877Z",
"isRepeating": false,
"tags": ["launch"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/3qwZ40o0wAIvXbsKo6dWU",
"source_ref": {
"kind": "task",
"id": "3qwZ40o0wAIvXbsKo6dWU",
"title": "Book the launch venue",
"href": "memry://task/3qwZ40o0wAIvXbsKo6dWU"
},
"sources": [
{
"kind": "task",
"id": "3qwZ40o0wAIvXbsKo6dWU",
"title": "Book the launch venue",
"href": "memry://task/3qwZ40o0wAIvXbsKo6dWU"
}
]
}vault_delete_task
Delete a task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<deleteTask2Id>"
}Reply:
{
"id": "<deleteTask2Id>"
}vault_complete_task
Complete a task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
completed_at | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
Example call:
{
"id": "<task2Id>"
}Reply:
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 1,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": "2026-10-07T11:17:30.918Z",
"archivedAt": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {
"_offline": 1
},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:30.918Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task2Id>",
"source_ref": {
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>"
},
"sources": [
{
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>"
}
]
}vault_uncomplete_task
Reopen a completed task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<task2Id>"
}Reply:
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 1,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {
"_offline": 2
},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:30.954Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task2Id>",
"source_ref": {
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>"
},
"sources": [
{
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>"
}
]
}vault_archive_task
Archive a task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<task3Id>"
}Reply:
{
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 2,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": "2026-10-07T11:17:30.968Z",
"clock": {
"_offline": 2
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 1
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:30.968Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task3Id>",
"source_ref": {
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
},
"sources": [
{
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
}
]
}vault_unarchive_task
Unarchive a task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<task3Id>"
}Reply:
{
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 2,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 2
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:30.981Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task3Id>",
"source_ref": {
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
},
"sources": [
{
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
}
]
}vault_move_task
Move a task between projects/statuses/parents. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
task_id | string | yes | min length 1 |
target_project_id | string | no | min length 1 |
target_status_id | string | null | no | |
target_parent_id | string | null | no | |
position | integer | yes | min -9007199254740991; max 9007199254740991 |
Example call:
{
"task_id": "<task3Id>",
"target_status_id": "<statusDoingId>",
"position": 0
}Reply:
{
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": "<statusDoingId>",
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 0,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {
"_offline": 1
},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 2
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:30.995Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task3Id>",
"source_ref": {
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
},
"sources": [
{
"kind": "task",
"id": "<task3Id>",
"title": "Update the footer links",
"href": "memry://task/<task3Id>"
}
]
}vault_reorder_tasks
Reorder tasks. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
task_ids | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"task_ids": ["<taskId>", "<task2Id>"],
"positions": [1, 0]
}Reply:
{
"ids": ["<taskId>", "<task2Id>"],
"tasks": [
{
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write landing page copy",
"description": null,
"priority": 3,
"position": 1,
"dueDate": "2026-10-15",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {
"_offline": 1
},
"position": {
"_offline": 1
},
"dueDate": {
"_offline": 1
},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:31.007Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0
},
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 0,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {
"_offline": 2
},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:31.007Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
]
}vault_duplicate_task
Duplicate a task with subtasks. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<taskId>"
}Reply:
{
"id": "dv1kWDmXWaN5NgDIkxyf2",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Copy of Write landing page copy",
"description": null,
"priority": 3,
"position": 2,
"dueDate": "2026-10-15",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:31.021Z",
"modifiedAt": "2026-10-07T11:17:31.021Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0,
"href": "memry://task/dv1kWDmXWaN5NgDIkxyf2",
"source_ref": {
"kind": "task",
"id": "dv1kWDmXWaN5NgDIkxyf2",
"title": "Copy of Write landing page copy",
"href": "memry://task/dv1kWDmXWaN5NgDIkxyf2"
},
"sources": [
{
"kind": "task",
"id": "dv1kWDmXWaN5NgDIkxyf2",
"title": "Copy of Write landing page copy",
"href": "memry://task/dv1kWDmXWaN5NgDIkxyf2"
}
]
}vault_convert_task_to_subtask
Convert a task into a subtask. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
task_id | string | yes | min length 1 |
parent_id | string | yes | min length 1 |
Example call:
{
"task_id": "<task4Id>",
"parent_id": "<taskId>"
}Reply:
{
"id": "<task4Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": "<taskId>",
"title": "Check the meta descriptions",
"description": null,
"priority": 0,
"position": 3,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {
"_offline": 1
},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.657Z",
"modifiedAt": "2026-10-07T11:17:31.047Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task4Id>",
"source_ref": {
"kind": "task",
"id": "<task4Id>",
"title": "Check the meta descriptions",
"href": "memry://task/<task4Id>"
},
"sources": [
{
"kind": "task",
"id": "<task4Id>",
"title": "Check the meta descriptions",
"href": "memry://task/<task4Id>"
}
]
}vault_convert_subtask_to_task
Convert a subtask back to a top-level task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<task4Id>"
}Reply:
{
"id": "<task4Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Check the meta descriptions",
"description": null,
"priority": 0,
"position": 3,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {
"_offline": 2
},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.657Z",
"modifiedAt": "2026-10-07T11:17:31.067Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0,
"href": "memry://task/<task4Id>",
"source_ref": {
"kind": "task",
"id": "<task4Id>",
"title": "Check the meta descriptions",
"href": "memry://task/<task4Id>"
},
"sources": [
{
"kind": "task",
"id": "<task4Id>",
"title": "Check the meta descriptions",
"href": "memry://task/<task4Id>"
}
]
}vault_create_project
Create a task project. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
name | string | yes | min length 1; max length 100 |
description | string | null | no | |
color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6366f1" |
icon | string | null | no | |
statuses | object[] | no | min items 2 |
statuses[].id | string | no | min length 1 |
statuses[].name | string | yes | min length 1; max length 50 |
statuses[].color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
statuses[].type | "todo" | "in_progress" | "done" | yes | "todo", "in_progress", "done" |
statuses[].order | integer | yes | min 0; max 9007199254740991 |
Example call:
{
"name": "Hiring",
"color": "#0ea5e9"
}Reply:
{
"id": "Wczp9XguJ1wUzvFPcvDRS",
"name": "Hiring",
"description": null,
"color": "#0ea5e9",
"icon": null,
"position": 6,
"isInbox": false,
"createdAt": "2026-10-07T11:17:31.081Z",
"modifiedAt": "2026-10-07T11:17:31.081Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "Wczp9XguJ1wUzvFPcvDRS-todo",
"projectId": "Wczp9XguJ1wUzvFPcvDRS",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:31.081Z"
},
{
"id": "Wczp9XguJ1wUzvFPcvDRS-in-progress",
"projectId": "Wczp9XguJ1wUzvFPcvDRS",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:31.081Z"
},
{
"id": "Wczp9XguJ1wUzvFPcvDRS-done",
"projectId": "Wczp9XguJ1wUzvFPcvDRS",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:31.081Z"
}
],
"href": "memry://project/Wczp9XguJ1wUzvFPcvDRS",
"source_ref": {
"kind": "project",
"id": "Wczp9XguJ1wUzvFPcvDRS",
"title": "Hiring",
"href": "memry://project/Wczp9XguJ1wUzvFPcvDRS"
},
"sources": [
{
"kind": "project",
"id": "Wczp9XguJ1wUzvFPcvDRS",
"title": "Hiring",
"href": "memry://project/Wczp9XguJ1wUzvFPcvDRS"
}
]
}vault_update_project
Update a task project. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
name | string | no | min length 1; max length 100 |
description | string | null | no | |
color | string | no | pattern ^#[0-9a-fA-F]{6}$ |
icon | string | null | no | |
statuses | object[] | no | min items 2 |
statuses[].id | string | no | min length 1 |
statuses[].name | string | yes | min length 1; max length 50 |
statuses[].color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
statuses[].type | "todo" | "in_progress" | "done" | yes | "todo", "in_progress", "done" |
statuses[].order | integer | yes | min 0; max 9007199254740991 |
Example call:
{
"id": "<project2Id>",
"description": "Everything for the autumn hiring round."
}Reply:
{
"id": "<project2Id>",
"name": "Autumn hiring",
"description": "Everything for the autumn hiring round.",
"color": "#6366f1",
"icon": null,
"position": 2,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.613Z",
"modifiedAt": "2026-10-07T11:17:31.094Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 2
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<project2Id>-todo",
"projectId": "<project2Id>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.613Z"
},
{
"id": "<project2Id>-in-progress",
"projectId": "<project2Id>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.613Z"
},
{
"id": "<project2Id>-done",
"projectId": "<project2Id>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.613Z"
}
],
"href": "memry://project/<project2Id>",
"source_ref": {
"kind": "project",
"id": "<project2Id>",
"title": "Autumn hiring",
"href": "memry://project/<project2Id>"
},
"sources": [
{
"kind": "project",
"id": "<project2Id>",
"title": "Autumn hiring",
"href": "memry://project/<project2Id>"
}
]
}vault_delete_project
Delete a task project. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<deleteProject2Id>"
}Reply:
{
"id": "<deleteProject2Id>"
}vault_archive_project
Archive a task project. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<project2Id>"
}Reply:
{
"id": "<project2Id>",
"name": "Autumn hiring",
"description": "Everything for the autumn hiring round.",
"color": "#6366f1",
"icon": null,
"position": 2,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.613Z",
"modifiedAt": "2026-10-07T11:17:31.103Z",
"archivedAt": "2026-10-07T11:17:31.103Z",
"homeNoteId": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 2
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 2
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<project2Id>-todo",
"projectId": "<project2Id>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.613Z"
},
{
"id": "<project2Id>-in-progress",
"projectId": "<project2Id>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.613Z"
},
{
"id": "<project2Id>-done",
"projectId": "<project2Id>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.613Z"
}
],
"href": "memry://project/<project2Id>",
"source_ref": {
"kind": "project",
"id": "<project2Id>",
"title": "Autumn hiring",
"href": "memry://project/<project2Id>"
},
"sources": [
{
"kind": "project",
"id": "<project2Id>",
"title": "Autumn hiring",
"href": "memry://project/<project2Id>"
}
]
}vault_reorder_projects
Reorder task projects. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
project_ids | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"project_ids": ["<projectId>", "<project3Id>"],
"positions": [1, 0]
}Reply:
{
"ids": ["<projectId>", "<project3Id>"],
"projects": [
{
"id": "<projectId>",
"name": "Website relaunch",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 1,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.610Z",
"modifiedAt": "2026-10-07T11:17:31.111Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 5
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 2
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]
},
{
"id": "<project3Id>",
"name": "Brand refresh",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 0,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.614Z",
"modifiedAt": "2026-10-07T11:17:31.111Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 2
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<project3Id>-todo",
"projectId": "<project3Id>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-in-progress",
"projectId": "<project3Id>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-done",
"projectId": "<project3Id>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.615Z"
}
]
}
]
}vault_create_status
Create a project status. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
project_id | string | yes | min length 1 |
name | string | yes | min length 1; max length 50 |
color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
is_done | boolean | no | default false |
Example call:
{
"project_id": "<projectId>",
"name": "Blocked",
"color": "#ef4444"
}Reply:
{
"id": "uFqRZPtux_31TjNYy4KTt",
"projectId": "<projectId>",
"name": "Blocked",
"color": "#ef4444",
"position": 5,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:31.123Z"
}vault_update_status
Update a project status. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
name | string | no | min length 1; max length 50 |
color | string | no | pattern ^#[0-9a-fA-F]{6}$ |
position | integer | no | min -9007199254740991; max 9007199254740991 |
is_default | boolean | no | |
is_done | boolean | no |
Example call:
{
"id": "<statusDoingId>",
"name": "Doing"
}Reply:
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "Doing",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
}vault_delete_status
Delete a project status. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<statusSpare2Id>"
}Reply:
{
"id": "<statusSpare2Id>"
}vault_reorder_statuses
Reorder project statuses. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
status_ids | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"status_ids": ["<statusTodoId>", "<statusDoingId>"],
"positions": [0, 1]
}Reply:
{
"ids": ["<statusTodoId>", "<statusDoingId>"],
"statuses": [
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "Doing",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]
}vault_create_journal_entry
Create or return existing journal entry for date. Checkbox lines you add are stored as plain checkboxes, marked {check}, unless the owner turned on task conversion for agents; then they become tasks and the reply lists them in created_tasks. Create tasks with vault_create_task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
content_markdown | string | yes |
Example call:
{
"date": "2026-10-07",
"content_markdown": "Shipped the pricing page.\n"
}Reply:
{
"id": "j2026-10-07",
"date": "2026-10-07",
"tags": [],
"properties": {},
"body_bytes": 26,
"body_sha256": "541df3fe694ff9c46b58b5fc0c8e175f209fd719edda1d715fae73649811578b",
"created": true,
"sources": [
{
"kind": "journal",
"id": "2026-10-07",
"title": "2026-10-07",
"href": "memry://journal/2026-10-07"
}
]
}vault_update_journal_entry
Update or create a journal entry. Checkbox lines you add are stored as plain checkboxes, marked {check}, unless the owner turned on task conversion for agents; then they become tasks and the reply lists them in created_tasks. Create tasks with vault_create_task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
content_markdown | string | no | |
tags | string[] | no | |
properties | Record<string, any> | no |
Example call:
{
"date": "2026-10-06",
"content_markdown": "Planned the launch with the team.\n",
"tags": ["planning"]
}Reply:
{
"id": "j2026-10-06",
"date": "2026-10-06",
"tags": ["planning"],
"properties": {},
"body_bytes": 34,
"body_sha256": "9a9245f257bf9f706a545e8660a060d517e8be55cabec3e358da1d78367cc249",
"sources": [
{
"kind": "journal",
"id": "2026-10-06",
"title": "2026-10-06",
"href": "memry://journal/2026-10-06"
}
]
}vault_delete_journal_entry
Delete a journal entry. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"date": "2026-10-07"
}Reply:
{
"date": "2026-10-07",
"deleted": true
}vault_add_to_inbox
Append a new inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
source | string | yes | min length 1 |
title | string | yes | min length 1 |
content | string | yes |
Example call:
{
"source": "agent",
"title": "Competitor pricing",
"content": "Compare the three plans on the pricing pages."
}Reply:
{
"id": "OEPckaU_j0rVb2Kvid7gv",
"type": "note",
"title": "Competitor pricing",
"content": "Compare the three plans on the pricing pages.",
"createdAt": "2026-10-07T11:17:31.154Z",
"modifiedAt": "2026-10-07T11:17:31.154Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": "inline",
"tags": [],
"isStale": false,
"href": "memry://inbox/OEPckaU_j0rVb2Kvid7gv",
"source_ref": {
"kind": "inbox",
"id": "OEPckaU_j0rVb2Kvid7gv",
"title": "Competitor pricing",
"href": "memry://inbox/OEPckaU_j0rVb2Kvid7gv"
},
"sources": [
{
"kind": "inbox",
"id": "OEPckaU_j0rVb2Kvid7gv",
"title": "Competitor pricing",
"href": "memry://inbox/OEPckaU_j0rVb2Kvid7gv"
}
]
}vault_update_inbox_item
Update an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
title | string | no | min length 1; max length 200 |
content | string | no | max length 50000 |
Example call:
{
"id": "<inboxId>",
"title": "Call the printer about flyers"
}Reply:
{
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about flyers",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:31.172Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inboxId>",
"source_ref": {
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
},
"sources": [
{
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
}
]
}vault_snooze_inbox_item
Snooze an inbox item until an ISO datetime. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
snooze_until | string | yes | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
reason | string | no | max length 500 |
Example call:
{
"id": "<inbox2Id>",
"snooze_until": "2026-10-12T09:00:00.000Z",
"reason": "After the launch"
}Reply:
{
"id": "<inbox2Id>",
"type": "note",
"title": "Idea 2",
"content": "Idea 2: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.773Z",
"modifiedAt": "2026-10-07T11:17:31.179Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": "2026-10-12T09:00:00.000Z",
"snoozeReason": "After the launch",
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inbox2Id>",
"source_ref": {
"kind": "inbox",
"id": "<inbox2Id>",
"title": "Idea 2",
"href": "memry://inbox/<inbox2Id>"
},
"sources": [
{
"kind": "inbox",
"id": "<inbox2Id>",
"title": "Idea 2",
"href": "memry://inbox/<inbox2Id>"
}
]
}vault_archive_inbox_item
Archive an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<inbox3Id>"
}Reply:
{
"id": "<inbox3Id>",
"type": "note",
"title": "Idea 3",
"content": "Idea 3: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.780Z",
"modifiedAt": "2026-10-07T11:17:25.780Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": "2026-10-07T11:17:31.187Z",
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inbox3Id>",
"source_ref": {
"kind": "inbox",
"id": "<inbox3Id>",
"title": "Idea 3",
"href": "memry://inbox/<inbox3Id>"
},
"sources": [
{
"kind": "inbox",
"id": "<inbox3Id>",
"title": "Idea 3",
"href": "memry://inbox/<inbox3Id>"
}
]
}vault_unarchive_inbox_item
Unarchive an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<inbox3Id>"
}Reply:
{
"id": "<inbox3Id>",
"type": "note",
"title": "Idea 3",
"content": "Idea 3: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.780Z",
"modifiedAt": "2026-10-07T11:17:31.193Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inbox3Id>",
"source_ref": {
"kind": "inbox",
"id": "<inbox3Id>",
"title": "Idea 3",
"href": "memry://inbox/<inbox3Id>"
},
"sources": [
{
"kind": "inbox",
"id": "<inbox3Id>",
"title": "Idea 3",
"href": "memry://inbox/<inbox3Id>"
}
]
}vault_delete_inbox_item
Permanently delete an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
Example call:
{
"id": "<inbox15Id>"
}Reply:
{
"id": "<inbox15Id>"
}vault_add_inbox_tag
Add a tag to an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
tag | string | yes | min length 1 |
Example call:
{
"id": "<inboxId>",
"tag": "errands"
}Reply:
{
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about flyers",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:31.172Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": ["errands"],
"isStale": false,
"href": "memry://inbox/<inboxId>",
"source_ref": {
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
},
"sources": [
{
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
}
]
}vault_remove_inbox_tag
Remove a tag from an inbox item. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
tag | string | yes | min length 1 |
Example call:
{
"id": "<inboxId>",
"tag": "errands"
}Reply:
{
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about flyers",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:31.172Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false,
"href": "memry://inbox/<inboxId>",
"source_ref": {
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
},
"sources": [
{
"kind": "inbox",
"id": "<inboxId>",
"title": "Call the printer about flyers",
"href": "memry://inbox/<inboxId>"
}
]
}vault_update_note
Update note body. Checkbox lines you add are stored as plain checkboxes, marked {check}, unless the owner turned on task conversion for agents; then they become tasks and the reply lists them in created_tasks. Create tasks with vault_create_task. Replies with the note as stored: title, folder_path, tags, properties, body_bytes and body_sha256 (UTF-8 body as the file stores it, which ends with a newline), plus tags_added and tags_removed when inline #tags in the body changed the tag set. Requires user approval with diff preview.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
mode | "append" | "prepend" | "replace" | yes | "append", "prepend", "replace" |
content_markdown | string | yes |
Example call:
{
"id": "<noteId>",
"mode": "append",
"content_markdown": "## Open questions\n\n- Who signs off the copy?\n"
}Reply:
{
"id": "<noteId>",
"title": "Website relaunch plan",
"folder_path": "Projects",
"tags": ["website", "planning"],
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"body_bytes": 157,
"body_sha256": "e82d7ca54ab5461efbe70840144f8b5d0ba267fa53f2e33d0683ce7cd93b6c86",
"tags_added": [],
"tags_removed": [],
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
},
"sources": [
{
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
]
}vault_add_html_artifact
Append a self-contained HTML artifact (diagram, chart, interactive explanation) to an existing markdown note identified by id (the note id, not an artifact name). It is saved as a note attachment and rendered inline in a sandboxed iframe. Write one complete HTML document with inline CSS/JS. It cannot read the vault, the note, or sibling files; external scripts/styles/fonts load only over https (e.g. a CDN). Do not use alert/confirm/prompt. Keep it compact and readable in light and dark themes. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values | Notes |
|---|---|---|---|---|
id | string | yes | min length 1 | ID of the existing note to append the artifact to, exactly as returned by a vault read/search tool. Not a name for the artifact. |
title | string | yes | min length 1; max length 120 | Artifact title, used as the file name. |
html | string | yes | min length 1; max length 524288 |
Example call:
{
"id": "<noteId>",
"title": "Launch timeline",
"html": "<h1>Launch timeline</h1><ol><li>Copy freeze</li><li>QA</li><li>Go live</li></ol>"
}Reply:
{
"id": "<noteId>",
"title": "Website relaunch plan",
"folder_path": "Projects",
"tags": ["website", "planning"],
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"body_bytes": 302,
"body_sha256": "0de41acc3e86e5bc0530bf0d455fa83fa1a29a772c28b5a491bbc60cf3cb3845",
"url": "../attachments/<noteId>/ktqceh-Launch-timeline.html",
"href": "memry://note/<noteId>",
"source_ref": {
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
},
"sources": [
{
"kind": "note",
"id": "<noteId>",
"title": "Website relaunch plan",
"href": "memry://note/<noteId>"
}
]
}vault_update_task
Update task fields; absent fields are left alone. status "completed" or "open" completes or reopens the task and ignores every other field in that call, so send field edits separately. Any other status, or status_id, is a status id from vault_list_statuses. due_date/due and description/notes are aliases. Requires user approval with before/after preview.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | no | min length 1; max length 500 |
status | string | no | |
status_id | string | null | no | |
project_id | string | null | no | |
parent_id | string | null | no | |
due | string | null | no | |
due_date | string | null | no | |
due_time | string | null | no | |
start_date | string | null | no | |
priority | integer | no | min 0; max 4 |
notes | string | null | no | |
description | string | null | no | |
is_repeating | boolean | no | |
repeat_config | Record<string, any> | null | no | |
repeat_from | "due" | "completion" | null | no | "due", "completion" |
tags | string[] | no | max items 20 |
linked_note_ids | string[] | no | |
id | string | yes | min length 1 |
Example call:
{
"id": "<taskId>",
"priority": 3,
"due_date": "2026-10-15"
}Reply:
{
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write landing page copy",
"description": null,
"priority": 3,
"position": 0,
"dueDate": "2026-10-15",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {
"_offline": 1
},
"position": {},
"dueDate": {
"_offline": 1
},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:30.898Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0,
"href": "memry://task/<taskId>",
"source_ref": {
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>"
},
"sources": [
{
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>"
}
]
}vault_add_tag
Add a tag to a note or task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
kind | "note" | "task" | yes | "note", "task" |
tag | string | yes | min length 1 |
Example call:
{
"id": "<noteId>",
"kind": "note",
"tag": "q4"
}Reply:
{
"id": "<noteId>",
"title": "Website relaunch plan",
"folder_path": "Projects",
"tags": ["website", "planning", "q4"],
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"body_bytes": 302,
"body_sha256": "0de41acc3e86e5bc0530bf0d455fa83fa1a29a772c28b5a491bbc60cf3cb3845"
}vault_remove_tag
Remove a tag from a note or task. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
kind | "note" | "task" | yes | "note", "task" |
tag | string | yes | min length 1 |
Example call:
{
"id": "<noteId>",
"kind": "note",
"tag": "q4"
}Reply:
{
"id": "<noteId>",
"title": "Website relaunch plan",
"folder_path": "Projects",
"tags": ["website", "planning"],
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"body_bytes": 302,
"body_sha256": "0de41acc3e86e5bc0530bf0d455fa83fa1a29a772c28b5a491bbc60cf3cb3845"
}vault_move_to_folder
Move a note to a folder. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
folder_path | string | yes | min length 1 |
Example call:
{
"id": "<moveNoteId>",
"folder_path": "Archive"
}Reply:
{
"id": "<moveNoteId>",
"title": "Old pricing ideas",
"folder_path": "Archive",
"tags": [],
"properties": {},
"body_bytes": 13,
"body_sha256": "43920b70dcf9b1840eab70016c64aa00bb2d1f2357c8ca54e383301ef3c2a43e",
"href": "memry://note/<moveNoteId>",
"source_ref": {
"kind": "note",
"id": "<moveNoteId>",
"title": "Old pricing ideas",
"href": "memry://note/<moveNoteId>"
},
"sources": [
{
"kind": "note",
"id": "<moveNoteId>",
"title": "Old pricing ideas",
"href": "memry://note/<moveNoteId>"
}
]
}vault_add_canvas_item
Put existing notes/tasks/events on a canvas as cards. Applies to the open editor when the user has that canvas open. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvas_id | string | yes | min length 1 |
items | object[] | yes | min items 1; max items 20 |
items[].entity_type | "note" | "task" | "calendar_event" | yes | "note", "task", "calendar_event" |
items[].entity_id | string | yes | min length 1 |
Example call:
{
"canvas_id": "<canvasId>",
"items": [
{
"entity_type": "note",
"entity_id": "<noteId>"
},
{
"entity_type": "task",
"entity_id": "<taskId>"
}
]
}Reply:
{
"canvas_id": "<canvasId>",
"applied": [
{
"entity_type": "note",
"entity_id": "<noteId>"
},
{
"entity_type": "task",
"entity_id": "<taskId>"
}
],
"skipped": [],
"updated_at": 1791371851266,
"too_large": false
}vault_remove_canvas_item
Remove an entity's card from a canvas, clearing any arrows bound to it. The note/task/event itself is not deleted. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvas_id | string | yes | min length 1 |
entity_type | "note" | "task" | "calendar_event" | yes | "note", "task", "calendar_event" |
entity_id | string | yes | min length 1 |
Example call:
{
"canvas_id": "<canvasId>",
"entity_type": "task",
"entity_id": "<taskId>"
}Reply:
{
"canvas_id": "<canvasId>",
"applied": [
{
"entity_type": "task",
"entity_id": "<taskId>"
}
],
"skipped": [],
"updated_at": 1791371851278,
"too_large": false
}vault_create_canvas
Create an empty spatial canvas and return its id. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | no | min length 1; max length 200 |
Example call:
{
"title": "Retro board"
}Reply:
{
"id": "SPbu6lPRlk4Uky0VyvQz7",
"title": "Retro board",
"folder": null,
"icon": null,
"ownerNoteId": null,
"createdAt": 1791371851217,
"updatedAt": 1791371851217,
"scene": "{\"type\":\"excalidraw\",\"version\":2,\"source\":\"memry\",\"elements\":[],\"appState\":{},\"files\":{}}"
}vault_draw_on_canvas
Draw on a canvas: rectangles, ellipses, diamonds, text, arrows, lines, freedraw, frames, images and embeds. Element fields are Excalidraw's own skeleton fields in camelCase (strokeColor, backgroundColor, fillStyle, strokeWidth, strokeStyle, roughness, opacity, roundness, fontSize, points, ...), so a shape is e.g. {"type":"rectangle","x":0,"y":0,"width":240,"height":120,"backgroundColor":"#ffec99","label":{"text":"Chapter 1"}}. Give an element a "ref" to point arrows at it or put it in a frame within the same call; bind to something already on the canvas with {"elementId":"..."} from vault_read_canvas_elements. An arrow with start and end is a REAL binding — it follows the shapes when the user drags them: {"type":"arrow","start":{"ref":"a"},"end":{"elementId":"..."},"endArrowhead":"arrow","label":{"text":"leads to"}}. Coordinates are scene coordinates; x/y default to 0, so read the canvas first and place relative to what is there. To put a note/task/event on the canvas use vault_add_canvas_item — this tool cannot mint entity cards. Images need a fileId already attached to the canvas. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvas_id | string | yes | min length 1 |
elements | object[] | yes | min items 1; max items 300 |
elements[].ref | string | no | min length 1; max length 64 |
elements[].type | "rectangle" | "ellipse" | "diamond" | "text" | "arrow" | "line" | "freedraw" | "frame" | "image" | "embeddable" | yes | "rectangle", "ellipse", "diamond", "text", "arrow", "line", "freedraw", "frame", "image", "embeddable" |
elements[].x | number | no | |
elements[].y | number | no | |
elements[].width | number | no | min 0; max 100000 |
elements[].height | number | no | min 0; max 100000 |
elements[].strokeColor | string | no | pattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$ |
elements[].backgroundColor | string | no | pattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$ |
elements[].fillStyle | "hachure" | "cross-hatch" | "solid" | "zigzag" | no | "hachure", "cross-hatch", "solid", "zigzag" |
elements[].strokeWidth | number | no | max 20; greater than 0 |
elements[].strokeStyle | "solid" | "dashed" | "dotted" | no | "solid", "dashed", "dotted" |
elements[].roughness | number | no | min 0; max 2 |
elements[].opacity | number | no | min 0; max 100 |
elements[].roundness | "sharp" | "round" | no | "sharp", "round" |
elements[].angle | number | no | |
elements[].locked | boolean | no | |
elements[].link | string | null | no | |
elements[].text | string | no | max length 20000 |
elements[].fontSize | number | no | max 200; greater than 0 |
elements[].fontFamily | "hand-drawn" | "normal" | "code" | "lilita" | no | "hand-drawn", "normal", "code", "lilita" |
elements[].textAlign | "left" | "center" | "right" | no | "left", "center", "right" |
elements[].verticalAlign | "top" | "middle" | "bottom" | no | "top", "middle", "bottom" |
elements[].label | object | no | |
elements[].label.text | string | yes | min length 1; max length 2000 |
elements[].label.fontSize | number | no | max 200; greater than 0 |
elements[].label.fontFamily | "hand-drawn" | "normal" | "code" | "lilita" | no | "hand-drawn", "normal", "code", "lilita" |
elements[].label.textAlign | "left" | "center" | "right" | no | "left", "center", "right" |
elements[].label.verticalAlign | "top" | "middle" | "bottom" | no | "top", "middle", "bottom" |
elements[].label.strokeColor | string | no | pattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$ |
elements[].start | object | no | |
elements[].start.ref | string | no | min length 1; max length 64 |
elements[].start.elementId | string | no | min length 1; max length 128 |
elements[].end | object | no | |
elements[].end.ref | string | no | min length 1; max length 64 |
elements[].end.elementId | string | no | min length 1; max length 128 |
elements[].startArrowhead | "none" | "arrow" | "bar" | "dot" | "triangle" | "triangle_outline" | "diamond" | "diamond_outline" | "circle" | "circle_outline" | "crowfoot_one" | "crowfoot_many" | "crowfoot_one_or_many" | no | "none", "arrow", "bar", "dot", "triangle", "triangle_outline", "diamond", "diamond_outline", "circle", "circle_outline", "crowfoot_one", "crowfoot_many", "crowfoot_one_or_many" |
elements[].endArrowhead | "none" | "arrow" | "bar" | "dot" | "triangle" | "triangle_outline" | "diamond" | "diamond_outline" | "circle" | "circle_outline" | "crowfoot_one" | "crowfoot_many" | "crowfoot_one_or_many" | no | "none", "arrow", "bar", "dot", "triangle", "triangle_outline", "diamond", "diamond_outline", "circle", "circle_outline", "crowfoot_one", "crowfoot_many", "crowfoot_one_or_many" |
elements[].points | [number, number][] | no | min items 2; max items 500 |
elements[].pressures | number[] | no | max items 500 |
elements[].children | string[] | no | max items 200 |
elements[].name | string | no | max length 200 |
elements[].fileId | string | no | min length 1; max length 128 |
elements[].url | string | no | max length 2048 |
Example call:
{
"canvas_id": "<canvasId>",
"elements": [
{
"ref": "idea",
"type": "rectangle",
"x": 0,
"y": 0,
"width": 200,
"height": 80,
"text": "Idea",
"backgroundColor": "#fef3c7",
"fillStyle": "solid"
},
{
"ref": "ship",
"type": "ellipse",
"x": 320,
"y": 0,
"width": 160,
"height": 80,
"text": "Ship"
},
{
"type": "arrow",
"start": {
"ref": "idea"
},
"end": {
"ref": "ship"
}
}
]
}Reply:
{
"canvas_id": "<canvasId>",
"refs": {
"idea": "15d3abd6-4ea5-436d-be05-63a86ad394f7",
"ship": "4bac36aa-c703-4881-911a-182365aae30e"
},
"created_ids": [
"15d3abd6-4ea5-436d-be05-63a86ad394f7",
"4bac36aa-c703-4881-911a-182365aae30e",
"83b2c387-b992-403b-bcce-51798d619802"
],
"updated_ids": [],
"deleted_ids": [],
"missing_ids": [],
"updated_at": 1791371851290,
"too_large": false
}vault_edit_canvas_elements
Move, restyle, retext or delete elements already on a canvas, by element id from vault_read_canvas_elements. Absent fields are left alone; {"delete":true} removes the element and clears any arrow bound to it. Works on entity cards too (move and restyle them), except their text, which lives in the note. Takes the canvas id or its folder-qualified name ("Work/Plan") from vault_list_canvases; a bare title matching more than one canvas is refused with the candidates listed. Requires user approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvas_id | string | yes | min length 1 |
edits | object[] | yes | min items 1; max items 300 |
edits[].elementId | string | yes | min length 1; max length 128 |
edits[].delete | boolean | no | |
edits[].x | number | no | |
edits[].y | number | no | |
edits[].width | number | no | min 0; max 100000 |
edits[].height | number | no | min 0; max 100000 |
edits[].strokeColor | string | no | pattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$ |
edits[].backgroundColor | string | no | pattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$ |
edits[].fillStyle | "hachure" | "cross-hatch" | "solid" | "zigzag" | no | "hachure", "cross-hatch", "solid", "zigzag" |
edits[].strokeWidth | number | no | max 20; greater than 0 |
edits[].strokeStyle | "solid" | "dashed" | "dotted" | no | "solid", "dashed", "dotted" |
edits[].roughness | number | no | min 0; max 2 |
edits[].opacity | number | no | min 0; max 100 |
edits[].roundness | "sharp" | "round" | no | "sharp", "round" |
edits[].angle | number | no | |
edits[].locked | boolean | no | |
edits[].link | string | null | no | |
edits[].text | string | no | max length 20000 |
edits[].fontSize | number | no | max 200; greater than 0 |
edits[].fontFamily | "hand-drawn" | "normal" | "code" | "lilita" | no | "hand-drawn", "normal", "code", "lilita" |
edits[].textAlign | "left" | "center" | "right" | no | "left", "center", "right" |
edits[].verticalAlign | "top" | "middle" | "bottom" | no | "top", "middle", "bottom" |
edits[].startArrowhead | "none" | "arrow" | "bar" | "dot" | "triangle" | "triangle_outline" | "diamond" | "diamond_outline" | "circle" | "circle_outline" | "crowfoot_one" | "crowfoot_many" | "crowfoot_one_or_many" | no | "none", "arrow", "bar", "dot", "triangle", "triangle_outline", "diamond", "diamond_outline", "circle", "circle_outline", "crowfoot_one", "crowfoot_many", "crowfoot_one_or_many" |
edits[].endArrowhead | "none" | "arrow" | "bar" | "dot" | "triangle" | "triangle_outline" | "diamond" | "diamond_outline" | "circle" | "circle_outline" | "crowfoot_one" | "crowfoot_many" | "crowfoot_one_or_many" | no | "none", "arrow", "bar", "dot", "triangle", "triangle_outline", "diamond", "diamond_outline", "circle", "circle_outline", "crowfoot_one", "crowfoot_many", "crowfoot_one_or_many" |
edits[].name | string | no | max length 200 |
Example call:
{
"canvas_id": "<canvasId>",
"edits": [
{
"elementId": "<drawnElementId>",
"backgroundColor": "#dcfce7",
"text": "Idea (approved)"
}
]
}Reply:
{
"canvas_id": "<canvasId>",
"refs": {},
"created_ids": [],
"updated_ids": ["<drawnElementId>"],
"deleted_ids": [],
"missing_ids": [],
"updated_at": 1791371851310,
"too_large": false
}vault_desktop_write
Run an allowlisted desktop CRUD mutation. args are the positional arguments of the operation; a call with more arguments than the operation takes is refused, so put options inside its input object. A write whose reply carries no record gets a stored field read back after the write. properties.set(entityId, properties) replaces the entity's whole property record: a property left out is deleted, except the legacy id, title, created and modified keys, which are kept unless the call names them (null deletes one). The reply lists the stored properties and the names it removed. Requires user approval. Replies follow the vault_desktop_read rules for filed files and replies over 100 KB. vault_desktop_describe returns each operation's argument schema; a call that does not match it is refused before approval.
Write tool; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
operation | "notes.create" | "notes.update" | "notes.rename" | "notes.move" | "notes.delete" | "notes.createFolder" | "notes.renameFolder" | "notes.deleteFolder" | "notes.createPropertyDefinition" | "notes.updatePropertyDefinition" | "notes.ensurePropertyDefinition" | "notes.addPropertyOption" | "notes.addStatusOption" | "notes.removePropertyOption" | "notes.renamePropertyOption" | "notes.updateOptionColor" | "notes.deletePropertyDefinition" | "notes.uploadAttachment" | "notes.deleteAttachment" | "notes.setFolderConfig" | "notes.restoreVersion" | "notes.deleteVersion" | "notes.reorder" | "notes.importFiles" | "notes.setLocalOnly" | "notes.setCalendarPropertyVisibility" | "notes.applyTemplate" | "notes.exportPdf" | "notes.exportHtml" | "tasks.create" | "tasks.update" | "tasks.delete" | "tasks.complete" | "tasks.uncomplete" | "tasks.archive" | "tasks.unarchive" | "tasks.move" | "tasks.reorder" | "tasks.duplicate" | "tasks.convertToSubtask" | "tasks.convertToTask" | "tasks.createProject" | "tasks.updateProject" | "tasks.deleteProject" | "tasks.archiveProject" | "tasks.reorderProjects" | "tasks.linkProjectItem" | "tasks.unlinkProjectItem" | "tasks.setProjectLinkPinned" | "tasks.setProjectHomeNote" | "tasks.captureUrlToProject" | "tasks.importFilesToProject" | "tasks.createStatus" | "tasks.updateStatus" | "tasks.deleteStatus" | "tasks.reorderStatuses" | "tasks.bulkComplete" | "tasks.bulkDelete" | "tasks.bulkMove" | "tasks.bulkArchive" | "inbox.captureText" | "inbox.captureLink" | "inbox.captureImage" | "inbox.captureVoice" | "inbox.captureClip" | "inbox.capturePdf" | "inbox.update" | "inbox.archive" | "inbox.file" | "inbox.trackSuggestion" | "inbox.convertToNote" | "inbox.convertToTask" | "inbox.convertToEvent" | "inbox.convertToReminder" | "inbox.linkToNote" | "inbox.addTag" | "inbox.removeTag" | "inbox.snooze" | "inbox.unsnooze" | "inbox.markViewed" | "inbox.bulkFile" | "inbox.bulkArchive" | "inbox.bulkTag" | "inbox.bulkSnooze" | "inbox.fileAllStale" | "inbox.retryTranscription" | "inbox.retryMetadata" | "inbox.setStaleThreshold" | "inbox.unarchive" | "inbox.deletePermanent" | "inbox.undoFile" | "inbox.undoArchive" | "journal.createEntry" | "journal.updateEntry" | "journal.deleteEntry" | "properties.set" | "properties.rename" | "templates.create" | "templates.update" | "templates.delete" | "templates.duplicate" | "savedFilters.create" | "savedFilters.update" | "savedFilters.delete" | "savedFilters.reorder" | "bookmarks.create" | "bookmarks.delete" | "bookmarks.toggle" | "bookmarks.reorder" | "bookmarks.bulkDelete" | "bookmarks.bulkCreate" | "tags.pinNoteToTag" | "tags.unpinNoteFromTag" | "tags.renameTag" | "tags.updateTagColor" | "tags.deleteTag" | "tags.removeTagFromNote" | "tags.mergeTag" | "tags.updateTagIcon" | "tags.createCategory" | "tags.renameCategory" | "tags.deleteCategory" | "tags.reorder" | "folderView.setConfig" | "folderView.setView" | "folderView.deleteView" | "reminders.create" | "reminders.update" | "reminders.delete" | "reminders.dismiss" | "reminders.snooze" | "reminders.bulkDismiss" | "calendar.createEvent" | "calendar.updateEvent" | "calendar.deleteEvent" | "settings.set" | "settings.setJournalSettings" | "settings.setAISettings" | "settings.setVoiceTranscriptionSettings" | "settings.setTabSettings" | "settings.setNoteEditorSettings" | "settings.setGeneralSettings" | "settings.setEditorSettings" | "settings.setTaskSettings" | "settings.setKeyboardSettings" | "settings.resetKeyboardSettings" | "settings.setSyncSettings" | "settings.setBackupSettings" | "settings.setGraphSettings" | "settings.setCalendarSettings" | "settings.setFeaturesSettings" | "settings.setInboxSettings" | "search.rebuildIndex" | "search.addReason" | "search.clearReasons" | "homePages.create" | "homePages.update" | "homePages.delete" | "homePages.reorder" | "vault.switch" | "vault.reindex" | "vault.updateConfig" | "vault.downloadRemote" | "canvas.create" | "canvas.delete" | yes | "notes.create", "notes.update", "notes.rename", "notes.move", "notes.delete", "notes.createFolder", "notes.renameFolder", "notes.deleteFolder", "notes.createPropertyDefinition", "notes.updatePropertyDefinition", "notes.ensurePropertyDefinition", "notes.addPropertyOption", "notes.addStatusOption", "notes.removePropertyOption", "notes.renamePropertyOption", "notes.updateOptionColor", "notes.deletePropertyDefinition", "notes.uploadAttachment", "notes.deleteAttachment", "notes.setFolderConfig", "notes.restoreVersion", "notes.deleteVersion", "notes.reorder", "notes.importFiles", "notes.setLocalOnly", "notes.setCalendarPropertyVisibility", "notes.applyTemplate", "notes.exportPdf", "notes.exportHtml", "tasks.create", "tasks.update", "tasks.delete", "tasks.complete", "tasks.uncomplete", "tasks.archive", "tasks.unarchive", "tasks.move", "tasks.reorder", "tasks.duplicate", "tasks.convertToSubtask", "tasks.convertToTask", "tasks.createProject", "tasks.updateProject", "tasks.deleteProject", "tasks.archiveProject", "tasks.reorderProjects", "tasks.linkProjectItem", "tasks.unlinkProjectItem", "tasks.setProjectLinkPinned", "tasks.setProjectHomeNote", "tasks.captureUrlToProject", "tasks.importFilesToProject", "tasks.createStatus", "tasks.updateStatus", "tasks.deleteStatus", "tasks.reorderStatuses", "tasks.bulkComplete", "tasks.bulkDelete", "tasks.bulkMove", "tasks.bulkArchive", "inbox.captureText", "inbox.captureLink", "inbox.captureImage", "inbox.captureVoice", "inbox.captureClip", "inbox.capturePdf", "inbox.update", "inbox.archive", "inbox.file", "inbox.trackSuggestion", "inbox.convertToNote", "inbox.convertToTask", "inbox.convertToEvent", "inbox.convertToReminder", "inbox.linkToNote", "inbox.addTag", "inbox.removeTag", "inbox.snooze", "inbox.unsnooze", "inbox.markViewed", "inbox.bulkFile", "inbox.bulkArchive", "inbox.bulkTag", "inbox.bulkSnooze", "inbox.fileAllStale", "inbox.retryTranscription", "inbox.retryMetadata", "inbox.setStaleThreshold", "inbox.unarchive", "inbox.deletePermanent", "inbox.undoFile", "inbox.undoArchive", "journal.createEntry", "journal.updateEntry", "journal.deleteEntry", "properties.set", "properties.rename", "templates.create", "templates.update", "templates.delete", "templates.duplicate", "savedFilters.create", "savedFilters.update", "savedFilters.delete", "savedFilters.reorder", "bookmarks.create", "bookmarks.delete", "bookmarks.toggle", "bookmarks.reorder", "bookmarks.bulkDelete", "bookmarks.bulkCreate", "tags.pinNoteToTag", "tags.unpinNoteFromTag", "tags.renameTag", "tags.updateTagColor", "tags.deleteTag", "tags.removeTagFromNote", "tags.mergeTag", "tags.updateTagIcon", "tags.createCategory", "tags.renameCategory", "tags.deleteCategory", "tags.reorder", "folderView.setConfig", "folderView.setView", "folderView.deleteView", "reminders.create", "reminders.update", "reminders.delete", "reminders.dismiss", "reminders.snooze", "reminders.bulkDismiss", "calendar.createEvent", "calendar.updateEvent", "calendar.deleteEvent", "settings.set", "settings.setJournalSettings", "settings.setAISettings", "settings.setVoiceTranscriptionSettings", "settings.setTabSettings", "settings.setNoteEditorSettings", "settings.setGeneralSettings", "settings.setEditorSettings", "settings.setTaskSettings", "settings.setKeyboardSettings", "settings.resetKeyboardSettings", "settings.setSyncSettings", "settings.setBackupSettings", "settings.setGraphSettings", "settings.setCalendarSettings", "settings.setFeaturesSettings", "settings.setInboxSettings", "search.rebuildIndex", "search.addReason", "search.clearReasons", "homePages.create", "homePages.update", "homePages.delete", "homePages.reorder", "vault.switch", "vault.reindex", "vault.updateConfig", "vault.downloadRemote", "canvas.create", "canvas.delete" |
args | any[] | no | default [] |
Example call:
{
"operation": "notes.ensurePropertyDefinition",
"args": ["priority", "select"]
}Reply:
{
"success": true,
"stored": {
"name": "priority",
"type": "select",
"options": "[]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.327Z",
"clock": null,
"syncedAt": null
}
}Desktop API operations
vault_desktop_read runs a read operation and vault_desktop_write a write operation, as { "operation": "notes.list", "args": [ ... ] }. args holds the operation's arguments in call order; an optional argument at the end can be left out. Each operation below names its tool and its call shape, where ? marks an optional argument, then lists the arguments by name. A name like input.title is the key title inside the argument input. vault_desktop_describe returns the same for one operation at run time.
Notes
notes.get
Read a note by id: its markdown content, frontmatter, tags and metadata.
notes.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.get",
"args": ["<noteId>"]
}
}Reply:
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"content": "# Website relaunch plan\n\nSecond draft.\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"frontmatter": {
"tags": ["website", "planning"],
"stage": "idea",
"project": ["Website relaunch"]
},
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:25.736Z",
"tags": ["website", "planning"],
"aliases": [],
"wordCount": 17,
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"emoji": null
}notes.getByPath
Read a note by its vault-relative file path.
notes.getByPath(path) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getByPath",
"args": ["Projects/Website relaunch plan.md"]
}
}Reply:
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"content": "# Website relaunch plan\n\nSecond draft.\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"frontmatter": {
"tags": ["website", "planning"],
"stage": "idea",
"project": ["Website relaunch"]
},
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:25.736Z",
"tags": ["website", "planning"],
"aliases": [],
"wordCount": 17,
"properties": {
"stage": "idea",
"project": ["Website relaunch"]
},
"emoji": null
}notes.getFile
Read a filed file (PDF, image, audio, video) by id: its path and metadata.
notes.getFile(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getFile",
"args": ["<fileId>"]
}
}Reply:
{
"id": "<fileId>",
"path": "Projects/report.pdf",
"absolutePath": "<vault>/Projects/report.pdf",
"title": "report",
"fileType": "pdf",
"mimeType": "application/pdf",
"fileSize": 590,
"created": "2026-10-07T11:17:19.741Z",
"modified": "2026-10-07T11:17:25.104Z",
"transcription": null,
"transcriptionStatus": null
}notes.resolveByTitle
Find the note with this exact title; null when none matches.
notes.resolveByTitle(title) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.resolveByTitle",
"args": ["Launch checklist"]
}
}Reply:
{
"id": "<note2Id>",
"path": "Projects/Launch checklist.md",
"title": "Launch checklist",
"fileType": "markdown"
}notes.resolveWikiTarget
Resolve the target of a [[wiki link]] the way the editor does, including #heading targets.
notes.resolveWikiTarget(target) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
target | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.resolveWikiTarget",
"args": ["Website relaunch plan#Goals"]
}
}Reply:
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"fileType": "markdown",
"heading": "Goals"
}notes.previewByTitle
A short preview (title, snippet, metadata) of the note with this title.
notes.previewByTitle(title) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
title | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.previewByTitle",
"args": ["Launch checklist"]
}
}Reply:
{
"id": "<note2Id>",
"title": "Launch checklist",
"emoji": null,
"snippet": "Launch checklist - [ ] DNS",
"tags": [
{
"name": "website",
"color": "violet"
},
{
"name": "obsolete",
"color": "blue"
}
],
"createdAt": "2026-10-07T11:17:24.117Z"
}notes.list
List notes, filtered by folder or tags, sorted and paged.
notes.list(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.folder | string | no | |
options.tags | string[] | no | |
options.sortBy | "modified" | "created" | "title" | "position" | no | "modified", "created", "title", "position"; default "modified" |
options.sortOrder | "asc" | "desc" | no | "asc", "desc"; default "desc" |
options.limit | integer | no | min 1; max 10000; default 100 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
options.fields | "full" | "tree" | no | "full", "tree" |
options.includeJournals | boolean | no |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.list",
"args": [
{
"folder": "Projects",
"sortBy": "title",
"limit": 3
}
]
}
}Reply:
{
"notes": [
{
"id": "<fileId>",
"path": "Projects/report.pdf",
"title": "report",
"created": "2026-10-07T11:17:19.741Z",
"modified": "2026-10-07T11:17:25.104Z",
"tags": [],
"wordCount": null,
"emoji": null,
"localOnly": false,
"fileType": "pdf",
"mimeType": "application/pdf",
"fileSize": 590
},
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:25.736Z",
"tags": ["planning", "website"],
"wordCount": 17,
"snippet": "Website relaunch plan Second draft. Goals - Faster pages - Clearer pricing See Launch checklist.",
"emoji": null,
"localOnly": false,
"fileType": "markdown",
"mimeType": null,
"fileSize": null
},
{
"id": "<deleteNote2Id>",
"path": "Projects/Scratch 2.md",
"title": "Scratch 2",
"created": "2026-10-07T11:17:24.969Z",
"modified": "2026-10-07T11:17:24.969Z",
"tags": [],
"wordCount": 1,
"snippet": "temp",
"emoji": null,
"localOnly": false,
"fileType": "markdown",
"mimeType": null,
"fileSize": null
}
],
"total": 7,
"hasMore": true
}notes.getTags
Every tag used on notes, with how many notes carry it.
notes.getTags() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getTags",
"args": []
}
}Reply:
[
{
"tag": "website",
"color": "violet",
"count": 3
},
{
"tag": "planning",
"color": "indigo",
"count": 2
},
{
"tag": "active",
"color": "pink",
"count": 1
}
]notes.getLinks
The outgoing links and backlinks of a note.
notes.getLinks(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getLinks",
"args": ["<noteId>"]
}
}Reply:
{
"outgoing": [
{
"sourceId": "<noteId>",
"targetId": "<note2Id>",
"targetTitle": "Launch checklist"
}
],
"incoming": []
}notes.getFolders
Every note folder path in the vault.
notes.getFolders() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getFolders",
"args": []
}
}Reply:
[
{
"path": "Archive",
"icon": null
},
{
"path": "Meetings",
"icon": null
},
{
"path": "Projects",
"icon": "folder"
}
]notes.exists
Whether a note with this title or path exists.
notes.exists(titleOrPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
titleOrPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.exists",
"args": ["Launch checklist"]
}
}Reply:
truenotes.getPropertyDefinitions
Every property definition: name, type, options and colors.
notes.getPropertyDefinitions() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getPropertyDefinitions",
"args": []
}
}Reply:
[
{
"name": "date",
"type": "date",
"options": null,
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:25.964Z",
"clock": null,
"syncedAt": null
},
{
"name": "deadline",
"type": "date",
"options": null,
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:25.091Z",
"clock": null,
"syncedAt": null
},
{
"name": "progress",
"type": "status",
"options": "{\"categories\":{\"todo\":{\"label\":\"To-do\",\"options\":[{\"value\":\"Not started\",\"color\":\"stone\",\"default\":true}]},\"in_progress\":{\"label\":\"In progress\",\"options\":[{\"value\":\"In Progress\",\"color\":\"amber\"}]},\"done\":{\"label\":\"Complete\",\"options\":[{\"value\":\"Done\",\"color\":\"emerald\"},{\"value\":\"Abandoned\",\"color\":\"…",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:25.090Z",
"clock": null,
"syncedAt": null
}
]notes.listAttachments
The files stored in a note’s attachments folder.
notes.listAttachments(noteId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
noteId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.listAttachments",
"args": ["<noteId>"]
}
}Reply:
[
{
"filename": "<attachmentName>",
"path": "memry-file://local<vault>/attachments/<noteId>/<attachmentName>",
"size": 4599,
"mimeType": "image/png",
"type": "image"
}
]notes.getFolderConfig
A folder’s settings, such as its icon and default template.
notes.getFolderConfig(folderPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getFolderConfig",
"args": ["Projects"]
}
}Reply:
{
"icon": "folder",
"inherit": true
}notes.getFolderTemplate
The template a new note in this folder starts from, if any.
notes.getFolderTemplate(folderPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getFolderTemplate",
"args": ["Projects"]
}
}Reply:
nullnotes.getVersions
The saved versions (snapshots) of a note, newest first.
notes.getVersions(noteId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
noteId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getVersions",
"args": ["<noteId>"]
}
}Reply:
[
{
"id": "h6lihjjlqtl6",
"noteId": "<noteId>",
"title": "Website relaunch plan",
"wordCount": 38,
"reason": "significant",
"createdAt": "2026-10-07T11:17:25.022Z"
},
{
"id": "<snapshotId>",
"noteId": "<noteId>",
"title": "Website relaunch plan",
"wordCount": 15,
"reason": "significant",
"createdAt": "2026-10-07T11:17:24.992Z"
}
]notes.getVersion
One saved version of a note, with its content.
notes.getVersion(snapshotId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
snapshotId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getVersion",
"args": ["<snapshotId>"]
}
}Reply:
{
"id": "<snapshotId>",
"noteId": "<noteId>",
"title": "Website relaunch plan",
"fileContent": "---\ntags:\n - website\n - planning\n---\n# Website relaunch plan\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"wordCount": 15,
"reason": "significant",
"createdAt": "2026-10-07T11:17:24.992Z"
}notes.getPositions
The manual sort order of the notes in one folder.
notes.getPositions(folderPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getPositions",
"args": ["Projects"]
}
}Reply:
{
"success": true,
"positions": []
}notes.getAllPositions
The manual sort order of notes in every folder.
notes.getAllPositions() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getAllPositions",
"args": []
}
}Reply:
{
"success": true,
"positions": {}
}notes.getLocalOnlyCount
How many notes are kept on this device only and never synced.
notes.getLocalOnlyCount() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getLocalOnlyCount",
"args": []
}
}Reply:
{
"count": 0
}notes.getCalendarPropertyNames
The date properties shown on the calendar.
notes.getCalendarPropertyNames() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "notes.getCalendarPropertyNames",
"args": []
}
}Reply:
[]Tasks and projects
tasks.get
Read a task by id.
tasks.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.get",
"args": ["<taskId>"]
}
}Reply:
{
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write landing page copy",
"description": null,
"priority": 2,
"position": 0,
"dueDate": "2026-10-09",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:25.637Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0
}tasks.list
List tasks, filtered by project, status, due date or completion, sorted and paged.
tasks.list(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.projectId | string | no | |
options.statusId | string | null | no | |
options.parentId | string | null | no | |
options.includeCompleted | boolean | no | default false |
options.includeArchived | boolean | no | default false |
options.dueBefore | string | no | |
options.dueAfter | string | no | |
options.tags | string[] | no | |
options.search | string | no | |
options.sortBy | "position" | "dueDate" | "priority" | "created" | "modified" | no | "position", "dueDate", "priority", "created", "modified"; default "position" |
options.sortOrder | "asc" | "desc" | no | "asc", "desc"; default "asc" |
options.limit | integer | no | min 1; max 1000; default 100 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.list",
"args": [
{
"projectId": "<projectId>",
"sortBy": "priority",
"limit": 3
}
]
}
}Reply:
{
"tasks": [
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 1,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:25.642Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
},
{
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 2,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:25.648Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
},
{
"id": "<task4Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Check the meta descriptions",
"description": null,
"priority": 0,
"position": 3,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"createdAt": "2026-10-07T11:17:25.657Z",
"modifiedAt": "2026-10-07T11:17:25.657Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
],
"total": 9,
"hasMore": true
}tasks.getSubtasks
The subtasks of a task.
tasks.getSubtasks(parentId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
parentId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getSubtasks",
"args": ["<taskId>"]
}
}Reply:
[
{
"id": "ztuhBvw-P3_1skGUZE4Xv",
"projectId": "<projectId>",
"statusId": null,
"parentId": "<taskId>",
"title": "Draft the hero headline",
"description": null,
"priority": 0,
"position": 0,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.718Z",
"modifiedAt": "2026-10-07T11:17:25.718Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
]tasks.getProject
Read a project by id, with its statuses.
tasks.getProject(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getProject",
"args": ["<projectId>"]
}
}Reply:
{
"id": "<projectId>",
"name": "Website relaunch",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 1,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.610Z",
"modifiedAt": "2026-10-07T11:17:25.610Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]
}tasks.listProjects
Every project with its task counts.
tasks.listProjects() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.listProjects",
"args": []
}
}Reply:
{
"projects": [
{
"id": "inbox",
"name": "Inbox",
"description": "Quick capture for tasks",
"color": "#6366f1",
"icon": "📥",
"position": 0,
"isInbox": true,
"createdAt": "2026-10-07T11:17:12.305Z",
"modifiedAt": "2026-10-07T11:17:12.305Z",
"archivedAt": null,
"homeNoteId": null,
"clock": null,
"fieldClocks": null,
"syncedAt": null,
"taskCount": 0,
"completedCount": 0,
"overdueCount": 0
},
{
"id": "<projectId>",
"name": "Website relaunch",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 1,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.610Z",
"modifiedAt": "2026-10-07T11:17:25.610Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"taskCount": 9,
"completedCount": 0,
"overdueCount": 0
},
{
"id": "<project2Id>",
"name": "Autumn hiring",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 2,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.613Z",
"modifiedAt": "2026-10-07T11:17:25.613Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 1
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"taskCount": 0,
"completedCount": 0,
"overdueCount": 0
}
]
}tasks.listStatuses
The statuses of a project, in board order.
tasks.listStatuses(projectId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
projectId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.listStatuses",
"args": ["<projectId>"]
}
}Reply:
[
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]tasks.getTags
Every tag used on tasks, with how many tasks carry it.
tasks.getTags() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getTags",
"args": []
}
}Reply:
[
{
"tag": "website",
"count": 1
}
]tasks.getStats
Task counts: total, completed, overdue, due today and this week.
tasks.getStats() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getStats",
"args": []
}
}Reply:
{
"total": 9,
"completed": 0,
"overdue": 0,
"dueToday": 1,
"dueThisWeek": 2
}tasks.getToday
Tasks due today, plus overdue ones.
tasks.getToday() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getToday",
"args": []
}
}Reply:
{
"tasks": [
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 1,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:25.642Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
],
"total": 1,
"hasMore": false
}tasks.getUpcoming
Tasks due in the next number of days (7 by default), grouped by day.
tasks.getUpcoming(days?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
days | integer | null | no |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getUpcoming",
"args": [7]
}
}Reply:
{
"tasks": [
{
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 1,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:25.642Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
},
{
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write landing page copy",
"description": null,
"priority": 2,
"position": 0,
"dueDate": "2026-10-09",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 1
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:25.637Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0
}
],
"total": 2,
"hasMore": false
}tasks.getOverdue
Open tasks whose due date has passed.
tasks.getOverdue() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getOverdue",
"args": []
}
}Reply:
{
"tasks": [],
"total": 0,
"hasMore": false
}tasks.getLinkedTasks
Tasks linked to a note.
tasks.getLinkedTasks(noteId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
noteId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.getLinkedTasks",
"args": ["<noteId>"]
}
}Reply:
[]tasks.listProjectLinks
The raw link rows of a project’s hub, including pin state.
tasks.listProjectLinks(projectId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
projectId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.listProjectLinks",
"args": ["<projectId>"]
}
}Reply:
[
{
"id": "1d1f4887-c57b-4b20-a6c4-556f15cdaf9e",
"projectId": "<projectId>",
"itemType": "note",
"itemId": "<noteId>",
"position": 0,
"pinned": 0,
"createdAt": "2026-10-07T11:17:25.751Z"
}
]tasks.listProjectContents
The notes, files and events a project holds.
tasks.listProjectContents(projectId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
projectId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.listProjectContents",
"args": ["<projectId>"]
}
}Reply:
{
"notes": [
{
"id": "<noteId>",
"title": "Website relaunch plan",
"emoji": null,
"modifiedAt": "2026-10-07T11:17:25.736Z",
"pinned": false
}
],
"files": [],
"events": [],
"counts": {
"notes": 1,
"files": 0,
"events": 0
}
}tasks.listForItem
The projects a note, file or calendar event belongs to.
tasks.listForItem(itemType, itemId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemType | "note" | "calendar_event" | "file" | yes | "note", "calendar_event", "file" |
itemId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tasks.listForItem",
"args": ["note", "<noteId>"]
}
}Reply:
[
{
"id": "<projectId>",
"name": "Website relaunch",
"color": "#6366f1",
"icon": null
}
]Inbox
inbox.get
Read an inbox item by id.
inbox.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.get",
"args": ["<inboxId>"]
}
}Reply:
{
"id": "<inboxId>",
"type": "note",
"title": "Printer",
"content": "Call the printer about flyers",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:25.759Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}inbox.list
List inbox items, filtered by type and paged.
inbox.list(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.type | "link" | "note" | "image" | "voice" | "clip" | "pdf" | "social" | "reminder" | no | "link", "note", "image", "voice", "clip", "pdf", "social", "reminder" |
options.includeSnoozed | boolean | no | default false |
options.sortBy | "created" | "modified" | "title" | no | "created", "modified", "title"; default "created" |
options.sortOrder | "asc" | "desc" | no | "asc", "desc"; default "desc" |
options.limit | integer | no | min 1; max 200; default 50 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.list",
"args": [
{
"type": "note",
"limit": 3
}
]
}
}Reply:
{
"items": [
{
"id": "<inbox15Id>",
"type": "note",
"title": "Idea 15",
"content": "Idea 15: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.900Z",
"thumbnailUrl": null,
"sourceUrl": null,
"tags": [],
"isStale": false,
"processingStatus": "complete",
"transcription": null,
"transcriptionStatus": null,
"captureSource": null
},
{
"id": "<inbox13Id>",
"type": "note",
"title": "Idea 13",
"content": "Idea 13: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.874Z",
"thumbnailUrl": null,
"sourceUrl": null,
"tags": [],
"isStale": false,
"processingStatus": "complete",
"transcription": null,
"transcriptionStatus": null,
"captureSource": null
},
{
"id": "<inbox12Id>",
"type": "note",
"title": "Idea 12",
"content": "Idea 12: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.862Z",
"thumbnailUrl": null,
"sourceUrl": null,
"tags": [],
"isStale": false,
"processingStatus": "complete",
"transcription": null,
"transcriptionStatus": null,
"captureSource": null
}
],
"total": 14,
"hasMore": true
}inbox.previewLink
Fetch a URL’s title, description and image without capturing it.
inbox.previewLink(url) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
url | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.previewLink",
"args": ["https://example.com/"]
}
}Reply:
{
"title": "Example Domain",
"domain": "example.com"
}inbox.getSuggestions
Where to file an inbox item: suggested folders and notes with confidence.
inbox.getSuggestions(itemId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getSuggestions",
"args": ["<inboxId>"]
}
}Reply:
{
"suggestions": [
{
"destination": {
"type": "note",
"noteId": "<fileId>",
"noteTitle": "report"
},
"confidence": 0.4099945947527886,
"reason": "Similar content (41% match)",
"suggestedTags": [],
"suggestedNote": {
"id": "<fileId>",
"title": "report",
"snippet": "",
"emoji": null
}
},
{
"destination": {
"type": "note",
"noteId": "<deleteNoteId>",
"noteTitle": "Scratch"
},
"confidence": 0.3792275339365006,
"reason": "Similar content (38% match)",
"suggestedTags": [],
"suggestedNote": {
"id": "<deleteNoteId>",
"title": "Scratch",
"snippet": "temp",
"emoji": null
}
}
]
}inbox.getTags
Every tag used on inbox items, with counts.
inbox.getTags() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getTags",
"args": []
}
}Reply:
[]inbox.getSnoozed
Inbox items that are snoozed, with when they come back.
inbox.getSnoozed() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getSnoozed",
"args": []
}
}Reply:
[]inbox.getStats
Inbox counts: items, items by type, and items captured and filed today.
inbox.getStats() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getStats",
"args": []
}
}Reply:
{
"totalItems": 16,
"itemsByType": {
"link": 1,
"note": 14,
"image": 0,
"voice": 1,
"clip": 0,
"pdf": 0,
"social": 0
},
"staleCount": 0,
"snoozedCount": 0,
"processedToday": 0,
"capturedToday": 17,
"avgTimeToProcess": 0,
"capturedThisWeek": 17,
"processedThisWeek": 0,
"captureProcessRatio": 17,
"ageDistribution": {
"fresh": 16,
"aging": 0,
"stale": 0
},
"oldestItemDays": 0,
"currentStreak": 0
}inbox.getJobs
Background jobs on inbox items, such as transcription and metadata fetches.
inbox.getJobs(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.itemIds | string[] | no | max items 200 |
options.statuses | ("pending" | "running" | "failed" | "complete")[] | no | max items 10 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getJobs",
"args": [
{
"statuses": ["pending", "running"]
}
]
}
}Reply:
{
"jobs": [
{
"id": "Nnvp-uR6KOnckeONk0mM1",
"itemId": "<linkInboxId>",
"type": "metadata-scrape",
"status": "pending",
"runAt": "2026-10-07T11:17:31.210Z",
"attempts": 1,
"maxAttempts": 2,
"payload": {
"url": "https://example.com/pricing"
},
"result": null,
"lastError": "HTTP 404",
"startedAt": null,
"completedAt": null,
"createdAt": "2026-10-07T11:17:25.932Z",
"updatedAt": "2026-10-07T11:17:26.210Z"
}
]
}inbox.getPatterns
Capture patterns over time: heatmap, by-type breakdown and peak hours.
inbox.getPatterns() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getPatterns",
"args": []
}
}Reply:
{
"timeHeatmap": [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
],
"typeDistribution": [
{
"type": "note",
"count": 15,
"percentage": 88,
"trend": "stable"
},
{
"type": "link",
"count": 1,
"percentage": 6,
"trend": "stable"
},
{
"type": "voice",
"count": 1,
"percentage": 6,
"trend": "stable"
}
],
"topDomains": [
{
"domain": "example.com",
"count": 1
}
],
"topTags": []
}inbox.getStaleThreshold
After how many days an unfiled inbox item counts as stale.
inbox.getStaleThreshold() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getStaleThreshold",
"args": []
}
}Reply:
7inbox.listArchived
Archived inbox items, searchable and paged.
inbox.listArchived(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.search | string | no | |
options.limit | integer | no | min 1; max 200; default 50 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.listArchived",
"args": [
{
"limit": 3
}
]
}
}Reply:
{
"items": [
{
"id": "<inbox14Id>",
"type": "note",
"title": "Idea 14",
"content": "Idea 14: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.887Z",
"thumbnailUrl": null,
"sourceUrl": null,
"tags": [],
"isStale": false,
"processingStatus": "complete",
"transcription": null,
"transcriptionStatus": null,
"captureSource": null
}
],
"total": 1,
"hasMore": false
}inbox.getFilingHistory
Recently filed inbox items and where each went.
inbox.getFilingHistory(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.limit | integer | no | min 1; max 100; default 20 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "inbox.getFilingHistory",
"args": [
{
"limit": 3
}
]
}
}Reply:
{
"entries": []
}Journal
journal.getEntry
Read the journal entry for a date (YYYY-MM-DD); null when there is none.
journal.getEntry(date) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getEntry",
"args": ["2026-10-05"]
}
}Reply:
{
"id": "j2026-10-05",
"date": "2026-10-05",
"content": "Kicked off the relaunch.",
"wordCount": 4,
"characterCount": 24,
"tags": ["planning"],
"createdAt": "2026-10-07T11:17:30.679Z",
"modifiedAt": "2026-10-07T11:17:30.679Z"
}journal.getHeatmap
Per-day writing activity for a year, for the journal heatmap.
journal.getHeatmap(year) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
year | integer | yes | min 1970; max 2100 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getHeatmap",
"args": [2026]
}
}Reply:
[
{
"date": "2026-10-05",
"characterCount": 24,
"level": 1
},
{
"date": "2026-10-06",
"characterCount": 17,
"level": 1
}
]journal.getMonthEntries
The journal entries of one month, with previews.
journal.getMonthEntries(year, month) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
year | integer | yes | min 1970; max 2100 |
month | integer | yes | min 1; max 12 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getMonthEntries",
"args": [2026, 10]
}
}Reply:
[
{
"date": "2026-10-06",
"preview": "Reviewed designs.",
"wordCount": 2,
"characterCount": 17,
"activityLevel": 1,
"tags": []
},
{
"date": "2026-10-05",
"preview": "Kicked off the relaunch.",
"wordCount": 4,
"characterCount": 24,
"activityLevel": 1,
"tags": ["planning"]
}
]journal.getYearStats
Per-month journal statistics for a year.
journal.getYearStats(year) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
year | integer | yes | min 1970; max 2100 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getYearStats",
"args": [2026]
}
}Reply:
[
{
"year": 2026,
"month": 10,
"entryCount": 2,
"totalWordCount": 6,
"totalCharacterCount": 41,
"averageLevel": 1
}
]journal.getDayContext
What else happened on a date: tasks due and calendar events.
journal.getDayContext(date) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getDayContext",
"args": ["2026-10-05"]
}
}Reply:
{
"date": "2026-10-05",
"tasks": [],
"events": [],
"overdueCount": 0
}journal.getAllTags
Every tag used in journal entries, with counts.
journal.getAllTags() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getAllTags",
"args": []
}
}Reply:
[
{
"tag": "planning",
"count": 2
},
{
"tag": "website",
"count": 2
},
{
"tag": "active",
"count": 1
}
]journal.getStreak
The current and longest daily journaling streak.
journal.getStreak() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "journal.getStreak",
"args": []
}
}Reply:
{
"currentStreak": 2,
"longestStreak": 2,
"lastEntryDate": "2026-10-06"
}Properties
properties.get
The properties (frontmatter fields) of a note or journal entry.
properties.get(entityId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
entityId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "properties.get",
"args": ["<noteId>"]
}
}Reply:
[
{
"name": "stage",
"value": "idea",
"type": "select"
},
{
"name": "project",
"value": ["Website relaunch"],
"type": "project"
}
]Templates
templates.list
Every note template.
templates.list() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "templates.list",
"args": []
}
}Reply:
{
"templates": [
{
"id": "blank",
"name": "Blank Note",
"description": "Start with an empty note",
"icon": "📄",
"isBuiltIn": true
},
{
"id": "daily-reflection",
"name": "Daily Reflection",
"description": "End-of-day reflection and gratitude",
"icon": "🌆",
"isBuiltIn": true
},
{
"id": "daily-standup",
"name": "Daily Standup",
"description": "Daily standup format",
"icon": "✅",
"isBuiltIn": true
}
]
}templates.get
Read a template by id, with its content and properties.
templates.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "templates.get",
"args": ["<templateId>"]
}
}Reply:
{
"id": "<templateId>",
"name": "Meeting",
"icon": null,
"isBuiltIn": false,
"tags": [],
"properties": [],
"content": "## Agenda\n\n## Notes\n\n## Action items\n",
"createdAt": "2026-10-07T11:17:26.022Z",
"modifiedAt": "2026-10-07T11:17:26.022Z"
}Saved filters
savedFilters.list
Every saved task filter.
savedFilters.list() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "savedFilters.list",
"args": []
}
}Reply:
{
"savedFilters": [
{
"id": "<savedFilterId>",
"name": "Due soon",
"config": {
"filters": {
"search": "",
"projectIds": [],
"priorities": [],
"tags": [],
"dueDate": {
"type": "any",
"customStart": null,
"customEnd": null
},
"statusIds": [],
"completion": "active",
"repeatType": "all",
"hasTime": "all"
}
},
"position": 0,
"createdAt": "2026-10-07T11:17:26.030Z"
}
]
}Bookmarks
bookmarks.get
Read a bookmark by id.
bookmarks.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "bookmarks.get",
"args": ["<bookmarkId>"]
}
}Reply:
{
"id": "<bookmarkId>",
"itemType": "note",
"itemId": "<noteId>",
"position": 0,
"createdAt": "2026-10-07T11:17:26.038Z",
"clock": {
"_offline": 1
},
"syncedAt": null
}bookmarks.list
List bookmarks, optionally of one item type.
bookmarks.list(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.itemType | string | no | |
options.sortBy | "position" | "createdAt" | no | "position", "createdAt"; default "position" |
options.sortOrder | "asc" | "desc" | no | "asc", "desc"; default "asc" |
options.limit | integer | no | min 1; max 1000; default 100 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "bookmarks.list",
"args": [
{
"itemType": "note",
"limit": 3
}
]
}
}Reply:
{
"bookmarks": [
{
"id": "<bookmarkId>",
"itemType": "note",
"itemId": "<noteId>",
"position": 0,
"createdAt": "2026-10-07T11:17:26.038Z",
"clock": {
"_offline": 1
},
"syncedAt": null,
"itemTitle": "Website relaunch plan",
"itemExists": true,
"itemMeta": {
"path": "Projects/Website relaunch plan.md",
"tags": ["website", "planning"]
}
}
],
"total": 1,
"hasMore": false
}bookmarks.isBookmarked
Whether an item is bookmarked.
bookmarks.isBookmarked(input) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemType | string | yes | |
input.itemId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "bookmarks.isBookmarked",
"args": [
{
"itemType": "note",
"itemId": "<noteId>"
}
]
}
}Reply:
truebookmarks.listByType
The bookmarks of one item type.
bookmarks.listByType(itemType) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemType | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "bookmarks.listByType",
"args": ["note"]
}
}Reply:
{
"bookmarks": [
{
"id": "<bookmarkId>",
"itemType": "note",
"itemId": "<noteId>",
"position": 0,
"createdAt": "2026-10-07T11:17:26.038Z",
"clock": {
"_offline": 1
},
"syncedAt": null,
"itemTitle": "Website relaunch plan",
"itemExists": true,
"itemMeta": {
"path": "Projects/Website relaunch plan.md",
"tags": ["website", "planning"]
}
}
],
"total": 1,
"hasMore": false
}bookmarks.getByItem
The bookmark of an item, or null.
bookmarks.getByItem(input) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemType | string | yes | |
input.itemId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "bookmarks.getByItem",
"args": [
{
"itemType": "note",
"itemId": "<noteId>"
}
]
}
}Reply:
{
"id": "<bookmarkId>",
"itemType": "note",
"itemId": "<noteId>",
"position": 0,
"createdAt": "2026-10-07T11:17:26.038Z",
"clock": {
"_offline": 1
},
"syncedAt": null
}Tags
tags.getNotesByTag
The notes that carry a tag, pinned notes first.
tags.getNotesByTag(input) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.tag | string | yes | min length 1 |
input.sortBy | "modified" | "created" | "title" | no | "modified", "created", "title"; default "modified" |
input.sortOrder | "asc" | "desc" | no | "asc", "desc"; default "desc" |
input.includeDescendants | boolean | no | default false |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tags.getNotesByTag",
"args": [
{
"tag": "website",
"sortBy": "title"
}
]
}
}Reply:
{
"tag": "website",
"color": "violet",
"count": 2,
"pinnedNotes": [],
"unpinnedNotes": [
{
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:25.736Z",
"tags": ["website", "planning"],
"wordCount": 17,
"isPinned": false,
"pinnedAt": null,
"emoji": null
},
{
"id": "<note2Id>",
"path": "Projects/Launch checklist.md",
"title": "Launch checklist",
"created": "2026-10-07T11:17:24.117Z",
"modified": "2026-10-07T11:17:24.117Z",
"tags": ["website", "obsolete"],
"wordCount": 7,
"isPinned": false,
"pinnedAt": null,
"emoji": null
}
]
}tags.getAllWithCounts
Every tag with its color, icon, category and note count.
tags.getAllWithCounts() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tags.getAllWithCounts",
"args": []
}
}Reply:
{
"tags": [
{
"name": "website",
"count": 3,
"color": "violet",
"icon": null,
"categoryId": null,
"sortOrder": 0
},
{
"name": "planning",
"count": 2,
"color": "indigo",
"icon": null,
"categoryId": null,
"sortOrder": 0
},
{
"name": "active",
"count": 1,
"color": "pink",
"icon": null,
"categoryId": null,
"sortOrder": 0
}
]
}tags.listCategories
Every tag category with its sort order and tag count.
tags.listCategories() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "tags.listCategories",
"args": []
}
}Reply:
{
"success": true,
"categories": [
{
"id": "<categoryId>",
"name": "Work",
"sortOrder": 0,
"tagCount": 0
}
]
}Folder views
folderView.getConfig
A folder view’s saved configuration.
folderView.getConfig(folderPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.getConfig",
"args": ["Projects"]
}
}Reply:
{
"config": {
"path": "Projects",
"views": [
{
"name": "Default",
"type": "table",
"default": true,
"columns": [
{
"id": "title",
"width": 250
},
{
"id": "folder",
"width": 120
},
{
"id": "tags",
"width": 150
}
],
"order": [
{
"property": "title",
"direction": "asc"
}
],
"showSummaries": true
}
]
},
"isDefault": true
}folderView.getViews
The saved views of a folder or tag scope.
folderView.getViews(scope) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
scope | { kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] } | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.getViews",
"args": [
{
"kind": "folder",
"path": "Projects"
}
]
}
}Reply:
{
"views": [
{
"name": "Default",
"type": "table",
"default": true,
"columns": [
{
"id": "title",
"width": 250
},
{
"id": "folder",
"width": 120
},
{
"id": "tags",
"width": 150
}
],
"order": [
{
"property": "title",
"direction": "asc"
}
],
"showSummaries": true
}
],
"defaultIndex": 0
}folderView.listWithProperties
The notes in a folder or tag scope with the values of the properties asked for.
folderView.listWithProperties(options) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | yes | |
options.scope | { kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] } | yes | |
options.properties | string[] | no | |
options.limit | integer | no | min 1; max 1000; default 500 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.listWithProperties",
"args": [
{
"scope": {
"kind": "folder",
"path": "Projects"
},
"properties": ["stage"],
"limit": 3
}
]
}
}Reply:
{
"notes": [
{
"id": "<note2Id>",
"path": "Projects/Launch checklist.md",
"title": "Launch checklist",
"emoji": null,
"folder": "/",
"tags": ["obsolete", "website"],
"created": "2026-10-07T11:17:24.117Z",
"modified": "2026-10-07T11:17:24.117Z",
"wordCount": 7,
"properties": {},
"fileType": "markdown"
},
{
"id": "<renameNoteId>",
"path": "Projects/Roadmap.md",
"title": "Roadmap",
"emoji": null,
"folder": "/",
"tags": ["draft"],
"created": "2026-10-07T11:17:24.913Z",
"modified": "2026-10-07T11:17:24.913Z",
"wordCount": 2,
"properties": {},
"fileType": "markdown"
},
{
"id": "<moveNoteId>",
"path": "Projects/Old pricing ideas.md",
"title": "Old pricing ideas",
"emoji": null,
"folder": "/",
"tags": [],
"created": "2026-10-07T11:17:24.934Z",
"modified": "2026-10-07T11:17:24.934Z",
"wordCount": 2,
"properties": {},
"fileType": "markdown"
}
],
"total": 4,
"hasMore": true
}folderView.getAvailableProperties
The properties used by notes in a folder or tag scope.
folderView.getAvailableProperties(scope) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
scope | { kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] } | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.getAvailableProperties",
"args": [
{
"kind": "folder",
"path": "Projects"
}
]
}
}Reply:
{
"builtIn": [
{
"id": "title",
"displayName": "Title",
"type": "text"
},
{
"id": "folder",
"displayName": "Folder",
"type": "text"
},
{
"id": "tags",
"displayName": "Tags",
"type": "multiselect"
}
],
"properties": [
{
"name": "project",
"type": "project",
"usageCount": 1
},
{
"name": "stage",
"type": "select",
"usageCount": 1
}
],
"formulas": []
}folderView.getFolderSuggestions
Folders a note would fit in, best first.
folderView.getFolderSuggestions(noteId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
noteId | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.getFolderSuggestions",
"args": ["<meetingNoteId>"]
}
}Reply:
{
"suggestions": []
}folderView.folderExists
Whether a folder exists.
folderView.folderExists(folderPath) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "folderView.folderExists",
"args": ["Projects"]
}
}Reply:
trueReminders
reminders.get
Read a reminder by id.
reminders.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.get",
"args": ["<reminderId>"]
}
}Reply:
{
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:26.057Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
}reminders.list
List reminders, filtered by target or status.
reminders.list(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | object | null | no | |
options.targetType | "note" | "journal" | "highlight" | "task" | "note_date" | no | "note", "journal", "highlight", "task", "note_date" |
options.targetId | string | no | |
options.status | "pending" | "triggered" | "dismissed" | "snoozed" | ("pending" | "triggered" | "dismissed" | "snoozed")[] | no | "pending", "triggered", "dismissed", "snoozed" |
options.fromDate | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
options.toDate | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
options.limit | integer | no | min 1; max 200; default 50 |
options.offset | integer | no | min 0; max 9007199254740991; default 0 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.list",
"args": [
{
"targetType": "note",
"status": "pending",
"limit": 3
}
]
}
}Reply:
{
"reminders": [
{
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:26.057Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
},
{
"id": "<reminder2Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Send the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.066Z",
"modifiedAt": "2026-10-07T11:17:26.066Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
},
{
"id": "<reminder3Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Share the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.075Z",
"modifiedAt": "2026-10-07T11:17:26.075Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
}
],
"total": 3,
"hasMore": false
}reminders.getUpcoming
Reminders due in the next number of days (7 by default).
reminders.getUpcoming(days?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
days | number | no |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.getUpcoming",
"args": [30]
}
}Reply:
{
"reminders": [
{
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:26.057Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
},
{
"id": "<reminder2Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Send the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.066Z",
"modifiedAt": "2026-10-07T11:17:26.066Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
},
{
"id": "<reminder3Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Share the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.075Z",
"modifiedAt": "2026-10-07T11:17:26.075Z",
"targetTitle": "Website relaunch plan",
"targetExists": true
}
],
"total": 3,
"hasMore": false
}reminders.getDue
Reminders that are due now.
reminders.getDue() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.getDue",
"args": []
}
}Reply:
[]reminders.getForTarget
The reminders set on a note, journal entry or highlight.
reminders.getForTarget(input) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.targetType | "note" | "journal" | "highlight" | "task" | "note_date" | yes | "note", "journal", "highlight", "task", "note_date" |
input.targetId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.getForTarget",
"args": [
{
"targetType": "note",
"targetId": "<noteId>"
}
]
}
}Reply:
[
{
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:26.057Z"
},
{
"id": "<reminder2Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Send the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.066Z",
"modifiedAt": "2026-10-07T11:17:26.066Z"
},
{
"id": "<reminder3Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Share the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.075Z",
"modifiedAt": "2026-10-07T11:17:26.075Z"
}
]reminders.countPending
How many reminders are still pending.
reminders.countPending() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "reminders.countPending",
"args": []
}
}Reply:
3Calendar
calendar.getEvent
Read a calendar event by id.
calendar.getEvent(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "calendar.getEvent",
"args": ["<eventId>"]
}
}Reply:
{
"id": "<eventId>",
"title": "Design review",
"description": null,
"location": null,
"startAt": "2026-10-08T10:00:00.000Z",
"endAt": "2026-10-08T11:00:00.000Z",
"timezone": "UTC",
"isAllDay": false,
"recurrenceRule": null,
"recurrenceExceptions": null,
"attendees": null,
"reminders": null,
"visibility": null,
"colorId": null,
"color": null,
"conferenceData": null,
"parentEventId": null,
"originalStartTime": null,
"targetCalendarId": null,
"archivedAt": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:26.084Z",
"modifiedAt": "2026-10-07T11:17:26.084Z",
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"source_ref": {
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
},
"sources": [
{
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
}
]
}calendar.listEvents
List memrynote calendar events.
calendar.listEvents(options?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
options | { includeArchived?: boolean } | string | null | no |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "calendar.listEvents",
"args": [
{
"includeArchived": false
}
]
}
}Reply:
{
"events": [
{
"id": "<eventId>",
"title": "Design review",
"description": null,
"location": null,
"startAt": "2026-10-08T10:00:00.000Z",
"endAt": "2026-10-08T11:00:00.000Z",
"timezone": "UTC",
"isAllDay": false,
"recurrenceRule": null,
"recurrenceExceptions": null,
"attendees": null,
"reminders": null,
"visibility": null,
"colorId": null,
"color": null,
"conferenceData": null,
"parentEventId": null,
"originalStartTime": null,
"targetCalendarId": null,
"archivedAt": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:26.084Z",
"modifiedAt": "2026-10-07T11:17:26.084Z",
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"source_ref": {
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
}
},
{
"id": "<event2Id>",
"title": "Old standup",
"description": null,
"location": null,
"startAt": "2026-10-09T10:00:00.000Z",
"endAt": "2026-10-09T11:00:00.000Z",
"timezone": "UTC",
"isAllDay": false,
"recurrenceRule": null,
"recurrenceExceptions": null,
"attendees": null,
"reminders": null,
"visibility": null,
"colorId": null,
"color": null,
"conferenceData": null,
"parentEventId": null,
"originalStartTime": null,
"targetCalendarId": null,
"archivedAt": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:26.087Z",
"modifiedAt": "2026-10-07T11:17:26.087Z",
"href": "memry://calendar/event/<event2Id>?date=2026-10-09",
"source_ref": {
"kind": "calendar_event",
"id": "<event2Id>",
"title": "Old standup",
"href": "memry://calendar/event/<event2Id>?date=2026-10-09"
}
}
],
"sources": [
{
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
},
{
"kind": "calendar_event",
"id": "<event2Id>",
"title": "Old standup",
"href": "memry://calendar/event/<event2Id>?date=2026-10-09"
}
]
}calendar.getRange
Calendar items (events, tasks, reminders) between two times, or on one YYYY-MM-DD day.
calendar.getRange(inputOrStart, end?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
inputOrStart | { startAt?: string, endAt?: string, start?: string, end?: string } | string | yes | |
end | string | null | no |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "calendar.getRange",
"args": [
{
"startAt": "2026-10-01T00:00:00.000Z",
"endAt": "2026-11-01T00:00:00.000Z"
}
]
}
}Reply:
{
"items": [
{
"projectionId": "task:<task2Id>",
"sourceType": "task",
"sourceId": "<task2Id>",
"title": "Review the new design",
"descriptionPreview": null,
"startAt": "2026-10-06T21:00:00.000Z",
"endAt": "2026-10-07T21:00:00.000Z",
"isAllDay": true,
"timezone": "Europe/Istanbul",
"visualType": "task",
"editability": {
"canMove": true,
"canResize": false,
"canEditText": true,
"canDelete": true
},
"source": {
"provider": null,
"calendarSourceId": null,
"title": "memrynote Tasks",
"color": null,
"kind": null,
"isMemryManaged": true
},
"binding": null,
"snoozeOffsetMinutes": null,
"href": "memry://task/<task2Id>",
"source_ref": {
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>",
"visualType": "task"
}
},
{
"projectionId": "event:<eventId>",
"sourceType": "event",
"sourceId": "<eventId>",
"title": "Design review",
"descriptionPreview": null,
"startAt": "2026-10-08T10:00:00.000Z",
"endAt": "2026-10-08T11:00:00.000Z",
"isAllDay": false,
"timezone": "UTC",
"visualType": "event",
"editability": {
"canMove": true,
"canResize": true,
"canEditText": true,
"canDelete": true
},
"source": {
"provider": null,
"calendarSourceId": null,
"title": "memrynote",
"color": null,
"kind": null,
"isMemryManaged": true
},
"binding": null,
"snoozeOffsetMinutes": null,
"color": null,
"displayColor": null,
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"source_ref": {
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"visualType": "event"
}
},
{
"projectionId": "task:<taskId>",
"sourceType": "task",
"sourceId": "<taskId>",
"title": "Write landing page copy",
"descriptionPreview": null,
"startAt": "2026-10-08T21:00:00.000Z",
"endAt": "2026-10-09T21:00:00.000Z",
"isAllDay": true,
"timezone": "Europe/Istanbul",
"visualType": "task",
"editability": {
"canMove": true,
"canResize": false,
"canEditText": true,
"canDelete": true
},
"source": {
"provider": null,
"calendarSourceId": null,
"title": "memrynote Tasks",
"color": null,
"kind": null,
"isMemryManaged": true
},
"binding": null,
"snoozeOffsetMinutes": null,
"href": "memry://task/<taskId>",
"source_ref": {
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>",
"visualType": "task"
}
}
],
"sources": [
{
"kind": "task",
"id": "<task2Id>",
"title": "Review the new design",
"href": "memry://task/<task2Id>",
"visualType": "task"
},
{
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"visualType": "event"
},
{
"kind": "task",
"id": "<taskId>",
"title": "Write landing page copy",
"href": "memry://task/<taskId>",
"visualType": "task"
}
]
}Settings
settings.get
Read one stored setting by key; null when it is not set.
settings.get(key) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
key | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.get",
"args": ["agent-api-example"]
}
}Reply:
"on"settings.getJournalSettings
Journal settings: templates and which panels show.
settings.getJournalSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getJournalSettings",
"args": []
}
}Reply:
{
"defaultTemplate": null,
"weekdayTemplates": {},
"showSchedule": true,
"showTasks": true,
"showAIConnections": true,
"showStatsFooter": false
}settings.getAISettings
Whether AI features are on.
settings.getAISettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getAISettings",
"args": []
}
}Reply:
{
"enabled": true
}settings.getVoiceTranscriptionSettings
Voice transcription settings: provider and model.
settings.getVoiceTranscriptionSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getVoiceTranscriptionSettings",
"args": []
}
}Reply:
{
"provider": "local",
"memoNameMode": "transcript"
}settings.getVoiceModelStatus
Whether the local voice model is downloaded and ready.
settings.getVoiceModelStatus() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getVoiceModelStatus",
"args": []
}
}Reply:
{
"name": "Whisper Small",
"downloaded": false,
"loaded": false,
"loading": false,
"error": null
}settings.getVoiceRecordingReadiness
Whether voice recording can start now, and why not.
settings.getVoiceRecordingReadiness() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getVoiceRecordingReadiness",
"args": []
}
}Reply:
{
"ready": false,
"provider": "local",
"reason": "missing-model",
"message": "Download Whisper Small in Settings to record voice memos."
}settings.getVoiceTranscriptionOpenAIKeyStatus
Whether an OpenAI key for transcription is stored. The key itself is never returned.
settings.getVoiceTranscriptionOpenAIKeyStatus() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getVoiceTranscriptionOpenAIKeyStatus",
"args": []
}
}Reply:
{
"hasApiKey": false
}settings.getAIModelStatus
The state of the local embedding model.
settings.getAIModelStatus() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getAIModelStatus",
"args": []
}
}Reply:
{
"name": "EmbeddingGemma 2",
"dimension": 256,
"loaded": true,
"loading": false,
"error": null,
"embeddingCount": 13
}settings.getTabSettings
Tab settings.
settings.getTabSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getTabSettings",
"args": []
}
}Reply:
{
"restoreSessionOnStart": true,
"tabCloseButton": "hover"
}settings.getNoteEditorSettings
Note editor toolbar settings.
settings.getNoteEditorSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getNoteEditorSettings",
"args": []
}
}Reply:
{
"toolbarMode": "floating"
}settings.getGeneralSettings
General settings: theme, fonts, language and startup.
settings.getGeneralSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getGeneralSettings",
"args": []
}
}Reply:
{
"theme": "white",
"fontSize": "medium",
"fontSizePx": 16,
"fontFamily": "system",
"customFontFamily": "",
"accentColor": "#f97316",
"colorTheme": "memrynote",
"useThemeAccent": true,
"backgroundLight": "",
"foregroundLight": "",
"backgroundDark": "",
"foregroundDark": "",
"reduceMotion": "system",
"pointerCursors": false,
"fontSmoothing": false,
"startOnBoot": false,
"language": "en",
"onboardingCompleted": true,
"createInSelectedFolder": true,
"openPagesInNewTab": false,
"minimizeToTray": false,
"clockFormat": "12h",
"dateFormat": "DD.MM.YYYY",
"zoomFactor": 1
}settings.getEditorSettings
Editor settings: width, spell check, checklists and more.
settings.getEditorSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getEditorSettings",
"args": []
}
}Reply:
{
"width": "normal",
"toolbarMode": "floating",
"spellCheck": false,
"pdfAdaptToTheme": false,
"convertChecklistsToTasks": true,
"convertAgentChecklistsToTasks": false
}settings.getTaskSettings
Task settings: default project, sort order and week start.
settings.getTaskSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getTaskSettings",
"args": []
}
}Reply:
{
"defaultProjectId": null,
"defaultSortOrder": "manual",
"defaultView": "all",
"staleInboxDays": 7
}settings.getKeyboardSettings
Keyboard shortcut overrides.
settings.getKeyboardSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getKeyboardSettings",
"args": []
}
}Reply:
{
"overrides": {},
"globalCapture": null
}settings.getSyncSettings
Sync settings.
settings.getSyncSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getSyncSettings",
"args": []
}
}Reply:
{
"enabled": true,
"autoSync": true,
"attachmentAutoDownload": true
}settings.getBackupSettings
Backup settings.
settings.getBackupSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getBackupSettings",
"args": []
}
}Reply:
{
"autoBackup": false,
"frequencyHours": 24,
"maxBackups": 5,
"lastBackupAt": null
}settings.getGraphSettings
Graph view settings.
settings.getGraphSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getGraphSettings",
"args": []
}
}Reply:
{
"layout": "forceatlas2",
"showLabels": false,
"showEdgeLabels": false,
"animateLayout": true,
"showTagEdges": false
}settings.getCalendarSettings
Calendar settings.
settings.getCalendarSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getCalendarSettings",
"args": []
}
}Reply:
{
"dayCellClickBehavior": "journal",
"calendarPageClickOverride": "calendar",
"weekStartDay": "monday",
"showNotesOnCalendar": false
}settings.getFeaturesSettings
Which surfaces are on: home, inbox, journal, tasks, calendar, graph and spatial canvas.
settings.getFeaturesSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getFeaturesSettings",
"args": []
}
}Reply:
{
"home": true,
"inbox": true,
"journal": true,
"tasks": true,
"calendar": true,
"graph": true,
"spatialCanvas": true
}settings.getInboxSettings
Inbox settings, such as the daily review reminder.
settings.getInboxSettings() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "settings.getInboxSettings",
"args": []
}
}Reply:
{
"reviewReminderEnabled": false,
"reviewReminderTime": "18:00",
"imageFilingMode": "embed",
"imageFilingModeRemembered": false
}Search
search.query
Full-text search across notes, tasks, journal entries and inbox items.
search.query(params) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
params | object | yes | |
params.text | string | yes | max length 500 |
params.types | ("note" | "journal" | "task" | "inbox")[] | no | default [] |
params.tags | string[] | no | default [] |
params.dateRange | object | null | no | default null |
params.dateRange.from | string | yes | |
params.dateRange.to | string | yes | |
params.projectId | string | null | no | default null |
params.folderPath | string | null | no | default null |
params.limit | number | no | min 1; max 100; default 10 |
params.offset | number | no | min 0; default 0 |
params.noteFileTypes | ("markdown" | "pdf" | "image" | "audio" | "video")[] | no | min items 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "search.query",
"args": [
{
"text": "relaunch",
"types": ["note", "task"],
"limit": 3
}
]
}
}Reply:
{
"groups": [
{
"type": "note",
"results": [
{
"id": "<noteId>",
"type": "note",
"title": "Website relaunch plan",
"snippet": "# Website <mark>relaunch</mark> plan\n\nSecond draft.\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"score": 2.197131341983295,
"normalizedScore": 1,
"matchType": "exact",
"modifiedAt": "2026-10-07T11:17:25.736Z",
"metadata": {
"type": "note",
"path": "Projects/Website relaunch plan.md",
"tags": [],
"emoji": null,
"fileType": "markdown",
"wordCount": 17,
"createdAt": "2026-10-07T11:17:24.017Z"
}
}
],
"totalInGroup": 1
}
],
"totalCount": 1,
"queryTimeMs": 1
}search.quick
The fast search behind the command palette: a few hits per type.
search.quick(text, noteFileTypes?) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
text | string | yes | |
noteFileTypes | ("markdown" | "pdf" | "image" | "audio" | "video")[] | no | min items 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "search.quick",
"args": ["launch", ["markdown"]]
}
}Reply:
{
"results": [
{
"id": "<note2Id>",
"type": "note",
"title": "Launch checklist",
"snippet": "# <mark>Launch</mark> checklist\n\n- [ ] DNS\n",
"score": 2.650944219070842,
"normalizedScore": 1,
"matchType": "exact",
"modifiedAt": "2026-10-07T11:17:24.117Z",
"metadata": {
"type": "note",
"path": "Projects/Launch checklist.md",
"tags": [],
"emoji": null,
"fileType": "markdown",
"wordCount": 7,
"createdAt": "2026-10-07T11:17:24.117Z"
}
},
{
"id": "<inbox2Id>",
"type": "inbox",
"title": "Idea 2",
"snippet": "Idea 2: follow up on the <mark>launch</mark>",
"score": 9.54401519949335e-7,
"normalizedScore": 1,
"matchType": "exact",
"modifiedAt": "2026-10-07T11:17:25.773Z",
"metadata": {
"type": "inbox",
"itemType": "note",
"sourceUrl": null,
"sourceTitle": null,
"filedAt": null
}
},
{
"id": "<inbox3Id>",
"type": "inbox",
"title": "Idea 3",
"snippet": "Idea 3: follow up on the <mark>launch</mark>",
"score": 9.54401519949335e-7,
"normalizedScore": 1,
"matchType": "exact",
"modifiedAt": "2026-10-07T11:17:25.780Z",
"metadata": {
"type": "inbox",
"itemType": "note",
"sourceUrl": null,
"sourceTitle": null,
"filedAt": null
}
}
],
"queryTimeMs": 1
}search.getStats
Search index statistics.
search.getStats() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "search.getStats",
"args": []
}
}Reply:
{
"totalNotes": 10,
"totalJournals": 3,
"totalTasks": 9,
"totalInboxItems": 17,
"totalIndexed": 39,
"lastIndexedAt": null
}search.getReasons
Recently opened search results and why they were opened.
search.getReasons() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "search.getReasons",
"args": []
}
}Reply:
[]search.getAllTags
Every tag known to search, with counts.
search.getAllTags() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "search.getAllTags",
"args": []
}
}Reply:
["active", "draft", "meeting"]Graph
graph.getData
The whole link graph: nodes and edges.
graph.getData() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "graph.getData",
"args": []
}
}Reply:
{
"nodes": [
{
"id": "ojq380wewprl",
"type": "journal",
"label": "2025-01-01",
"tags": [],
"wordCount": 47,
"connectionCount": 0,
"emoji": null,
"color": "var(--graph-node-journal)",
"isOrphan": true,
"isUnresolved": false
},
{
"id": "f8k9vbffqo7k",
"type": "note",
"label": "sample-project",
"tags": ["active", "project"],
"wordCount": 40,
"connectionCount": 1,
"emoji": null,
"color": "var(--graph-node-note)",
"isOrphan": false,
"isUnresolved": false
},
{
"id": "78n9fxcpnsyn",
"type": "note",
"label": "getting-started",
"tags": ["onboarding", "tutorial"],
"wordCount": 31,
"connectionCount": 1,
"emoji": null,
"color": "var(--graph-node-note)",
"isOrphan": false,
"isUnresolved": false
}
],
"edges": [
{
"id": "<taskId>-<projectId>-project-task",
"source": "<taskId>",
"target": "<projectId>",
"type": "project-task",
"weight": 1
},
{
"id": "<task2Id>-<projectId>-project-task",
"source": "<task2Id>",
"target": "<projectId>",
"type": "project-task",
"weight": 1
},
{
"id": "<task3Id>-<projectId>-project-task",
"source": "<task3Id>",
"target": "<projectId>",
"type": "project-task",
"weight": 1
}
]
}graph.getLocal
The link graph around one note, to a depth.
graph.getLocal(params) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
params | object | yes | |
params.noteId | string | yes | min length 1 |
params.depth | integer | no | min 1; max 3; default 2 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "graph.getLocal",
"args": [
{
"noteId": "<noteId>",
"depth": 1
}
]
}
}Reply:
{
"nodes": [
{
"id": "<noteId>",
"type": "note",
"label": "Website relaunch plan",
"tags": ["planning", "website"],
"wordCount": 17,
"connectionCount": 1,
"emoji": null,
"color": "var(--graph-node-note)",
"isOrphan": false,
"isUnresolved": false
},
{
"id": "<note2Id>",
"type": "note",
"label": "Launch checklist",
"tags": ["obsolete", "website"],
"wordCount": 7,
"connectionCount": 1,
"emoji": null,
"color": "var(--graph-node-note)",
"isOrphan": false,
"isUnresolved": false
}
],
"edges": [
{
"id": "<noteId>-<note2Id>-wikilink",
"source": "<noteId>",
"target": "<note2Id>",
"type": "wikilink",
"weight": 1
}
]
}Home pages
homePages.list
Every home page.
homePages.list() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "homePages.list",
"args": []
}
}Reply:
[
{
"id": "hBrhNJ5r-TVBQoD1vVLPR",
"name": "Home",
"position": 0,
"widgets": [
{
"id": "_V4IrvbGoj9qgRSZnnBxB",
"type": "recently-edited",
"x": 0,
"y": 0,
"w": 4,
"h": 4,
"config": {}
},
{
"id": "QQLqcIBMAnjDkEA6ASg0L",
"type": "bookmarks",
"x": 0,
"y": 4,
"w": 4,
"h": 4,
"config": {}
}
]
},
{
"id": "<homePageId>",
"name": "Focus",
"position": 0,
"widgets": []
},
{
"id": "<homePage2Id>",
"name": "Spare",
"position": 0,
"widgets": []
}
]homePages.get
Read a home page by id.
homePages.get(id) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "homePages.get",
"args": ["<homePageId>"]
}
}Reply:
{
"id": "<homePageId>",
"name": "Focus",
"position": 0,
"widgets": []
}Vault
vault.getAll
The vaults known on this device and which one is open.
vault.getAll() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "vault.getAll",
"args": []
}
}Reply:
{
"vaults": [
{
"path": "<vault>",
"name": "memry-e2e-agent-3gL7PG",
"noteCount": 3,
"taskCount": 0,
"lastOpened": "2026-10-07T11:17:12.485Z",
"isDefault": true,
"isMissing": false,
"accentColor": "#f97316"
}
],
"currentVault": null
}vault.getStatus
The open vault’s state: path, indexing progress and errors.
vault.getStatus() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "vault.getStatus",
"args": []
}
}Reply:
{
"isOpen": true,
"path": "<vault>",
"isIndexing": false,
"indexProgress": 100,
"error": null
}vault.getConfig
The open vault’s configuration.
vault.getConfig() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "vault.getConfig",
"args": []
}
}Reply:
{
"excludePatterns": [".git", "node_modules", ".trash"],
"defaultNoteFolder": "",
"journalFolder": "journal",
"journalDateFormat": "YYYY-MM-DD",
"attachmentsFolder": "attachments",
"journalShowInSidebar": false
}vault.listAccount
The vaults of the signed-in account on the sync server.
vault.listAccount() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "vault.listAccount",
"args": []
}
}Reply:
[]Canvas
canvas.list
Every canvas.
canvas.list() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "canvas.list",
"args": []
}
}Reply:
{
"canvases": [
{
"id": "<deleteCanvasId>",
"title": "Scratch board",
"folder": null,
"icon": null,
"ownerNoteId": null,
"createdAt": 1791371846105,
"updatedAt": 1791371846105
},
{
"id": "<canvasId>",
"title": "Launch board",
"folder": null,
"icon": null,
"ownerNoteId": null,
"createdAt": 1791371846095,
"updatedAt": 1791371846095
}
]
}canvas.getAsset
One image file attached to a canvas.
canvas.getAsset(canvasId, fileId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvasId | string | yes | min length 1 |
fileId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "canvas.getAsset",
"args": ["<canvasId>", "missing-file-id"]
}
}Reply:
{
"ref": null
}canvas.listAssets
The image files attached to a canvas.
canvas.listAssets(canvasId) through vault_desktop_read.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
canvasId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "canvas.listAssets",
"args": ["<canvasId>"]
}
}Reply:
{
"assets": []
}canvas.libraryList
The shapes saved in the canvas library.
canvas.libraryList() through vault_desktop_read.
Takes no arguments.
Example call:
{
"name": "vault_desktop_read",
"arguments": {
"operation": "canvas.libraryList",
"args": []
}
}Reply:
{
"libraryItems": []
}Notes
notes.create
Create a note from markdown, in a folder, with tags and properties.
notes.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.title | string | yes | min length 1; max length 200 |
input.content | string | no | default "" |
input.folder | string | no | |
input.tags | string[] | no | max items 50 |
input.template | string | no | |
input.properties | Record<string, any> | no | |
input.emoji | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.create",
"args": [
{
"title": "Press kit",
"content": "# Press kit\n\nLogos and screenshots.\n",
"folder": "Projects",
"tags": ["website"]
}
]
}
}Reply:
{
"success": true,
"note": {
"id": "sgywbhe5fcbg",
"path": "Projects/Press kit.md",
"title": "Press kit",
"content": "# Press kit\n\nLogos and screenshots.\n",
"frontmatter": {
"tags": ["website"]
},
"created": "2026-10-07T11:17:31.335Z",
"modified": "2026-10-07T11:17:31.335Z",
"tags": ["website"],
"aliases": [],
"wordCount": 6,
"properties": {},
"emoji": null
}
}notes.update
Change a note’s title, content, tags, properties or emoji.
notes.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.title | string | no | min length 1; max length 200 |
input.content | string | no | |
input.tags | string[] | no | max items 50 |
input.frontmatter | Record<string, any> | no | |
input.emoji | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.update",
"args": [
{
"id": "<note2Id>",
"content": "# Launch checklist\n\n- [ ] DNS\n- [ ] Analytics\n"
}
]
}
}Reply:
{
"success": true,
"note": {
"id": "<note2Id>",
"path": "Projects/Launch checklist.md",
"title": "Launch checklist",
"content": "# Launch checklist\n\n- [ ] DNS\n- [ ] Analytics {check}\n",
"frontmatter": {
"tags": ["website", "obsolete"]
},
"created": "2026-10-07T11:17:24.117Z",
"modified": "2026-10-07T11:17:31.438Z",
"tags": ["website", "obsolete"],
"aliases": [],
"wordCount": 12,
"properties": {},
"emoji": null
}
}notes.rename
Rename a note.
notes.rename(id, newTitle) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | |
newTitle | string | yes | min length 1; max length 200 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.rename",
"args": ["<renameNoteId>", "Q4 roadmap (draft)"]
}
}Reply:
{
"success": true,
"note": {
"id": "<renameNoteId>",
"path": "Projects/Q4 roadmap (draft).md",
"title": "Q4 roadmap (draft)",
"content": "Q4 themes.\n",
"frontmatter": {
"tags": ["draft"]
},
"created": "2026-10-07T11:17:24.913Z",
"modified": "2026-10-07T11:17:31.460Z",
"tags": ["draft"],
"aliases": [],
"wordCount": 2,
"properties": {},
"emoji": null
}
}notes.move
Move a note to another folder.
notes.move(id, newFolder) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | |
newFolder | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.move",
"args": ["<moveNoteId>", "Projects"]
}
}Reply:
{
"success": true,
"note": {
"id": "<moveNoteId>",
"path": "Projects/Old pricing ideas.md",
"title": "Old pricing ideas",
"content": "Three tiers.\n",
"frontmatter": {},
"created": "2026-10-07T11:17:24.934Z",
"modified": "2026-10-07T11:17:31.481Z",
"tags": [],
"aliases": [],
"wordCount": 2,
"properties": {},
"emoji": null
}
}notes.delete
Delete a note.
notes.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.delete",
"args": ["<deleteNoteId>"]
}
}Reply:
{
"success": true
}notes.createFolder
Create a note folder.
notes.createFolder(path) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.createFolder",
"args": ["Projects/Assets"]
}
}Reply:
{
"success": true,
"stored": {
"path": "Projects/Assets",
"icon": null
}
}notes.renameFolder
Rename or move a note folder and everything in it.
notes.renameFolder(oldPath, newPath) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
oldPath | string | yes | |
newPath | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.renameFolder",
"args": ["Projects/Assets", "Projects/Brand assets"]
}
}Reply:
{
"success": true,
"stored": {
"path": "Projects/Brand assets",
"icon": null
}
}notes.deleteFolder
Delete a note folder and everything in it.
notes.deleteFolder(path) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
path | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.deleteFolder",
"args": ["Projects/Brand assets"]
}
}Reply:
{
"success": true
}notes.createPropertyDefinition
Define a property: its name, type and options.
notes.createPropertyDefinition(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1 |
input.type | "text" | "number" | "checkbox" | "date" | "url" | "status" | "select" | "multiselect" | yes | "text", "number", "checkbox", "date", "url", "status", "select", "multiselect" |
input.options | object[] | no | |
input.options[].value | string | yes | |
input.options[].color | string | yes | |
input.options[].default | boolean | no | |
input.defaultValue | any | no | |
input.color | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.createPropertyDefinition",
"args": [
{
"name": "effort",
"type": "select",
"options": [
{
"value": "S",
"color": "green"
},
{
"value": "L",
"color": "red"
}
]
}
]
}
}Reply:
{
"success": true,
"definition": {
"name": "effort",
"type": "select",
"options": "[{\"value\":\"S\",\"color\":\"green\"},{\"value\":\"L\",\"color\":\"red\"}]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.516Z",
"clock": null,
"syncedAt": null
}
}notes.updatePropertyDefinition
Change a property definition’s type, options or color.
notes.updatePropertyDefinition(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1 |
input.type | "text" | "number" | "checkbox" | "date" | "url" | "status" | "select" | "multiselect" | no | "text", "number", "checkbox", "date", "url", "status", "select", "multiselect" |
input.options | object[] | no | |
input.options[].value | string | yes | |
input.options[].color | string | yes | |
input.options[].default | boolean | no | |
input.defaultValue | any | no | |
input.color | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.updatePropertyDefinition",
"args": [
{
"name": "effort",
"color": "blue"
}
]
}
}Reply:
{
"success": true,
"definition": {
"name": "effort",
"type": "select",
"options": "[{\"value\":\"S\",\"color\":\"green\"},{\"value\":\"L\",\"color\":\"red\"}]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.532Z",
"clock": null,
"syncedAt": null
}
}notes.ensurePropertyDefinition
Define a status, select or multiselect property if it does not exist yet.
notes.ensurePropertyDefinition(name, type) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
name | string | yes | min length 1 |
type | "status" | "select" | "multiselect" | yes | "status", "select", "multiselect" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.ensurePropertyDefinition",
"args": ["stage", "select"]
}
}Reply:
{
"success": true,
"stored": {
"name": "stage",
"type": "select",
"options": "[]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.530Z",
"clock": null,
"syncedAt": null
}
}notes.addPropertyOption
Add an option to a select or multiselect property.
notes.addPropertyOption(propertyName, option) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
propertyName | string | yes | min length 1 |
option | object | yes | |
option.value | string | yes | min length 1 |
option.color | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.addPropertyOption",
"args": [
"stage",
{
"value": "review",
"color": "yellow"
}
]
}
}Reply:
{
"success": true,
"stored": {
"name": "stage",
"type": "select",
"options": "[{\"value\":\"review\",\"color\":\"yellow\"}]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.545Z",
"clock": null,
"syncedAt": null
}
}notes.addStatusOption
Add an option to one category of a status property.
notes.addStatusOption(propertyName, categoryKey, option) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
propertyName | string | yes | min length 1 |
categoryKey | "todo" | "in_progress" | "done" | yes | "todo", "in_progress", "done" |
option | object | yes | |
option.value | string | yes | min length 1 |
option.color | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.addStatusOption",
"args": [
"progress",
"in_progress",
{
"value": "waiting",
"color": "orange"
}
]
}
}Reply:
{
"success": true,
"stored": {
"name": "progress",
"type": "status",
"options": "{\"categories\":{\"todo\":{\"label\":\"To-do\",\"options\":[{\"value\":\"Not started\",\"color\":\"stone\",\"default\":true}]},\"in_progress\":{\"label\":\"In progress\",\"options\":[{\"value\":\"In Progress\",\"color\":\"amber\"},{\"value\":\"waiting\",\"color\":\"orange\"}]},\"done\":{\"label\":\"Complete\",\"options\":[{\"value\":\"Done\",\"color\":\"eme…",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.559Z",
"clock": null,
"syncedAt": null
}
}notes.removePropertyOption
Remove an option from a property.
notes.removePropertyOption(propertyName, optionValue) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
propertyName | string | yes | min length 1 |
optionValue | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.removePropertyOption",
"args": ["stage", "in review"]
}
}Reply:
{
"success": true,
"stored": {
"name": "stage",
"type": "select",
"options": "[]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.597Z",
"clock": null,
"syncedAt": null
}
}notes.renamePropertyOption
Rename a property option, in every note that uses it.
notes.renamePropertyOption(propertyName, oldValue, newValue) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
propertyName | string | yes | min length 1 |
oldValue | string | yes | min length 1 |
newValue | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.renamePropertyOption",
"args": ["stage", "review", "in review"]
}
}Reply:
{
"success": true,
"stored": {
"name": "stage",
"type": "select",
"options": "[{\"value\":\"in review\",\"color\":\"yellow\"}]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.571Z",
"clock": null,
"syncedAt": null
}
}notes.updateOptionColor
Change the color of a property option.
notes.updateOptionColor(propertyName, optionValue, newColor) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
propertyName | string | yes | min length 1 |
optionValue | string | yes | min length 1 |
newColor | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.updateOptionColor",
"args": ["stage", "in review", "purple"]
}
}Reply:
{
"success": true,
"stored": {
"name": "stage",
"type": "select",
"options": "[{\"value\":\"in review\",\"color\":\"purple\"}]",
"defaultValue": null,
"color": null,
"createdAt": "2026-10-07T11:17:31.584Z",
"clock": null,
"syncedAt": null
}
}notes.deletePropertyDefinition
Delete a property definition.
notes.deletePropertyDefinition(name) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
name | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.deletePropertyDefinition",
"args": ["effort"]
}
}Reply:
{
"success": true
}notes.uploadAttachment
Attach a file to a note. JSON cannot carry the file, so this fails for agents.
notes.uploadAttachment(noteId, file) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values | Notes |
|---|---|---|---|---|
noteId | string | yes | ||
file | object | yes | A File-like object whose arrayBuffer() returns the bytes. JSON cannot carry one, so an agent call to this operation fails. | |
file.name | string | yes | ||
file.arrayBuffer | any | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.uploadAttachment",
"args": [
"<noteId>",
{
"name": "photo.png",
"arrayBuffer": null
}
]
}
}Reply (an error):
{
"code": "INTERNAL",
"message": "file.arrayBuffer is not a function",
"details": {
"operation": "notes.uploadAttachment",
"code": "DESKTOP_API_ERROR"
}
}notes.deleteAttachment
Delete a file from a note’s attachments folder.
notes.deleteAttachment(noteId, filename) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
noteId | string | yes | |
filename | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.deleteAttachment",
"args": ["<noteId>", "<attachmentName>"]
}
}Reply:
{
"success": true,
"deleted": true,
"referencedBy": []
}notes.setFolderConfig
Change a folder’s settings, such as its icon and default template.
notes.setFolderConfig(folderPath, config) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes | |
config | object | yes | |
config.icon | string | null | no | |
config.template | string | no | |
config.inherit | boolean | no | default true |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.setFolderConfig",
"args": [
"Projects",
{
"icon": "folder-kanban"
}
]
}
}Reply:
{
"success": true,
"stored": {
"icon": "folder-kanban",
"inherit": true
}
}notes.restoreVersion
Restore a note to a saved version.
notes.restoreVersion(snapshotId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
snapshotId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.restoreVersion",
"args": ["<snapshotId>"]
}
}Reply:
{
"success": true,
"note": {
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"content": "# Website relaunch plan\n\n## Goals\n\n- Faster pages\n- Clearer pricing\n\nSee [[Launch checklist]].\n",
"frontmatter": {
"tags": ["website", "planning"]
},
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:31.622Z",
"tags": ["website", "planning"],
"aliases": [],
"wordCount": 15,
"properties": {},
"emoji": null
}
}notes.deleteVersion
Delete a saved version of a note.
notes.deleteVersion(snapshotId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
snapshotId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.deleteVersion",
"args": ["<snapshotId>"]
}
}Reply:
{
"success": true
}notes.reorder
Set the manual order of the notes in a folder.
notes.reorder(folderPath, notePaths) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes | |
notePaths | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.reorder",
"args": ["Projects", ["Projects/Launch checklist.md", "Projects/Website relaunch plan.md"]]
}
}Reply:
{
"success": true
}notes.importFiles
Copy files from paths on this device into the vault as notes or files.
notes.importFiles(sourcePaths, targetFolder?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
sourcePaths | string[] | yes | |
targetFolder | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.importFiles",
"args": [["/Users/me/Downloads/reading-list.md"], "Projects"]
}
}Reply:
{
"success": true,
"imported": 1,
"failed": 0,
"errors": [],
"importedFiles": [
{
"destPath": "<vault>/Projects/reading-list.md",
"filename": "reading-list.md",
"fileType": "markdown"
}
]
}notes.setLocalOnly
Keep a note on this device only, or let it sync again.
notes.setLocalOnly(id, localOnly) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | |
localOnly | boolean | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.setLocalOnly",
"args": ["<meetingNoteId>", true]
}
}Reply:
{
"success": true,
"note": {
"id": "<meetingNoteId>",
"path": "Meetings/Kickoff meeting.md",
"title": "Kickoff meeting",
"content": "Attendees: Sam, Ada.\n",
"frontmatter": {
"tags": ["meeting"]
},
"created": "2026-10-07T11:17:24.889Z",
"modified": "2026-10-07T11:17:24.889Z",
"tags": ["meeting"],
"aliases": [],
"wordCount": 3,
"properties": {},
"emoji": null
}
}notes.setCalendarPropertyVisibility
Show or hide a date property on the calendar.
notes.setCalendarPropertyVisibility(name, showOnCalendar) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
name | string | yes | min length 1 |
showOnCalendar | boolean | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.setCalendarPropertyVisibility",
"args": ["deadline", true]
}
}Reply:
{
"success": true,
"stored": ["deadline"]
}notes.applyTemplate
Apply a template to an existing note.
notes.applyTemplate(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | |
input.templateId | string | yes | |
input.mode | "full" | "body" | yes | "full", "body" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.applyTemplate",
"args": [
{
"noteId": "<meetingNoteId>",
"templateId": "<templateId>",
"mode": "body"
}
]
}
}Reply:
{
"success": true,
"note": {
"id": "<meetingNoteId>",
"path": "Meetings/Kickoff meeting.md",
"title": "Kickoff meeting",
"content": "## Agenda\n\n## Notes\n\n## Action items\n",
"frontmatter": {
"tags": ["meeting"]
},
"created": "2026-10-07T11:17:24.889Z",
"modified": "2026-10-07T11:17:31.740Z",
"tags": ["meeting"],
"aliases": [],
"wordCount": 7,
"properties": {},
"emoji": null
}
}notes.exportPdf
Export a note to a PDF file at outputPath; without outputPath the user picks the file.
notes.exportPdf(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | min length 1 |
input.includeMetadata | boolean | no | default true |
input.pageSize | "A4" | "Letter" | "Legal" | no | "A4", "Letter", "Legal"; default "A4" |
input.includeTaskMarkers | boolean | no | default false |
input.outputPath | string | no | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.exportPdf",
"args": [
{
"noteId": "<noteId>",
"pageSize": "A4",
"outputPath": "/Users/me/Downloads/export/plan.pdf"
}
]
}
}Reply:
{
"success": true,
"path": "/Users/me/Downloads/export/plan.pdf"
}notes.exportHtml
Export a note to an HTML file at outputPath; without outputPath the user picks the file.
notes.exportHtml(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | min length 1 |
input.includeMetadata | boolean | no | default true |
input.pageSize | "A4" | "Letter" | "Legal" | no | "A4", "Letter", "Legal"; default "A4" |
input.includeTaskMarkers | boolean | no | default false |
input.outputPath | string | no | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "notes.exportHtml",
"args": [
{
"noteId": "<noteId>",
"outputPath": "/Users/me/Downloads/export/plan.html"
}
]
}
}Reply:
{
"success": true,
"path": "/Users/me/Downloads/export/plan.html"
}Tasks and projects
tasks.create
Create a task in a project.
tasks.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.title | string | yes | min length 1; max length 500 |
input.description | string | null | no | |
input.priority | integer | no | min 0; max 4; default 0 |
input.statusId | string | null | no | |
input.parentId | string | null | no | |
input.dueDate | string | null | no | |
input.dueTime | string | null | no | |
input.startDate | string | null | no | |
input.isRepeating | boolean | no | default false |
input.repeatConfig | object | null | no | |
input.repeatConfig.frequency | "daily" | "weekly" | "monthly" | "yearly" | yes | "daily", "weekly", "monthly", "yearly" |
input.repeatConfig.interval | integer | no | min 1; max 9007199254740991; default 1 |
input.repeatConfig.daysOfWeek | integer[] | no | |
input.repeatConfig.monthlyType | "dayOfMonth" | "weekPattern" | no | "dayOfMonth", "weekPattern" |
input.repeatConfig.dayOfMonth | integer | no | min 1; max 31 |
input.repeatConfig.weekOfMonth | integer | no | min 1; max 5 |
input.repeatConfig.dayOfWeekForMonth | integer | no | min 0; max 6 |
input.repeatConfig.endType | "never" | "date" | "count" | yes | "never", "date", "count" |
input.repeatConfig.endDate | string | null | no | |
input.repeatConfig.endCount | integer | no | min 1; max 9007199254740991 |
input.repeatConfig.completedCount | integer | no | min 0; max 9007199254740991; default 0 |
input.repeatConfig.createdAt | string | yes | |
input.repeatFrom | "due" | "completion" | null | no | "due", "completion" |
input.tags | string[] | no | max items 20 |
input.linkedNoteIds | string[] | no | |
input.linkedCanvasIds | string[] | no | |
input.sourceNoteId | string | null | no | |
input.position | integer | no | min -9007199254740991; max 9007199254740991 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.create",
"args": [
{
"projectId": "<projectId>",
"title": "Order the launch cake",
"priority": 1,
"dueDate": "2026-10-21"
}
]
}
}Reply:
{
"success": true,
"task": {
"id": "bxzD2rUFDfmosjLJdS4z3",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Order the launch cake",
"description": null,
"priority": 1,
"position": 9,
"dueDate": "2026-10-21",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": null,
"fieldClocks": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:32.143Z",
"modifiedAt": "2026-10-07T11:17:32.143Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.update
Change a task’s fields.
tasks.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.title | string | no | min length 1; max length 500 |
input.description | string | null | no | |
input.priority | integer | no | min 0; max 4 |
input.projectId | string | no | |
input.statusId | string | null | no | |
input.parentId | string | null | no | |
input.dueDate | string | null | no | |
input.dueTime | string | null | no | |
input.startDate | string | null | no | |
input.isRepeating | boolean | no | |
input.repeatConfig | object | null | no | |
input.repeatConfig.frequency | "daily" | "weekly" | "monthly" | "yearly" | yes | "daily", "weekly", "monthly", "yearly" |
input.repeatConfig.interval | integer | no | min 1; max 9007199254740991; default 1 |
input.repeatConfig.daysOfWeek | integer[] | no | |
input.repeatConfig.monthlyType | "dayOfMonth" | "weekPattern" | no | "dayOfMonth", "weekPattern" |
input.repeatConfig.dayOfMonth | integer | no | min 1; max 31 |
input.repeatConfig.weekOfMonth | integer | no | min 1; max 5 |
input.repeatConfig.dayOfWeekForMonth | integer | no | min 0; max 6 |
input.repeatConfig.endType | "never" | "date" | "count" | yes | "never", "date", "count" |
input.repeatConfig.endDate | string | null | no | |
input.repeatConfig.endCount | integer | no | min 1; max 9007199254740991 |
input.repeatConfig.completedCount | integer | no | min 0; max 9007199254740991; default 0 |
input.repeatConfig.createdAt | string | yes | |
input.repeatFrom | "due" | "completion" | null | no | "due", "completion" |
input.tags | string[] | no | max items 20 |
input.linkedNoteIds | string[] | no | |
input.linkedCanvasIds | string[] | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.update",
"args": [
{
"id": "<taskId>",
"title": "Write homepage copy",
"description": "Hero, features, pricing."
}
]
}
}Reply:
{
"success": true,
"task": {
"id": "<taskId>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Write homepage copy",
"description": "Hero, features, pricing.",
"priority": 3,
"position": 1,
"dueDate": "2026-10-15",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {
"_offline": 1
},
"position": {
"_offline": 1
},
"dueDate": {
"_offline": 1
},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.637Z",
"modifiedAt": "2026-10-07T11:17:32.162Z",
"isRepeating": false,
"tags": ["website"],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": true,
"subtaskCount": 1,
"completedSubtaskCount": 0
}
}tasks.delete
Delete a task.
tasks.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.delete",
"args": ["<deleteTaskId>"]
}
}Reply:
{
"success": true
}tasks.complete
Mark a task done.
tasks.complete(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.completedAt | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.complete",
"args": [
{
"id": "<task2Id>"
}
]
}
}Reply:
{
"success": true,
"task": {
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 0,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": "2026-10-07T11:17:32.181Z",
"archivedAt": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {
"_offline": 2
},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:32.181Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.uncomplete
Mark a done task open again.
tasks.uncomplete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.uncomplete",
"args": ["<task2Id>"]
}
}Reply:
{
"success": true,
"task": {
"id": "<task2Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Review the new design",
"description": null,
"priority": 0,
"position": 0,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 5
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {
"_offline": 3
},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.642Z",
"modifiedAt": "2026-10-07T11:17:32.197Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.archive
Archive a task.
tasks.archive(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.archive",
"args": ["<task3Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": "<statusDoingId>",
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 0,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": "2026-10-07T11:17:32.213Z",
"clock": {
"_offline": 5
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {
"_offline": 1
},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 3
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:32.213Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.unarchive
Bring an archived task back.
tasks.unarchive(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.unarchive",
"args": ["<task3Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": "<statusDoingId>",
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 0,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 6
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {
"_offline": 1
},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 4
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:32.235Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.move
Move a task to another project, status or parent, at a position.
tasks.move(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.taskId | string | yes | |
input.targetProjectId | string | no | |
input.targetStatusId | string | null | no | |
input.targetParentId | string | null | no | |
input.position | integer | yes | min -9007199254740991; max 9007199254740991 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.move",
"args": [
{
"taskId": "<task3Id>",
"targetStatusId": "<statusTodoId>",
"position": 0
}
]
}
}Reply:
{
"success": true,
"task": {
"id": "<task3Id>",
"projectId": "<projectId>",
"statusId": "<statusTodoId>",
"parentId": null,
"title": "Update the footer links",
"description": null,
"priority": 0,
"position": 0,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 6
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {
"_offline": 1
},
"parentId": {},
"priority": {},
"position": {
"_offline": 1
},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {
"_offline": 4
}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.648Z",
"modifiedAt": "2026-10-07T11:17:32.257Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.reorder
Set the positions of tasks.
tasks.reorder(taskIds, positions) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
taskIds | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.reorder",
"args": [
["<taskId>", "<task2Id>"],
[0, 1]
]
}
}Reply:
{
"success": true
}tasks.duplicate
Copy a task.
tasks.duplicate(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.duplicate",
"args": ["<task2Id>"]
}
}Reply:
{
"success": true,
"task": {
"id": "0647OHyz5uaWiyH8vHQrv",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Copy of Review the new design",
"description": null,
"priority": 0,
"position": 2,
"dueDate": "2026-10-07",
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": null,
"fieldClocks": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:32.284Z",
"modifiedAt": "2026-10-07T11:17:32.284Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.convertToSubtask
Make a task a subtask of another task.
tasks.convertToSubtask(taskId, parentId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
taskId | string | yes | |
parentId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.convertToSubtask",
"args": ["<task4Id>", "<taskId>"]
}
}Reply:
{
"success": true,
"task": {
"id": "<task4Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": "<taskId>",
"title": "Check the meta descriptions",
"description": null,
"priority": 0,
"position": 3,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 3
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {
"_offline": 2
},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.657Z",
"modifiedAt": "2026-10-07T11:17:32.302Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.convertToTask
Make a subtask a top-level task.
tasks.convertToTask(taskId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
taskId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.convertToTask",
"args": ["<task4Id>"]
}
}Reply:
{
"success": true,
"task": {
"id": "<task4Id>",
"projectId": "<projectId>",
"statusId": null,
"parentId": null,
"title": "Check the meta descriptions",
"description": null,
"priority": 0,
"position": 3,
"dueDate": null,
"dueTime": null,
"startDate": null,
"repeatConfig": null,
"repeatFrom": null,
"sourceNoteId": null,
"completedAt": null,
"archivedAt": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"title": {},
"description": {},
"projectId": {},
"statusId": {},
"parentId": {
"_offline": 3
},
"priority": {},
"position": {},
"dueDate": {},
"dueTime": {},
"startDate": {},
"repeatConfig": {},
"repeatFrom": {},
"sourceNoteId": {},
"completedAt": {},
"archivedAt": {}
},
"syncedAt": null,
"createdAt": "2026-10-07T11:17:25.657Z",
"modifiedAt": "2026-10-07T11:17:32.318Z",
"isRepeating": false,
"tags": [],
"linkedNoteIds": [],
"linkedCanvasIds": [],
"hasSubtasks": false,
"subtaskCount": 0,
"completedSubtaskCount": 0
}
}tasks.createProject
Create a project, with its statuses.
tasks.createProject(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1; max length 100 |
input.description | string | null | no | |
input.color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6366f1" |
input.icon | string | null | no | |
input.statuses | object[] | no | min items 2 |
input.statuses[].name | string | yes | min length 1; max length 50 |
input.statuses[].color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
input.statuses[].type | "todo" | "in_progress" | "done" | yes | "todo", "in_progress", "done" |
input.statuses[].order | integer | yes | min 0; max 9007199254740991 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.createProject",
"args": [
{
"name": "Office move",
"color": "#f97316"
}
]
}
}Reply:
{
"success": true,
"project": {
"id": "hqTR3uE3UgKHdLv4wWJBK",
"name": "Office move",
"description": null,
"color": "#f97316",
"icon": null,
"position": 7,
"isInbox": false,
"createdAt": "2026-10-07T11:17:32.341Z",
"modifiedAt": "2026-10-07T11:17:32.341Z",
"archivedAt": null,
"homeNoteId": null,
"clock": null,
"fieldClocks": null,
"syncedAt": null,
"statuses": [
{
"id": "hqTR3uE3UgKHdLv4wWJBK-todo",
"projectId": "hqTR3uE3UgKHdLv4wWJBK",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:32.341Z"
},
{
"id": "hqTR3uE3UgKHdLv4wWJBK-in-progress",
"projectId": "hqTR3uE3UgKHdLv4wWJBK",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:32.341Z"
},
{
"id": "hqTR3uE3UgKHdLv4wWJBK-done",
"projectId": "hqTR3uE3UgKHdLv4wWJBK",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:32.341Z"
}
]
}
}tasks.updateProject
Change a project’s name, description, color, icon or statuses.
tasks.updateProject(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.name | string | no | min length 1; max length 100 |
input.description | string | null | no | |
input.color | string | no | pattern ^#[0-9a-fA-F]{6}$ |
input.icon | string | null | no | |
input.statuses | object[] | no | min items 2 |
input.statuses[].id | string | no | |
input.statuses[].name | string | yes | min length 1; max length 50 |
input.statuses[].color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
input.statuses[].type | "todo" | "in_progress" | "done" | yes | "todo", "in_progress", "done" |
input.statuses[].order | integer | yes | min 0; max 9007199254740991 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.updateProject",
"args": [
{
"id": "<project3Id>",
"name": "Website relaunch v2"
}
]
}
}Reply:
{
"success": true,
"project": {
"id": "<project3Id>",
"name": "Website relaunch v2",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 0,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.614Z",
"modifiedAt": "2026-10-07T11:17:32.357Z",
"archivedAt": null,
"homeNoteId": null,
"clock": {
"_offline": 2
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 2
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<project3Id>-todo",
"projectId": "<project3Id>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-in-progress",
"projectId": "<project3Id>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-done",
"projectId": "<project3Id>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.615Z"
}
]
}
}tasks.deleteProject
Delete a project and its tasks.
tasks.deleteProject(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.deleteProject",
"args": ["<deleteProjectId>"]
}
}Reply:
{
"success": true
}tasks.archiveProject
Archive a project.
tasks.archiveProject(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.archiveProject",
"args": ["<project3Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<project3Id>",
"name": "Website relaunch v2",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 0,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.614Z",
"modifiedAt": "2026-10-07T11:17:32.370Z",
"archivedAt": "2026-10-07T11:17:32.370Z",
"homeNoteId": null,
"clock": {
"_offline": 4
},
"fieldClocks": {
"name": {
"_offline": 2
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 2
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 2
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<project3Id>-todo",
"projectId": "<project3Id>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-in-progress",
"projectId": "<project3Id>",
"name": "In Progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.614Z"
},
{
"id": "<project3Id>-done",
"projectId": "<project3Id>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.615Z"
}
]
}
}tasks.reorderProjects
Set the order of projects.
tasks.reorderProjects(projectIds, positions) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
projectIds | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.reorderProjects",
"args": [
["<projectId>", "<project3Id>"],
[0, 1]
]
}
}Reply:
{
"success": true
}tasks.linkProjectItem
Link a note, file or calendar event to a project.
tasks.linkProjectItem(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.itemType | "note" | "calendar_event" | "file" | yes | "note", "calendar_event", "file" |
input.itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.linkProjectItem",
"args": [
{
"projectId": "<projectId>",
"itemType": "note",
"itemId": "<note2Id>"
}
]
}
}Reply:
{
"success": true,
"stored": [
{
"id": "3454623d-903e-4fd6-987e-6f4fa789fc9d",
"projectId": "<projectId>",
"itemType": "note",
"itemId": "<note2Id>",
"position": 0,
"pinned": 0,
"createdAt": "2026-10-07T11:17:32.412Z"
}
]
}tasks.unlinkProjectItem
Unlink a note, file or calendar event from a project.
tasks.unlinkProjectItem(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.itemType | "note" | "calendar_event" | "file" | yes | "note", "calendar_event", "file" |
input.itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.unlinkProjectItem",
"args": [
{
"projectId": "<projectId>",
"itemType": "note",
"itemId": "<note2Id>"
}
]
}
}Reply:
{
"success": true,
"stored": []
}tasks.setProjectLinkPinned
Pin or unpin a linked item in a project’s hub.
tasks.setProjectLinkPinned(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.itemId | string | yes | |
input.pinned | boolean | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.setProjectLinkPinned",
"args": [
{
"projectId": "<projectId>",
"itemId": "<note2Id>",
"pinned": true
}
]
}
}Reply:
{
"success": true,
"stored": [
{
"id": "3454623d-903e-4fd6-987e-6f4fa789fc9d",
"projectId": "<projectId>",
"itemType": "note",
"itemId": "<note2Id>",
"position": 0,
"pinned": 1,
"createdAt": "2026-10-07T11:17:32.412Z"
}
]
}tasks.setProjectHomeNote
Set or clear (null) a project’s home note.
tasks.setProjectHomeNote(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.noteId | string | null | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.setProjectHomeNote",
"args": [
{
"projectId": "<projectId>",
"noteId": "<noteId>"
}
]
}
}Reply:
{
"success": true,
"project": {
"id": "<projectId>",
"name": "Website relaunch",
"description": null,
"color": "#6366f1",
"icon": null,
"position": 0,
"isInbox": false,
"createdAt": "2026-10-07T11:17:25.610Z",
"modifiedAt": "2026-10-07T11:17:32.486Z",
"archivedAt": null,
"homeNoteId": "<noteId>",
"clock": {
"_offline": 14
},
"fieldClocks": {
"name": {
"_offline": 1
},
"description": {
"_offline": 1
},
"color": {
"_offline": 1
},
"icon": {
"_offline": 1
},
"position": {
"_offline": 3
},
"isInbox": {
"_offline": 1
},
"archivedAt": {
"_offline": 1
},
"modifiedAt": {
"_offline": 1
},
"homeNoteId": {
"_offline": 1
}
},
"syncedAt": null,
"statuses": [
{
"id": "<statusTodoId>",
"projectId": "<projectId>",
"name": "To Do",
"color": "#6b7280",
"position": 0,
"isDefault": true,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "Doing",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
},
{
"id": "<projectId>-done",
"projectId": "<projectId>",
"name": "Done",
"color": "#22c55e",
"position": 2,
"isDefault": false,
"isDone": true,
"createdAt": "2026-10-07T11:17:25.610Z"
}
]
}
}tasks.captureUrlToProject
Save a web page as a bookmark note linked to a project.
tasks.captureUrlToProject(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.url | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.captureUrlToProject",
"args": [
{
"projectId": "<projectId>",
"url": "https://example.com/"
}
]
}
}Reply:
{
"success": true,
"noteId": "64fcl4zr2nul"
}tasks.importFilesToProject
Import files from this device into the vault, linked to a project.
tasks.importFilesToProject(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.sourcePaths | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.importFilesToProject",
"args": [
{
"projectId": "<projectId>",
"sourcePaths": ["/Users/me/Downloads/brief.md"]
}
]
}
}Reply:
{
"success": true,
"linked": ["ozkylhbuuo5b"],
"failed": []
}tasks.createStatus
Add a status to a project.
tasks.createStatus(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.projectId | string | yes | |
input.name | string | yes | min length 1; max length 50 |
input.color | string | no | pattern ^#[0-9a-fA-F]{6}$; default "#6b7280" |
input.isDone | boolean | no | default false |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.createStatus",
"args": [
{
"projectId": "<projectId>",
"name": "Review",
"color": "#a855f7"
}
]
}
}Reply:
{
"success": true,
"status": {
"id": "EKOWCDnf29SVH-RZ08H1K",
"projectId": "<projectId>",
"name": "Review",
"color": "#a855f7",
"position": 6,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:32.849Z"
}
}tasks.updateStatus
Change a status’s name, color, position or done state.
tasks.updateStatus(id, updates) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | |
updates | object | yes | |
updates.name | string | no | min length 1; max length 50 |
updates.color | string | no | pattern ^#[0-9a-fA-F]{6}$ |
updates.position | integer | no | min -9007199254740991; max 9007199254740991 |
updates.isDefault | boolean | no | |
updates.isDone | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.updateStatus",
"args": [
"<statusDoingId>",
{
"name": "In progress"
}
]
}
}Reply:
{
"success": true,
"status": {
"id": "<statusDoingId>",
"projectId": "<projectId>",
"name": "In progress",
"color": "#F59E0B",
"position": 1,
"isDefault": false,
"isDone": false,
"createdAt": "2026-10-07T11:17:25.610Z"
}
}tasks.deleteStatus
Delete a status.
tasks.deleteStatus(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.deleteStatus",
"args": ["<statusSpareId>"]
}
}Reply:
{
"success": true
}tasks.reorderStatuses
Set the order of a project’s statuses.
tasks.reorderStatuses(statusIds, positions) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
statusIds | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.reorderStatuses",
"args": [
["<statusDoingId>", "<statusTodoId>"],
[0, 1]
]
}
}Reply:
{
"success": true
}tasks.bulkComplete
Mark several tasks done.
tasks.bulkComplete(ids) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.bulkComplete",
"args": [["<task5Id>", "<task6Id>"]]
}
}Reply:
{
"success": true,
"count": 2
}tasks.bulkDelete
Delete several tasks.
tasks.bulkDelete(ids) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.bulkDelete",
"args": [["<task6Id>"]]
}
}Reply:
{
"success": true,
"count": 1
}tasks.bulkMove
Move several tasks to a project.
tasks.bulkMove(ids, projectId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes | |
projectId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.bulkMove",
"args": [["<task5Id>", "<task6Id>"], "<project3Id>"]
}
}Reply:
{
"success": true,
"count": 2
}tasks.bulkArchive
Archive several tasks.
tasks.bulkArchive(ids) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tasks.bulkArchive",
"args": [["<task5Id>"]]
}
}Reply:
{
"success": true,
"count": 1
}Inbox
inbox.captureText
Capture a text note into the inbox.
inbox.captureText(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.content | string | yes | min length 1; max length 50000 |
input.title | string | no | min length 1; max length 200 |
input.tags | string[] | no | max items 20 |
input.force | boolean | no | |
input.source | "quick-capture" | "inline" | "browser-extension" | "api" | "reminder" | no | "quick-capture", "inline", "browser-extension", "api", "reminder" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.captureText",
"args": [
{
"content": "Ask Sam for the hero photo",
"title": "Hero photo",
"tags": ["website"]
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "ynx3ZVUaAzXpIcwvhbQGH",
"type": "note",
"title": "Hero photo",
"content": "Ask Sam for the hero photo",
"createdAt": "2026-10-07T11:17:33.411Z",
"modifiedAt": "2026-10-07T11:17:33.411Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": ["website"],
"isStale": false
}
}inbox.captureLink
Capture a link into the inbox; its title and preview are fetched.
inbox.captureLink(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.url | string | yes | max length 2000 |
input.tags | string[] | no | max items 20 |
input.force | boolean | no | |
input.source | "quick-capture" | "inline" | "browser-extension" | "api" | "reminder" | no | "quick-capture", "inline", "browser-extension", "api", "reminder" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.captureLink",
"args": [
{
"url": "https://example.com/",
"tags": ["reading"]
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "zpg61qUCdyQN-1KAZpz-X",
"type": "link",
"title": "example.com",
"content": null,
"createdAt": "2026-10-07T11:17:33.500Z",
"modifiedAt": "2026-10-07T11:17:33.500Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "pending",
"processingError": null,
"metadata": {
"url": "https://example.com/",
"fetchStatus": "pending"
},
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": "https://example.com/",
"sourceTitle": null,
"captureSource": null,
"tags": ["reading"],
"isStale": false
}
}inbox.captureImage
Capture an image, audio, video or PDF file into the inbox. Over JSON, data is the bytes as an object of byte values: { "0": 137, "1": 80, ... }.
inbox.captureImage(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.data | any | yes | |
input.filename | string | yes | min length 1; max length 255 |
input.mimeType | "image/png" | "image/jpeg" | "image/gif" | "image/webp" | "image/svg+xml" | "audio/mpeg" | "audio/mp3" | "audio/wav" | "audio/ogg" | "audio/mp4" | "audio/x-m4a" | "audio/flac" | "audio/aac" | "audio/webm" | "video/mp4" | "video/webm" | "video/quicktime" | "video/x-msvideo" | "video/x-matroska" | "application/pdf" | yes | "image/png", "image/jpeg", "image/gif", "image/webp", "image/svg+xml", "audio/mpeg", "audio/mp3", "audio/wav", "audio/ogg", "audio/mp4", "audio/x-m4a", "audio/flac", "audio/aac", "audio/webm", "video/mp4", "video/webm", "video/quicktime", "video/x-msvideo", "video/x-matroska", "application/pdf" |
input.tags | string[] | no | max items 20 |
input.source | "quick-capture" | "inline" | "browser-extension" | "api" | "reminder" | no | "quick-capture", "inline", "browser-extension", "api", "reminder" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.captureImage",
"args": [
{
"data": {
"0": 137,
"1": 80,
"2": 78,
"3": 71,
"4": 13,
"5": 10,
"6": 26,
"7": 10,
"8": 0,
"9": 0,
"10": 0,
"11": 13,
"12": 73,
"13": 72,
"14": 68,
"15": 82,
"16": 0,
"17": 0,
"18": 0,
"19": 1,
"20": 0,
"21": 0,
"22": 0,
"23": 1,
"24": 8,
"25": 2,
"26": 0,
"27": 0,
"28": 0,
"29": 144,
"30": 119,
"31": 83,
"32": 222,
"33": 0,
"34": 0,
"35": 0,
"36": 12,
"37": 73,
"38": 68,
"39": 65,
"40": 84,
"41": 120,
"42": 156,
"43": 99,
"44": 208,
"45": 136,
"46": 58,
"47": 1,
"48": 0,
"49": 1,
"50": 248,
"51": 1,
"52": 75,
"53": 41,
"54": 207,
"55": 215,
"56": 94,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 73,
"62": 69,
"63": 78,
"64": 68,
"65": 174,
"66": 66,
"67": 96,
"68": 130
},
"filename": "whiteboard.png",
"mimeType": "image/png"
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "0RxpqQyHzkFImi0FIPoQW",
"type": "image",
"title": "whiteboard",
"content": null,
"createdAt": "2026-10-07T11:17:33.514Z",
"modifiedAt": "2026-10-07T11:17:33.514Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": {
"originalFilename": "whiteboard.png",
"format": "png",
"width": 1,
"height": 1,
"fileSize": 69,
"hasExif": false
},
"attachmentPath": "attachments/inbox/0RxpqQyHzkFImi0FIPoQW/ou2eba-whiteboard.png",
"attachmentUrl": "memry-file://local<vault>/attachments/inbox/0RxpqQyHzkFImi0FIPoQW/ou2eba-whiteboard.png",
"thumbnailPath": "attachments/inbox/0RxpqQyHzkFImi0FIPoQW/thumbnail.jpg",
"thumbnailUrl": "memry-file://local<vault>/attachments/inbox/0RxpqQyHzkFImi0FIPoQW/thumbnail.jpg",
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.captureVoice
Capture a voice memo into the inbox. Over JSON, data is the bytes as an object of byte values: { "0": 26, "1": 69, ... }.
inbox.captureVoice(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.data | any | yes | |
input.duration | number | yes | min 0; max 300 |
input.format | "webm" | "mp3" | "wav" | yes | "webm", "mp3", "wav" |
input.transcribe | boolean | no | default true |
input.tags | string[] | no | max items 20 |
input.source | "quick-capture" | "inline" | "browser-extension" | "api" | "reminder" | no | "quick-capture", "inline", "browser-extension", "api", "reminder" |
input.waveform | number[] | no | max items 120 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.captureVoice",
"args": [
{
"data": {
"0": 26,
"1": 69,
"2": 223,
"3": 163,
"4": 159,
"5": 66,
"6": 134,
"7": 129,
"8": 1,
"9": 66,
"10": 247,
"11": 129,
"12": 1,
"13": 66,
"14": 242,
"15": 129,
"16": 4,
"17": 66,
"18": 243,
"19": 129,
"20": 8,
"21": 66,
"22": 130,
"23": 132,
"24": 119,
"25": 101,
"26": 98,
"27": 109,
"28": 66,
"29": 135,
"30": 129,
"31": 4,
"32": 66,
"33": 133,
"34": 129,
"35": 2
},
"duration": 1,
"format": "webm",
"transcribe": false
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "GOO0Zut0GwDtMBHfDf_-C",
"type": "voice",
"title": "Voice memo (0:01)",
"content": null,
"createdAt": "2026-10-07T11:17:33.623Z",
"modifiedAt": "2026-10-07T11:17:33.623Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": {
"duration": 1,
"format": "webm",
"fileSize": 36
},
"attachmentPath": "attachments/inbox/GOO0Zut0GwDtMBHfDf_-C/m8cp5r-voice-memo.webm",
"attachmentUrl": "memry-file://local<vault>/attachments/inbox/GOO0Zut0GwDtMBHfDf_-C/m8cp5r-voice-memo.webm",
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.captureClip
Web clips are not built yet: this replies { success: false, error: "Not implemented yet" }.
inbox.captureClip(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.html | string | yes | max length 100000 |
input.text | string | yes | max length 50000 |
input.sourceUrl | string | yes | max length 2000 |
input.sourceTitle | string | yes | max length 200 |
input.tags | string[] | no | max items 20 |
input.source | "quick-capture" | "inline" | "browser-extension" | "api" | "reminder" | no | "quick-capture", "inline", "browser-extension", "api", "reminder" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.captureClip",
"args": [
{
"html": "<p>Launch on a Tuesday.</p>",
"text": "Launch on a Tuesday.",
"sourceUrl": "https://example.com/launch-tips",
"sourceTitle": "Launch tips"
}
]
}
}Reply:
{
"success": false,
"item": null,
"error": "Not implemented yet"
}inbox.capturePdf
Capture a PDF into the inbox. data must be a Buffer, which JSON cannot carry, so this fails for agents; use inbox.captureImage with mimeType application/pdf.
inbox.capturePdf(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.data | any | yes | |
input.filename | string | yes | min length 1; max length 255 |
input.extractText | boolean | no | default true |
input.tags | string[] | no | max items 20 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.capturePdf",
"args": [
{
"data": "JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCAzMDAgMTQ0XSAvQ29udGVudHMgNCAwIFIgL1Jlc291cmNlcyA8PCAvRm9udCA8PCAvRjEgNSAwIFIgPj4gPj4gPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA0NiA+PgpzdHJlYW0KQlQgL0YxIDE4IFRmIDI0IDcyIFRkIChRdWFydGVybHkgcmVwb3J0KSBUaiBFVAplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+CmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1OCAwMDAwMCBuIAowMDAwMDAwMTE1IDAwMDAwIG4gCjAwMDAwMDAyNDEgMDAwMDAgbiAKMDAwMDAwMDMzNyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDYgL1Jvb3QgMSAwIFIgPj4Kc3RhcnR4cmVmCjQwNwolJUVPRgo=",
"filename": "report.pdf",
"extractText": false
}
]
}
}Reply (an error):
{
"code": "VALIDATION",
"message": "inbox.capturePdf arguments do not match its schema: input.data: expected any, got \"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAw...\". Nothing was run. vault_desktop_describe with operation \"inbox.capturePdf\" returns the full argument schema.",
"details": {
"operation": "inbox.capturePdf",
"params": ["input"],
"issues": [
{
"field": "input.data",
"expected": "any",
"received": "\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAw...\""
}
]
}
}inbox.update
Change an inbox item’s title or content.
inbox.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.title | string | no | min length 1; max length 200 |
input.content | string | no | max length 50000 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.update",
"args": [
{
"id": "<inboxId>",
"content": "Call the printer about 500 flyers."
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about 500 flyers.",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:33.648Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.archive
Archive an inbox item.
inbox.archive(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.archive",
"args": ["<inbox10Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inbox10Id>",
"type": "note",
"title": "Idea 10",
"content": "Idea 10: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.838Z",
"modifiedAt": "2026-10-07T11:17:25.838Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": "2026-10-07T11:17:33.888Z",
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.file
File an inbox item into a folder or note.
inbox.file(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemId | string | yes | |
input.destination | object | yes | |
input.destination.type | "folder" | "note" | "new-note" | yes | "folder", "note", "new-note" |
input.destination.path | string | no | |
input.destination.noteId | string | no | |
input.destination.noteIds | string[] | no | |
input.destination.noteTitle | string | no | max length 200 |
input.destination.targets | ({ kind: "note", noteId: string } | { kind: "new", title: string })[] | no | max items 20 |
input.tags | string[] | no | max items 20 |
input.imageMode | "embed" | "link" | no | "embed", "link" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.file",
"args": [
{
"itemId": "<inbox5Id>",
"destination": {
"type": "folder",
"path": "Projects"
}
}
]
}
}Reply:
{
"success": true,
"filedTo": "Projects/Idea 5.md",
"noteId": "7ygufoejkbr9"
}inbox.trackSuggestion
Record whether a filing suggestion was taken, to improve later ones.
inbox.trackSuggestion(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemId | string | yes | |
input.itemType | string | yes | |
input.suggestedTo | string | yes | |
input.actualTo | string | yes | |
input.confidence | number | yes | |
input.suggestedTags | string[] | no | |
input.actualTags | string[] | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.trackSuggestion",
"args": [
{
"itemId": "<inboxId>",
"itemType": "note",
"suggestedTo": "Projects",
"actualTo": "Projects",
"confidence": 0.8
}
]
}
}Reply:
{
"success": true
}inbox.convertToNote
Turn an inbox item into a note.
inbox.convertToNote(itemId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.convertToNote",
"args": ["<inbox6Id>"]
}
}Reply:
{
"success": true,
"filedTo": "Idea 6.md",
"noteId": "w2rkmmubeo94"
}inbox.convertToTask
Turn an inbox item into a task.
inbox.convertToTask(itemId, input?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
input | object | null | no | |
input.projectId | string | no | |
input.dueDate | string | null | no | |
input.dueTime | string | null | no | |
input.priority | number | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.convertToTask",
"args": [
"<inbox7Id>",
{
"projectId": "<projectId>",
"dueDate": "2026-10-14",
"priority": 2
}
]
}
}Reply:
{
"success": true,
"taskId": "KtJWVfXIR5cqfA7ppZstZ"
}inbox.convertToEvent
Turn an inbox item into a calendar event.
inbox.convertToEvent(itemId, input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
input | object | yes | |
input.startAt | string | yes | |
input.endAt | string | null | no | |
input.isAllDay | boolean | no | |
input.location | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.convertToEvent",
"args": [
"<inbox8Id>",
{
"startAt": "2026-10-14T13:00:00.000Z",
"endAt": "2026-10-14T14:00:00.000Z",
"location": "Studio"
}
]
}
}Reply:
{
"success": true,
"eventId": "r74UCZ3Cp2Ep7LYrnp3UT"
}inbox.convertToReminder
Turn an inbox item into a reminder.
inbox.convertToReminder(itemId, input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
input | object | yes | |
input.remindAt | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.convertToReminder",
"args": [
"<inbox9Id>",
{
"remindAt": "2026-10-13T08:00:00.000Z"
}
]
}
}Reply:
{
"success": true,
"noteId": "wmc14eac88vz"
}inbox.linkToNote
Append an inbox item to a note and file it there.
inbox.linkToNote(itemId, noteId, tags?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
noteId | string | yes | |
tags | string[] | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.linkToNote",
"args": ["<inbox4Id>", "<noteId>", ["website"]]
}
}Reply:
{
"success": true,
"linkedCount": 1,
"noteIds": ["<noteId>"],
"stored": {
"id": "<inbox4Id>",
"type": "note",
"title": "Idea 4",
"content": "Idea 4: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.789Z",
"modifiedAt": "2026-10-07T11:17:33.731Z",
"filedAt": "2026-10-07T11:17:33.731Z",
"filedTo": "Projects/Website relaunch plan.md",
"filedAction": "linked",
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.addTag
Add a tag to an inbox item.
inbox.addTag(itemId, tag) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
tag | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.addTag",
"args": ["<inboxId>", "errands"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about 500 flyers.",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:33.657Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": "2026-10-07T11:17:33.657Z",
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": ["errands"],
"isStale": false
}
}inbox.removeTag
Remove a tag from an inbox item.
inbox.removeTag(itemId, tag) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes | |
tag | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.removeTag",
"args": ["<inboxId>", "errands"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about 500 flyers.",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:33.657Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": "2026-10-07T11:17:33.657Z",
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.snooze
Hide an inbox item until a time.
inbox.snooze(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemId | string | yes | |
input.snoozeUntil | string | yes | |
input.reason | string | no | max length 200 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.snooze",
"args": [
{
"itemId": "<inbox4Id>",
"snoozeUntil": "2026-10-12T09:00:00.000Z"
}
]
}
}Reply:
{
"success": true,
"item": {
"id": "<inbox4Id>",
"type": "note",
"title": "Idea 4",
"content": "Idea 4: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.789Z",
"modifiedAt": "2026-10-07T11:17:33.676Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": "2026-10-12T09:00:00.000Z",
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
},
"stored": {
"id": "<inbox4Id>",
"type": "note",
"title": "Idea 4",
"content": "Idea 4: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.789Z",
"modifiedAt": "2026-10-07T11:17:33.676Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": "2026-10-12T09:00:00.000Z",
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.unsnooze
Bring a snoozed inbox item back now.
inbox.unsnooze(itemId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.unsnooze",
"args": ["<inbox4Id>"]
}
}Reply:
{
"success": true,
"item": {
"id": "<inbox4Id>",
"type": "note",
"title": "Idea 4",
"content": "Idea 4: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.789Z",
"modifiedAt": "2026-10-07T11:17:33.686Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
},
"stored": {
"id": "<inbox4Id>",
"type": "note",
"title": "Idea 4",
"content": "Idea 4: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.789Z",
"modifiedAt": "2026-10-07T11:17:33.686Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.markViewed
Mark an inbox item as viewed.
inbox.markViewed(itemId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.markViewed",
"args": ["<inboxId>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inboxId>",
"type": "note",
"title": "Call the printer about flyers",
"content": "Call the printer about 500 flyers.",
"createdAt": "2026-10-07T11:17:25.759Z",
"modifiedAt": "2026-10-07T11:17:33.657Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": "2026-10-07T11:17:33.657Z",
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.bulkFile
File several inbox items into one place.
inbox.bulkFile(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemIds | string[] | yes | min items 1; max items 100 |
input.destination | object | yes | |
input.destination.type | "folder" | "note" | "new-note" | yes | "folder", "note", "new-note" |
input.destination.path | string | no | |
input.destination.noteId | string | no | |
input.tags | string[] | no | max items 20 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.bulkFile",
"args": [
{
"itemIds": ["<inbox12Id>"],
"destination": {
"type": "folder",
"path": "Projects"
}
}
]
}
}Reply:
{
"success": true,
"processedCount": 1,
"errors": []
}inbox.bulkArchive
Archive several inbox items.
inbox.bulkArchive(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemIds | string[] | yes | min items 1; max items 100 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.bulkArchive",
"args": [
{
"itemIds": ["<inbox13Id>"]
}
]
}
}Reply:
{
"success": true,
"processedCount": 1,
"errors": []
}inbox.bulkTag
Add tags to several inbox items.
inbox.bulkTag(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemIds | string[] | yes | min items 1; max items 100 |
input.tags | string[] | yes | min items 1; max items 20 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.bulkTag",
"args": [
{
"itemIds": ["<inboxId>", "<inbox2Id>"],
"tags": ["launch"]
}
]
}
}Reply:
{
"success": true,
"processedCount": 2,
"errors": []
}inbox.bulkSnooze
Snooze several inbox items until a time.
inbox.bulkSnooze(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemIds | string[] | yes | |
input.snoozeUntil | string | yes | |
input.reason | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.bulkSnooze",
"args": [
{
"itemIds": ["<inbox11Id>"],
"snoozeUntil": "2026-10-12T09:00:00.000Z"
}
]
}
}Reply:
{
"success": true,
"processedCount": 1,
"errors": []
}inbox.fileAllStale
File every stale inbox item into the Unsorted folder.
inbox.fileAllStale() through vault_desktop_write; needs approval.
Takes no arguments.
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.fileAllStale",
"args": []
}
}Reply:
{
"success": true,
"processedCount": 0,
"errors": []
}inbox.retryTranscription
Run transcription of a voice memo again.
inbox.retryTranscription(itemId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.retryTranscription",
"args": ["<voiceInboxId>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<voiceInboxId>",
"type": "voice",
"title": "Voice memo (0:01)",
"content": null,
"createdAt": "2026-10-07T11:17:25.946Z",
"modifiedAt": "2026-10-07T11:17:34.329Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": {
"duration": 1,
"format": "webm",
"fileSize": 4
},
"attachmentPath": "attachments/inbox/<voiceInboxId>/lh7b52-voice-memo.webm",
"attachmentUrl": "memry-file://local<vault>/attachments/inbox/<voiceInboxId>/lh7b52-voice-memo.webm",
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": "processing",
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.retryMetadata
Fetch a link’s title and preview again.
inbox.retryMetadata(itemId) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
itemId | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.retryMetadata",
"args": ["<linkInboxId>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<linkInboxId>",
"type": "link",
"title": "Pricing",
"content": null,
"createdAt": "2026-10-07T11:17:25.922Z",
"modifiedAt": "2026-10-07T11:17:34.404Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "processing",
"processingError": null,
"metadata": {
"url": "https://example.com/pricing",
"fetchStatus": "failed",
"error": "HTTP 404"
},
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": "https://example.com/pricing",
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.setStaleThreshold
Set after how many days an unfiled inbox item counts as stale.
inbox.setStaleThreshold(days) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
days | number | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.setStaleThreshold",
"args": [14]
}
}Reply:
{
"success": true,
"stored": 14
}inbox.unarchive
Bring an archived inbox item back.
inbox.unarchive(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.unarchive",
"args": ["<inbox13Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inbox13Id>",
"type": "note",
"title": "Idea 13",
"content": "Idea 13: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.874Z",
"modifiedAt": "2026-10-07T11:17:34.215Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.deletePermanent
Delete an archived inbox item for good.
inbox.deletePermanent(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.deletePermanent",
"args": ["<inbox14Id>"]
}
}Reply:
{
"success": true
}inbox.undoFile
Undo filing an inbox item.
inbox.undoFile(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.undoFile",
"args": ["<inbox5Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inbox5Id>",
"type": "note",
"title": "Idea 5",
"content": "Idea 5: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.800Z",
"modifiedAt": "2026-10-07T11:17:33.771Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}inbox.undoArchive
Undo archiving an inbox item.
inbox.undoArchive(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "inbox.undoArchive",
"args": ["<inbox10Id>"]
}
}Reply:
{
"success": true,
"stored": {
"id": "<inbox10Id>",
"type": "note",
"title": "Idea 10",
"content": "Idea 10: follow up on the launch",
"createdAt": "2026-10-07T11:17:25.838Z",
"modifiedAt": "2026-10-07T11:17:33.900Z",
"filedAt": null,
"filedTo": null,
"filedAction": null,
"snoozedUntil": null,
"snoozeReason": null,
"viewedAt": null,
"archivedAt": null,
"processingStatus": "complete",
"processingError": null,
"metadata": null,
"attachmentPath": null,
"attachmentUrl": null,
"thumbnailPath": null,
"thumbnailUrl": null,
"transcription": null,
"transcriptionStatus": null,
"sourceUrl": null,
"sourceTitle": null,
"captureSource": null,
"tags": [],
"isStale": false
}
}Journal
journal.createEntry
Create the journal entry for a date.
journal.createEntry(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
input.content | string | no | default "" |
input.tags | string[] | no | default [] |
input.properties | Record<string, any> | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "journal.createEntry",
"args": [
{
"date": "2026-10-08",
"content": "Launch day prep.\n",
"tags": ["launch"]
}
]
}
}Reply:
{
"id": "j2026-10-08",
"date": "2026-10-08",
"content": "Launch day prep.",
"wordCount": 3,
"characterCount": 16,
"tags": ["launch"],
"createdAt": "2026-10-07T11:17:34.438Z",
"modifiedAt": "2026-10-07T11:17:34.438Z"
}journal.updateEntry
Change the content, tags or properties of a journal entry.
journal.updateEntry(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
input.content | string | no | |
input.tags | string[] | no | |
input.properties | Record<string, any> | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "journal.updateEntry",
"args": [
{
"date": "2026-10-08",
"content": "Launch day prep went well.\n"
}
]
}
}Reply:
{
"id": "j2026-10-08",
"date": "2026-10-08",
"content": "Launch day prep went well.",
"wordCount": 5,
"characterCount": 26,
"tags": ["launch"],
"createdAt": "2026-10-07T11:17:34.567Z",
"modifiedAt": "2026-10-07T11:17:34.568Z"
}journal.deleteEntry
Delete the journal entry for a date.
journal.deleteEntry(date) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
date | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "journal.deleteEntry",
"args": ["2026-10-08"]
}
}Reply:
{
"success": true
}Properties
properties.set
Replace the whole property record of a note or journal entry; a property left out is deleted.
properties.set(entityId, properties) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
entityId | string | yes | min length 1 |
properties | Record<string, any> | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "properties.set",
"args": [
"<noteId>",
{
"stage": "draft",
"owner": "Sam"
}
]
}
}Reply:
{
"success": true,
"properties": {
"stage": "draft",
"owner": "Sam"
},
"removed": []
}properties.rename
Rename a property on one note or journal entry.
properties.rename(entityId, oldName, newName) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
entityId | string | yes | min length 1 |
oldName | string | yes | min length 1 |
newName | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "properties.rename",
"args": ["<noteId>", "owner", "lead"]
}
}Reply:
{
"success": true,
"stored": [
{
"name": "stage",
"value": "draft",
"type": "select"
},
{
"name": "lead",
"value": "Sam",
"type": "text"
}
]
}Templates
templates.create
Create a note template.
templates.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1; max length 200 |
input.description | string | no | |
input.icon | string | null | no | |
input.tags | string[] | no | default [] |
input.properties | object[] | no | default [] |
input.properties[].name | string | yes | min length 1 |
input.properties[].type | "text" | "number" | "checkbox" | "date" | "select" | "multiselect" | "url" | "rating" | "project" | yes | "text", "number", "checkbox", "date", "select", "multiselect", "url", "rating", "project" |
input.properties[].value | any | yes | |
input.properties[].options | string[] | no | |
input.content | string | no | default "" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "templates.create",
"args": [
{
"name": "Retro",
"content": "## Went well\n\n## To change\n",
"tags": ["meeting"]
}
]
}
}Reply:
{
"success": true,
"template": {
"id": "lpcf7y31w0jk",
"name": "Retro",
"icon": null,
"isBuiltIn": false,
"tags": ["meeting"],
"properties": [],
"content": "## Went well\n\n## To change\n",
"createdAt": "2026-10-07T11:17:34.821Z",
"modifiedAt": "2026-10-07T11:17:34.821Z"
}
}templates.update
Change a template.
templates.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | min length 1 |
input.name | string | no | min length 1; max length 200 |
input.description | string | no | |
input.icon | string | null | no | |
input.tags | string[] | no | |
input.properties | object[] | no | |
input.properties[].name | string | yes | min length 1 |
input.properties[].type | "text" | "number" | "checkbox" | "date" | "select" | "multiselect" | "url" | "rating" | "project" | yes | "text", "number", "checkbox", "date", "select", "multiselect", "url", "rating", "project" |
input.properties[].value | any | yes | |
input.properties[].options | string[] | no | |
input.content | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "templates.update",
"args": [
{
"id": "<templateId>",
"description": "Agenda, notes, action items."
}
]
}
}Reply:
{
"success": true,
"template": {
"id": "<templateId>",
"name": "Meeting",
"description": "Agenda, notes, action items.",
"icon": null,
"isBuiltIn": false,
"tags": [],
"properties": [],
"content": "## Agenda\n\n## Notes\n\n## Action items\n",
"createdAt": "2026-10-07T11:17:26.022Z",
"modifiedAt": "2026-10-07T11:17:34.836Z"
}
}templates.delete
Delete a template.
templates.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "templates.delete",
"args": ["<deleteTemplateId>"]
}
}Reply:
{
"success": true
}templates.duplicate
Copy a template under a new name.
templates.duplicate(id, newName) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes | min length 1 |
newName | string | yes | min length 1; max length 200 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "templates.duplicate",
"args": ["<templateId>", "Meeting (short)"]
}
}Reply:
{
"success": true,
"template": {
"id": "nb17e67c618j",
"name": "Meeting (short)",
"description": "Agenda, notes, action items.",
"icon": null,
"isBuiltIn": false,
"tags": [],
"properties": [],
"content": "## Agenda\n\n## Notes\n\n## Action items\n",
"createdAt": "2026-10-07T11:17:34.849Z",
"modifiedAt": "2026-10-07T11:17:34.849Z"
}
}Saved filters
savedFilters.create
Save a task filter.
savedFilters.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1; max length 100 |
input.config | object | yes | |
input.config.filters | object | yes | |
input.config.filters.search | string | no | default "" |
input.config.filters.projectIds | string[] | no | default [] |
input.config.filters.priorities | ("urgent" | "high" | "medium" | "low" | "none")[] | no | default [] |
input.config.filters.tags | string[] | no | default [] |
input.config.filters.dueDate | { type: "any" | "none" | "overdue" | "today" | "tomorrow" | "this-week" | "next-week" | "this-month" | "custom", customStart?: string | null, customEnd?: string | null } | no | default {"type":"any","customStart":null,"customEnd":null} |
input.config.filters.statusIds | string[] | no | default [] |
input.config.filters.completion | "active" | "completed" | "all" | "archived" | no | "active", "completed", "all", "archived"; default "active" |
input.config.filters.repeatType | "all" | "repeating" | "one-time" | no | "all", "repeating", "one-time"; default "all" |
input.config.filters.hasTime | "all" | "with-time" | "without-time" | no | "all", "with-time", "without-time"; default "all" |
input.config.filters.folderPaths | string[] | no | |
input.config.filters.noteIds | string[] | no | |
input.config.sort | object | no | |
input.config.sort.field | "dueDate" | "priority" | "status" | "createdAt" | "title" | "project" | "completedAt" | "folder" | "note" | yes | "dueDate", "priority", "status", "createdAt", "title", "project", "completedAt", "folder", "note" |
input.config.sort.direction | "asc" | "desc" | yes | "asc", "desc" |
input.config.starred | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "savedFilters.create",
"args": [
{
"name": "Urgent website tasks",
"config": {
"filters": {
"priorities": ["urgent", "high"],
"tags": ["website"]
}
}
}
]
}
}Reply:
{
"success": true,
"savedFilter": {
"id": "NY9b3hiCGefHG1tagepc9",
"name": "Urgent website tasks",
"config": {
"filters": {
"search": "",
"projectIds": [],
"priorities": ["urgent", "high"],
"tags": ["website"],
"dueDate": {
"type": "any",
"customStart": null,
"customEnd": null
},
"statusIds": [],
"completion": "active",
"repeatType": "all",
"hasTime": "all"
}
},
"position": 1,
"createdAt": "2026-10-07T11:17:34.869Z"
}
}savedFilters.update
Change a saved task filter.
savedFilters.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.name | string | no | min length 1; max length 100 |
input.config | object | no | |
input.config.filters | object | yes | |
input.config.filters.search | string | no | default "" |
input.config.filters.projectIds | string[] | no | default [] |
input.config.filters.priorities | ("urgent" | "high" | "medium" | "low" | "none")[] | no | default [] |
input.config.filters.tags | string[] | no | default [] |
input.config.filters.dueDate | { type: "any" | "none" | "overdue" | "today" | "tomorrow" | "this-week" | "next-week" | "this-month" | "custom", customStart?: string | null, customEnd?: string | null } | no | default {"type":"any","customStart":null,"customEnd":null} |
input.config.filters.statusIds | string[] | no | default [] |
input.config.filters.completion | "active" | "completed" | "all" | "archived" | no | "active", "completed", "all", "archived"; default "active" |
input.config.filters.repeatType | "all" | "repeating" | "one-time" | no | "all", "repeating", "one-time"; default "all" |
input.config.filters.hasTime | "all" | "with-time" | "without-time" | no | "all", "with-time", "without-time"; default "all" |
input.config.filters.folderPaths | string[] | no | |
input.config.filters.noteIds | string[] | no | |
input.config.sort | object | no | |
input.config.sort.field | "dueDate" | "priority" | "status" | "createdAt" | "title" | "project" | "completedAt" | "folder" | "note" | yes | "dueDate", "priority", "status", "createdAt", "title", "project", "completedAt", "folder", "note" |
input.config.sort.direction | "asc" | "desc" | yes | "asc", "desc" |
input.config.starred | boolean | no | |
input.position | integer | no | min 0; max 9007199254740991 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "savedFilters.update",
"args": [
{
"id": "<savedFilterId>",
"name": "Due this week"
}
]
}
}Reply:
{
"success": true,
"savedFilter": {
"id": "<savedFilterId>",
"name": "Due this week",
"config": {
"filters": {
"search": "",
"projectIds": [],
"priorities": [],
"tags": [],
"dueDate": {
"type": "any",
"customStart": null,
"customEnd": null
},
"statusIds": [],
"completion": "active",
"repeatType": "all",
"hasTime": "all"
}
},
"position": 0,
"createdAt": "2026-10-07T11:17:26.030Z"
}
}savedFilters.delete
Delete a saved task filter.
savedFilters.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "savedFilters.delete",
"args": ["<savedFilterId>"]
}
}Reply:
{
"success": true
}savedFilters.reorder
Set the order of saved task filters.
savedFilters.reorder(ids, positions) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes | |
positions | integer[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "savedFilters.reorder",
"args": [["<savedFilterId>"], [0]]
}
}Reply:
{
"success": true
}Bookmarks
bookmarks.create
Bookmark an item.
bookmarks.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemType | string | yes | |
input.itemId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.create",
"args": [
{
"itemType": "note",
"itemId": "<note2Id>"
}
]
}
}Reply:
{
"success": true,
"bookmark": {
"id": "bmk_note_<note2Id>",
"itemType": "note",
"itemId": "<note2Id>",
"position": 2,
"createdAt": "2026-10-07T11:17:34.887Z",
"clock": null,
"syncedAt": null
}
}bookmarks.delete
Delete a bookmark.
bookmarks.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.delete",
"args": ["<bookmarkId>"]
}
}Reply:
{
"success": true
}bookmarks.toggle
Bookmark an item, or remove its bookmark when it has one.
bookmarks.toggle(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.itemType | string | yes | |
input.itemId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.toggle",
"args": [
{
"itemType": "note",
"itemId": "<meetingNoteId>"
}
]
}
}Reply:
{
"success": true,
"isBookmarked": true,
"bookmark": {
"id": "bmk_note_<meetingNoteId>",
"itemType": "note",
"itemId": "<meetingNoteId>",
"position": 3,
"createdAt": "2026-10-07T11:17:34.901Z",
"clock": null,
"syncedAt": null
}
}bookmarks.reorder
Set the order of bookmarks.
bookmarks.reorder(bookmarkIds) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
bookmarkIds | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.reorder",
"args": [["<bookmarkId>"]]
}
}Reply:
{
"success": true
}bookmarks.bulkDelete
Delete several bookmarks.
bookmarks.bulkDelete(bookmarkIds) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
bookmarkIds | string[] | yes | min items 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.bulkDelete",
"args": [["<bookmark2Id>"]]
}
}Reply:
{
"success": true,
"deletedCount": 1
}bookmarks.bulkCreate
Bookmark several items.
bookmarks.bulkCreate(items) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
items | object[] | yes | |
items[].itemType | string | yes | |
items[].itemId | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "bookmarks.bulkCreate",
"args": [
[
{
"itemType": "task",
"itemId": "<taskId>"
}
]
]
}
}Reply:
{
"success": true,
"createdCount": 1
}Tags
tags.pinNoteToTag
Pin a note to the top of a tag’s note list.
tags.pinNoteToTag(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | min length 1 |
input.tag | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.pinNoteToTag",
"args": [
{
"noteId": "<noteId>",
"tag": "website"
}
]
}
}Reply:
{
"success": true,
"stored": {
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:34.737Z",
"tags": ["website", "planning"],
"wordCount": 30,
"isPinned": true,
"pinnedAt": "2026-10-07T11:17:34.929Z",
"emoji": null
}
}tags.unpinNoteFromTag
Unpin a note from a tag.
tags.unpinNoteFromTag(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | min length 1 |
input.tag | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.unpinNoteFromTag",
"args": [
{
"noteId": "<noteId>",
"tag": "website"
}
]
}
}Reply:
{
"success": true,
"stored": {
"id": "<noteId>",
"path": "Projects/Website relaunch plan.md",
"title": "Website relaunch plan",
"created": "2026-10-07T11:17:24.017Z",
"modified": "2026-10-07T11:17:34.737Z",
"tags": ["website", "planning"],
"wordCount": 30,
"isPinned": false,
"pinnedAt": null,
"emoji": null
}
}tags.renameTag
Rename a tag everywhere it is used.
tags.renameTag(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.oldName | string | yes | min length 1 |
input.newName | string | yes | min length 1; max length 50 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.renameTag",
"args": [
{
"oldName": "draft",
"newName": "drafts"
}
]
}
}Reply:
{
"success": true,
"affectedNotes": 1,
"stored": {
"name": "drafts",
"count": 1,
"color": "cyan",
"icon": null,
"categoryId": null,
"sortOrder": 0
}
}tags.updateTagColor
Change a tag’s color.
tags.updateTagColor(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.tag | string | yes | min length 1 |
input.color | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.updateTagColor",
"args": [
{
"tag": "website",
"color": "blue"
}
]
}
}Reply:
{
"success": true,
"stored": {
"name": "website",
"count": 7,
"color": "blue",
"icon": null,
"categoryId": null,
"sortOrder": 0
}
}tags.deleteTag
Remove a tag from every note that carries it.
tags.deleteTag(tag) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
tag | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.deleteTag",
"args": ["obsolete"]
}
}Reply:
{
"success": true,
"affectedNotes": 1
}tags.removeTagFromNote
Remove a tag from one note.
tags.removeTagFromNote(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.noteId | string | yes | min length 1 |
input.tag | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.removeTagFromNote",
"args": [
{
"noteId": "<note2Id>",
"tag": "website"
}
]
}
}Reply:
{
"success": true,
"stored": {
"id": "<note2Id>",
"tags": ["obsolete"]
}
}tags.mergeTag
Merge one tag into another; notes with the first get the second.
tags.mergeTag(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.source | string | yes | min length 1 |
input.target | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.mergeTag",
"args": [
{
"source": "drafts",
"target": "planning"
}
]
}
}Reply:
{
"success": true,
"affectedItems": 1,
"stored": {
"name": "planning",
"count": 4,
"color": "indigo",
"icon": null,
"categoryId": null,
"sortOrder": 0
}
}tags.updateTagIcon
Change a tag’s icon.
tags.updateTagIcon(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.tag | string | yes | min length 1 |
input.icon | string | null | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.updateTagIcon",
"args": [
{
"tag": "website",
"icon": "globe"
}
]
}
}Reply:
{
"success": true,
"stored": {
"name": "website",
"count": 7,
"color": "blue",
"icon": "globe",
"categoryId": null,
"sortOrder": 0
}
}tags.createCategory
Create a tag category.
tags.createCategory(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.createCategory",
"args": [
{
"name": "Areas"
}
]
}
}Reply:
{
"success": true,
"category": {
"id": "8a014eb0-37e9-4917-ac4e-088a3f9aef56",
"name": "Areas",
"sortOrder": 1,
"tagCount": 0
}
}tags.renameCategory
Rename a tag category.
tags.renameCategory(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | |
input.name | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.renameCategory",
"args": [
{
"id": "<categoryId>",
"name": "Work areas"
}
]
}
}Reply:
{
"success": true,
"stored": {
"id": "<categoryId>",
"name": "Work areas",
"sortOrder": 0,
"tagCount": 0
}
}tags.deleteCategory
Delete a tag category; its tags become uncategorized.
tags.deleteCategory(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.deleteCategory",
"args": [
{
"id": "<categoryId>"
}
]
}
}Reply:
{
"success": true
}tags.reorder
Move tags into categories and order tags and categories; the only way to categorize a tag.
tags.reorder(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.tags | object[] | no | |
input.tags[].tag | string | yes | |
input.tags[].categoryId | string | null | yes | |
input.tags[].sortOrder | number | yes | |
input.categories | object[] | no | |
input.categories[].id | string | yes | |
input.categories[].sortOrder | number | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "tags.reorder",
"args": [
{
"tags": [
{
"tag": "website",
"categoryId": "<categoryId>",
"sortOrder": 0
}
]
}
]
}
}Reply:
{
"success": true
}Folder views
folderView.setConfig
Save a folder view’s configuration.
folderView.setConfig(folderPath, config) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
folderPath | string | yes | |
config | object | yes | |
config.path | string | no | |
config.template | string | no | |
config.inherit | boolean | no | |
config.formulas | Record<string, string> | no | |
config.properties | Record<string, { displayName?: string, color?: boolean, dateFormat?: string, numberFormat?: string, hidden?: boolean }> | no | |
config.summaries | Record<string, { type: "sum" | "average" | "min" | "max" | "count" | "countBy" | "countUnique" | "custom", label?: string, expression?: string }> | no | |
config.views | object[] | no | |
config.views[].name | string | yes | min length 1 |
config.views[].type | "table" | "grid" | "list" | no | "table", "grid", "list"; default "table" |
config.views[].default | boolean | no | |
config.views[].columns | object[] | no | |
config.views[].columns[].id | string | yes | min length 1 |
config.views[].columns[].width | integer | no | min 50; max 800 |
config.views[].columns[].displayName | string | no | |
config.views[].columns[].showSummary | boolean | no | |
config.views[].filters | string | { and: (string | object)[] } | { or: (string | object)[] } | { not: string | { and: object[] } | { or: object[] } | { not: object } } | no | |
config.views[].order | object[] | no | |
config.views[].order[].property | string | yes | min length 1 |
config.views[].order[].direction | "asc" | "desc" | yes | "asc", "desc" |
config.views[].groupBy | object | no | |
config.views[].groupBy.property | string | yes | min length 1 |
config.views[].groupBy.direction | "asc" | "desc" | no | "asc", "desc" |
config.views[].groupBy.collapsed | boolean | no | |
config.views[].groupBy.showSummary | boolean | no | |
config.views[].limit | integer | no | min 1; max 10000 |
config.views[].showSummaries | boolean | no | |
config.views[].columnBorders | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "folderView.setConfig",
"args": [
"Projects",
{
"properties": {
"stage": {
"displayName": "Stage"
}
}
}
]
}
}Reply:
{
"success": true,
"stored": {
"config": {
"path": "Projects",
"views": [
{
"name": "Default",
"type": "table",
"default": true,
"columns": [
{
"id": "title",
"width": 250
},
{
"id": "folder",
"width": 120
},
{
"id": "tags",
"width": 150
}
],
"order": [
{
"property": "title",
"direction": "asc"
}
],
"showSummaries": true
}
]
},
"isDefault": true
}
}folderView.setView
Create or change a saved view of a folder or tag scope.
folderView.setView(scope, view, previousName?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
scope | { kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] } | yes | |
view | object | yes | |
view.name | string | yes | min length 1 |
view.type | "table" | "grid" | "list" | no | "table", "grid", "list"; default "table" |
view.default | boolean | no | |
view.columns | object[] | no | |
view.columns[].id | string | yes | min length 1 |
view.columns[].width | integer | no | min 50; max 800 |
view.columns[].displayName | string | no | |
view.columns[].showSummary | boolean | no | |
view.filters | string | { and: (string | object)[] } | { or: (string | object)[] } | { not: string | { and: object[] } | { or: object[] } | { not: object } } | no | |
view.order | object[] | no | |
view.order[].property | string | yes | min length 1 |
view.order[].direction | "asc" | "desc" | yes | "asc", "desc" |
view.groupBy | object | no | |
view.groupBy.property | string | yes | min length 1 |
view.groupBy.direction | "asc" | "desc" | no | "asc", "desc" |
view.groupBy.collapsed | boolean | no | |
view.groupBy.showSummary | boolean | no | |
view.limit | integer | no | min 1; max 10000 |
view.showSummaries | boolean | no | |
view.columnBorders | boolean | no | |
previousName | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "folderView.setView",
"args": [
{
"kind": "folder",
"path": "Projects"
},
{
"name": "By stage",
"type": "table",
"columns": [
{
"id": "title"
},
{
"id": "stage"
}
]
}
]
}
}Reply:
{
"success": true,
"stored": {
"name": "By stage",
"type": "table",
"columns": [
{
"id": "title"
},
{
"id": "stage"
}
]
}
}folderView.deleteView
Delete a saved view.
folderView.deleteView(scope, viewName) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
scope | { kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] } | yes | |
viewName | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "folderView.deleteView",
"args": [
{
"kind": "folder",
"path": "Projects"
},
"By stage"
]
}
}Reply:
{
"success": true
}Reminders
reminders.create
Set a reminder on a note, journal entry or highlight.
reminders.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | { targetType: "note", targetId: string, remindAt: string, title?: string, note?: string } | { targetType: "journal", targetId: string, remindAt: string, title?: string, note?: string } | { targetType: "highlight", targetId: string, highlightText: string, highlightStart: integer, highlightEnd: integer, remindAt: string, title?: string, note?: string } | { targetType: "task", targetId: string, remindAt: string, title?: string, note?: string } | { targetType: "note_date", targetId: string, anchorId: string, remindAt: string, title?: string, note?: string } | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.create",
"args": [
{
"targetType": "note",
"targetId": "<note2Id>",
"remindAt": "2026-10-10T08:00:00.000Z",
"title": "Check DNS"
}
]
}
}Reply:
{
"success": true,
"reminder": {
"id": "rem_gCkvCdq-Keus5oTm7UlKW",
"targetType": "note",
"targetId": "<note2Id>",
"remindAt": "2026-10-10T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Check DNS",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:35.000Z",
"modifiedAt": "2026-10-07T11:17:35.000Z"
}
}reminders.update
Change a reminder’s time, title or note.
reminders.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | min length 1 |
input.remindAt | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
input.title | string | null | no | |
input.note | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.update",
"args": [
{
"id": "<reminderId>",
"remindAt": "2026-10-11T08:00:00.000Z"
}
]
}
}Reply:
{
"success": true,
"reminder": {
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-11T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "pending",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:35.011Z"
}
}reminders.delete
Delete a reminder.
reminders.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.delete",
"args": ["<reminderId>"]
}
}Reply:
{
"success": true
}reminders.dismiss
Dismiss a reminder that fired.
reminders.dismiss(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.dismiss",
"args": ["<reminder2Id>"]
}
}Reply:
{
"success": true,
"reminder": {
"id": "<reminder2Id>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-09T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Send the plan",
"note": null,
"status": "dismissed",
"triggeredAt": null,
"dismissedAt": "2026-10-07T11:17:35.032Z",
"snoozedUntil": null,
"createdAt": "2026-10-07T11:17:26.066Z",
"modifiedAt": "2026-10-07T11:17:35.032Z"
}
}reminders.snooze
Snooze a reminder until a time.
reminders.snooze(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | min length 1 |
input.snoozeUntil | string | yes | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.snooze",
"args": [
{
"id": "<reminderId>",
"snoozeUntil": "2026-10-12T08:00:00.000Z"
}
]
}
}Reply:
{
"success": true,
"reminder": {
"id": "<reminderId>",
"targetType": "note",
"targetId": "<noteId>",
"remindAt": "2026-10-11T08:00:00.000Z",
"anchorId": null,
"highlightText": null,
"highlightStart": null,
"highlightEnd": null,
"title": "Review the plan",
"note": null,
"status": "snoozed",
"triggeredAt": null,
"dismissedAt": null,
"snoozedUntil": "2026-10-12T08:00:00.000Z",
"createdAt": "2026-10-07T11:17:26.057Z",
"modifiedAt": "2026-10-07T11:17:35.022Z"
}
}reminders.bulkDismiss
Dismiss several reminders.
reminders.bulkDismiss(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.reminderIds | string[] | yes | min items 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "reminders.bulkDismiss",
"args": [
{
"reminderIds": ["<reminder3Id>"]
}
]
}
}Reply:
{
"success": true,
"dismissedCount": 1
}Calendar
calendar.createEvent
Create a memrynote calendar event.
calendar.createEvent(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.title | string | yes | min length 1; max length 200 |
input.description | string | null | no | |
input.location | string | null | no | |
input.startAt | string | yes | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
input.endAt | string | null | no | |
input.timezone | string | no | min length 1; default "UTC" |
input.isAllDay | boolean | no | default false |
input.recurrenceRule | Record<string, any> | null | no | |
input.recurrenceExceptions | string[] | null | no | |
input.targetCalendarId | string | null | no | |
input.color | "tomato" | "flamingo" | "tangerine" | "banana" | "sage" | "basil" | "peacock" | "blueberry" | "lavender" | "grape" | "graphite" | null | no | "tomato", "flamingo", "tangerine", "banana", "sage", "basil", "peacock", "blueberry", "lavender", "grape", "graphite" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "calendar.createEvent",
"args": [
{
"title": "Launch party",
"startAt": "2026-10-22T17:00:00.000Z",
"endAt": "2026-10-22T20:00:00.000Z",
"location": "Office"
}
]
}
}Reply:
{
"success": true,
"event": {
"id": "z35ISErj9ks6pAg0VVfRI",
"title": "Launch party",
"description": null,
"location": "Office",
"startAt": "2026-10-22T17:00:00.000Z",
"endAt": "2026-10-22T20:00:00.000Z",
"timezone": "UTC",
"isAllDay": false,
"recurrenceRule": null,
"recurrenceExceptions": null,
"attendees": null,
"reminders": null,
"visibility": null,
"colorId": null,
"color": null,
"conferenceData": null,
"parentEventId": null,
"originalStartTime": null,
"targetCalendarId": null,
"archivedAt": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:35.050Z",
"modifiedAt": "2026-10-07T11:17:35.050Z",
"href": "memry://calendar/event/z35ISErj9ks6pAg0VVfRI?date=2026-10-22",
"source_ref": {
"kind": "calendar_event",
"id": "z35ISErj9ks6pAg0VVfRI",
"title": "Launch party",
"href": "memry://calendar/event/z35ISErj9ks6pAg0VVfRI?date=2026-10-22"
}
},
"sources": [
{
"kind": "calendar_event",
"id": "z35ISErj9ks6pAg0VVfRI",
"title": "Launch party",
"href": "memry://calendar/event/z35ISErj9ks6pAg0VVfRI?date=2026-10-22"
}
]
}calendar.updateEvent
Change a memrynote calendar event.
calendar.updateEvent(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | min length 1 |
input.title | string | no | min length 1; max length 200 |
input.description | string | null | no | |
input.location | string | null | no | |
input.startAt | string | no | format date-time; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ |
input.endAt | string | null | no | |
input.timezone | string | no | min length 1 |
input.isAllDay | boolean | no | |
input.recurrenceRule | Record<string, any> | null | no | |
input.recurrenceExceptions | string[] | null | no | |
input.targetCalendarId | string | null | no | |
input.color | "tomato" | "flamingo" | "tangerine" | "banana" | "sage" | "basil" | "peacock" | "blueberry" | "lavender" | "grape" | "graphite" | null | no | "tomato", "flamingo", "tangerine", "banana", "sage", "basil", "peacock", "blueberry", "lavender", "grape", "graphite" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "calendar.updateEvent",
"args": [
{
"id": "<eventId>",
"location": "Room 4"
}
]
}
}Reply:
{
"success": true,
"event": {
"id": "<eventId>",
"title": "Design review",
"description": null,
"location": "Room 4",
"startAt": "2026-10-08T10:00:00.000Z",
"endAt": "2026-10-08T11:00:00.000Z",
"timezone": "UTC",
"isAllDay": false,
"recurrenceRule": null,
"recurrenceExceptions": null,
"attendees": null,
"reminders": null,
"visibility": null,
"colorId": null,
"color": null,
"conferenceData": null,
"parentEventId": null,
"originalStartTime": null,
"targetCalendarId": null,
"archivedAt": null,
"syncedAt": null,
"createdAt": "2026-10-07T11:17:26.084Z",
"modifiedAt": "2026-10-07T11:17:35.061Z",
"href": "memry://calendar/event/<eventId>?date=2026-10-08",
"source_ref": {
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
}
},
"sources": [
{
"kind": "calendar_event",
"id": "<eventId>",
"title": "Design review",
"href": "memry://calendar/event/<eventId>?date=2026-10-08"
}
]
}calendar.deleteEvent
Delete a memrynote calendar event.
calendar.deleteEvent(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "calendar.deleteEvent",
"args": ["<event2Id>"]
}
}Reply:
{
"success": true
}Settings
settings.set
Store one setting by key, as a string.
settings.set(key, value) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
key | string | yes | |
value | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.set",
"args": ["agent-api-example", "off"]
}
}Reply:
{
"success": true,
"stored": "off"
}settings.setJournalSettings
Change journal settings.
settings.setJournalSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.defaultTemplate | string | null | no | |
settings.weekdayTemplates | Record<string, string | null> | no | |
settings.showSchedule | boolean | no | |
settings.showTasks | boolean | no | |
settings.showAIConnections | boolean | no | |
settings.showStatsFooter | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setJournalSettings",
"args": [
{
"showSchedule": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"defaultTemplate": null,
"weekdayTemplates": {},
"showSchedule": true,
"showTasks": true,
"showAIConnections": true,
"showStatsFooter": false
}
}settings.setAISettings
Turn AI features on or off.
settings.setAISettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.enabled | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setAISettings",
"args": [
{
"enabled": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"enabled": true
}
}settings.setVoiceTranscriptionSettings
Change voice transcription settings.
settings.setVoiceTranscriptionSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.provider | "local" | "openai" | no | "local", "openai" |
settings.memoNameMode | "transcript" | "timestamp" | "none" | no | "transcript", "timestamp", "none" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setVoiceTranscriptionSettings",
"args": [
{
"memoNameMode": "timestamp"
}
]
}
}Reply:
{
"success": true,
"stored": {
"provider": "local",
"memoNameMode": "timestamp"
}
}settings.setTabSettings
Change tab settings.
settings.setTabSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.restoreSessionOnStart | boolean | no | |
settings.tabCloseButton | "always" | "hover" | "active" | no | "always", "hover", "active" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setTabSettings",
"args": [
{
"tabCloseButton": "hover"
}
]
}
}Reply:
{
"success": true,
"stored": {
"restoreSessionOnStart": true,
"tabCloseButton": "hover"
}
}settings.setNoteEditorSettings
Change the note editor toolbar mode.
settings.setNoteEditorSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.toolbarMode | "floating" | "sticky" | no | "floating", "sticky" |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setNoteEditorSettings",
"args": [
{
"toolbarMode": "floating"
}
]
}
}Reply:
{
"success": true,
"stored": {
"toolbarMode": "floating"
}
}settings.setGeneralSettings
Change general settings; any subset of them.
settings.setGeneralSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.theme | "light" | "dark" | "white" | "system" | no | "light", "dark", "white", "system" |
settings.fontSize | "small" | "medium" | "large" | no | "small", "medium", "large" |
settings.fontSizePx | integer | no | min 12; max 24 |
settings.fontFamily | "system" | "serif" | "sans-serif" | "monospace" | "gelasio" | "geist" | "inter" | no | "system", "serif", "sans-serif", "monospace", "gelasio", "geist", "inter" |
settings.customFontFamily | string | no | max length 64 |
settings.accentColor | string | no | pattern ^#[0-9a-fA-F]{6}$ |
settings.colorTheme | string | no | max length 64 |
settings.useThemeAccent | boolean | no | |
settings.backgroundLight | "" | string | no | "" |
settings.foregroundLight | "" | string | no | "" |
settings.backgroundDark | "" | string | no | "" |
settings.foregroundDark | "" | string | no | "" |
settings.reduceMotion | "system" | "on" | no | "system", "on" |
settings.pointerCursors | boolean | no | |
settings.fontSmoothing | boolean | no | |
settings.startOnBoot | boolean | no | |
settings.language | "ar" | "cs" | "da" | "en" | "de" | "el" | "es" | "fi" | "fil" | "fr" | "he" | "hr" | "hu" | "id" | "it" | "ja" | "ko" | "ms" | "nl" | "no" | "pl" | "pt" | "ro" | "ru" | "sk" | "sv" | "th" | "tr" | "uk" | "vi" | "zh-CN" | "zh-TW" | no | "ar", "cs", "da", "en", "de", "el", "es", "fi", "fil", "fr", "he", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh-CN", "zh-TW" |
settings.onboardingCompleted | boolean | no | |
settings.createInSelectedFolder | boolean | no | |
settings.openPagesInNewTab | boolean | no | |
settings.minimizeToTray | boolean | no | |
settings.clockFormat | "12h" | "24h" | no | "12h", "24h" |
settings.dateFormat | "MM/DD/YYYY" | "DD/MM/YYYY" | "YYYY-MM-DD" | "DD.MM.YYYY" | no | "MM/DD/YYYY", "DD/MM/YYYY", "YYYY-MM-DD", "DD.MM.YYYY" |
settings.zoomFactor | number | no | min 0.5; max 2 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setGeneralSettings",
"args": [
{
"theme": "system"
}
]
}
}Reply:
{
"success": true,
"stored": {
"theme": "system",
"fontSize": "medium",
"fontSizePx": 16,
"fontFamily": "system",
"customFontFamily": "",
"accentColor": "#f97316",
"colorTheme": "memrynote",
"useThemeAccent": true,
"backgroundLight": "",
"foregroundLight": "",
"backgroundDark": "",
"foregroundDark": "",
"reduceMotion": "system",
"pointerCursors": false,
"fontSmoothing": false,
"startOnBoot": false,
"language": "en",
"onboardingCompleted": true,
"createInSelectedFolder": true,
"openPagesInNewTab": false,
"minimizeToTray": false,
"clockFormat": "12h",
"dateFormat": "DD.MM.YYYY",
"zoomFactor": 1
}
}settings.setEditorSettings
Change editor settings; any subset of them.
settings.setEditorSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.width | "normal" | "full" | no | "normal", "full" |
settings.toolbarMode | "floating" | "sticky" | no | "floating", "sticky" |
settings.spellCheck | boolean | no | |
settings.pdfAdaptToTheme | boolean | no | |
settings.convertChecklistsToTasks | boolean | no | |
settings.convertAgentChecklistsToTasks | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setEditorSettings",
"args": [
{
"spellCheck": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"width": "normal",
"toolbarMode": "floating",
"spellCheck": true,
"pdfAdaptToTheme": false,
"convertChecklistsToTasks": true,
"convertAgentChecklistsToTasks": false
}
}settings.setTaskSettings
Change task settings; any subset of them.
settings.setTaskSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.defaultProjectId | string | null | no | |
settings.defaultSortOrder | "manual" | "dueDate" | "priority" | "createdAt" | no | "manual", "dueDate", "priority", "createdAt" |
settings.defaultView | "today" | "tomorrow" | "next7" | "all" | no | "today", "tomorrow", "next7", "all" |
settings.staleInboxDays | integer | no | min 1; max 90 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setTaskSettings",
"args": [
{
"defaultSortOrder": "dueDate"
}
]
}
}Reply:
{
"success": true,
"stored": {
"defaultProjectId": null,
"defaultSortOrder": "dueDate",
"defaultView": "all",
"staleInboxDays": 7
}
}settings.setKeyboardSettings
Change keyboard shortcut overrides.
settings.setKeyboardSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.overrides | Record<string, { key: string, modifiers: { meta?: boolean, ctrl?: boolean, shift?: boolean, alt?: boolean } }> | no | |
settings.globalCapture | object | null | no | |
settings.globalCapture.key | string | yes | min length 1 |
settings.globalCapture.modifiers | object | yes | |
settings.globalCapture.modifiers.meta | boolean | no | |
settings.globalCapture.modifiers.ctrl | boolean | no | |
settings.globalCapture.modifiers.shift | boolean | no | |
settings.globalCapture.modifiers.alt | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setKeyboardSettings",
"args": [
{
"overrides": {}
}
]
}
}Reply:
{
"success": true,
"stored": {
"overrides": {},
"globalCapture": null
}
}settings.resetKeyboardSettings
Reset every keyboard shortcut to its default.
settings.resetKeyboardSettings() through vault_desktop_write; needs approval.
Takes no arguments.
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.resetKeyboardSettings",
"args": []
}
}Reply:
{
"success": true,
"stored": {
"overrides": {},
"globalCapture": null
}
}settings.setSyncSettings
Change sync settings.
settings.setSyncSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.enabled | boolean | no | |
settings.autoSync | boolean | no | |
settings.attachmentAutoDownload | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setSyncSettings",
"args": [
{
"attachmentAutoDownload": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"enabled": true,
"autoSync": true,
"attachmentAutoDownload": true
}
}settings.setBackupSettings
Change backup settings.
settings.setBackupSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.autoBackup | boolean | no | |
settings.frequencyHours | 1 | 6 | 12 | 24 | no | 1, 6, 12, 24 |
settings.maxBackups | integer | no | min 1; max 50 |
settings.lastBackupAt | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setBackupSettings",
"args": [
{
"frequencyHours": 24
}
]
}
}Reply:
{
"success": true,
"stored": {
"autoBackup": false,
"frequencyHours": 24,
"maxBackups": 5,
"lastBackupAt": null
}
}settings.setGraphSettings
Change graph view settings.
settings.setGraphSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.layout | "forceatlas2" | "circular" | "random" | no | "forceatlas2", "circular", "random" |
settings.showLabels | boolean | no | |
settings.showEdgeLabels | boolean | no | |
settings.animateLayout | boolean | no | |
settings.showTagEdges | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setGraphSettings",
"args": [
{
"showLabels": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"layout": "forceatlas2",
"showLabels": true,
"showEdgeLabels": false,
"animateLayout": true,
"showTagEdges": false
}
}settings.setCalendarSettings
Change calendar settings.
settings.setCalendarSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.dayCellClickBehavior | "journal" | "calendar" | no | "journal", "calendar" |
settings.calendarPageClickOverride | "inherit" | "journal" | "calendar" | no | "inherit", "journal", "calendar" |
settings.weekStartDay | "sunday" | "monday" | no | "sunday", "monday" |
settings.showNotesOnCalendar | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setCalendarSettings",
"args": [
{
"dayCellClickBehavior": "journal"
}
]
}
}Reply:
{
"success": true,
"stored": {
"dayCellClickBehavior": "journal",
"calendarPageClickOverride": "calendar",
"weekStartDay": "monday",
"showNotesOnCalendar": false
}
}settings.setFeaturesSettings
Turn surfaces on or off: home, inbox, journal, tasks and more.
settings.setFeaturesSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.home | boolean | no | |
settings.inbox | boolean | no | |
settings.journal | boolean | no | |
settings.tasks | boolean | no | |
settings.calendar | boolean | no | |
settings.graph | boolean | no | |
settings.spatialCanvas | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setFeaturesSettings",
"args": [
{
"graph": true
}
]
}
}Reply:
{
"success": true,
"stored": {
"home": true,
"inbox": true,
"journal": true,
"tasks": true,
"calendar": true,
"graph": true,
"spatialCanvas": true
}
}settings.setInboxSettings
Change inbox settings.
settings.setInboxSettings(settings) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
settings | object | yes | |
settings.reviewReminderEnabled | boolean | no | |
settings.reviewReminderTime | string | no | pattern ^([01]\d|2[0-3]):([0-5]\d)$ |
settings.imageFilingMode | "embed" | "link" | no | "embed", "link"; default "embed" |
settings.imageFilingModeRemembered | boolean | no | default false |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "settings.setInboxSettings",
"args": [
{
"reviewReminderEnabled": false
}
]
}
}Reply:
{
"success": true,
"stored": {
"reviewReminderEnabled": false,
"reviewReminderTime": "18:00",
"imageFilingMode": "embed",
"imageFilingModeRemembered": false
}
}Search
search.rebuildIndex
Rebuild the search index from the vault files.
search.rebuildIndex() through vault_desktop_write; needs approval.
Takes no arguments.
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "search.rebuildIndex",
"args": []
}
}Reply:
{
"started": true,
"notes": 25,
"tasks": 15,
"inbox": 22,
"durationMs": 889
}search.addReason
Record that a search result was opened, for recent results.
search.addReason(params) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
params | object | yes | |
params.itemId | string | yes | min length 1 |
params.itemType | "note" | "journal" | "task" | "inbox" | yes | "note", "journal", "task", "inbox" |
params.itemTitle | string | yes | min length 1 |
params.itemIcon | string | null | no | default null |
params.searchQuery | string | yes | min length 1 |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "search.addReason",
"args": [
{
"itemId": "<noteId>",
"itemType": "note",
"itemTitle": "Website relaunch plan",
"searchQuery": "relaunch"
}
]
}
}Reply:
{
"id": "mcLPP_dMlQQM7LcoIVemt",
"itemId": "<noteId>",
"itemType": "note",
"itemTitle": "Website relaunch plan",
"itemIcon": null,
"searchQuery": "relaunch",
"visitedAt": "2026-10-07T11:17:35.162Z"
}search.clearReasons
Forget the recently opened search results.
search.clearReasons() through vault_desktop_write; needs approval.
Takes no arguments.
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "search.clearReasons",
"args": []
}
}Reply:
{
"cleared": true
}Home pages
homePages.create
Create a home page.
homePages.create(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.name | string | yes | min length 1 |
input.icon | string | no | |
input.position | integer | no | min 0; max 9007199254740991; default 0 |
input.widgets | object[] | no | default [] |
input.widgets[].id | string | yes | min length 1 |
input.widgets[].type | string | yes | min length 1 |
input.widgets[].x | integer | yes | min 0; max 9007199254740991 |
input.widgets[].y | integer | yes | min 0; max 9007199254740991 |
input.widgets[].w | integer | yes | min 1; max 9007199254740991 |
input.widgets[].h | integer | yes | min 1; max 9007199254740991 |
input.widgets[].config | Record<string, any> | no | default {} |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "homePages.create",
"args": [
{
"name": "Launch week",
"icon": "rocket"
}
]
}
}Reply:
{
"id": "75Z3gaodyzaSQCm6TnYAh",
"name": "Launch week",
"icon": "rocket",
"position": 0,
"widgets": []
}homePages.update
Change a home page.
homePages.update(input) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | yes | |
input.id | string | yes | min length 1 |
input.name | string | no | min length 1 |
input.icon | string | no | |
input.position | integer | no | min 0; max 9007199254740991 |
input.widgets | object[] | no | |
input.widgets[].id | string | yes | min length 1 |
input.widgets[].type | string | yes | min length 1 |
input.widgets[].x | integer | yes | min 0; max 9007199254740991 |
input.widgets[].y | integer | yes | min 0; max 9007199254740991 |
input.widgets[].w | integer | yes | min 1; max 9007199254740991 |
input.widgets[].h | integer | yes | min 1; max 9007199254740991 |
input.widgets[].config | Record<string, any> | no | default {} |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "homePages.update",
"args": [
{
"id": "<homePageId>",
"name": "Today"
}
]
}
}Reply:
{
"id": "<homePageId>",
"name": "Today",
"position": 0,
"widgets": []
}homePages.delete
Delete a home page.
homePages.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "homePages.delete",
"args": ["<homePage2Id>"]
}
}Reply:
{
"success": true
}homePages.reorder
Set the order of home pages.
homePages.reorder(ids) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
ids | string[] | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "homePages.reorder",
"args": [["<homePageId>"]]
}
}Reply:
{
"success": true
}Vault
vault.switch
Open another vault by path. The agent’s session ends with the old vault.
vault.switch(vaultPath) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
vaultPath | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "vault.switch",
"args": ["/Users/me/Documents/Other vault"]
}
}No example reply: switching the open vault ends the agent session, so the example is not run.
vault.reindex
Re-index the open vault from its files.
vault.reindex() through vault_desktop_write; needs approval.
Takes no arguments.
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "vault.reindex",
"args": []
}
}Reply:
nullvault.updateConfig
Change the open vault’s configuration.
vault.updateConfig(config) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
config | object | yes | |
config.excludePatterns | string[] | no | |
config.defaultNoteFolder | string | no | |
config.journalFolder | string | no | |
config.journalDateFormat | string | no | |
config.attachmentsFolder | string | no | |
config.journalShowInSidebar | boolean | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "vault.updateConfig",
"args": [
{
"excludePatterns": [".git", "node_modules", ".trash"]
}
]
}
}Reply:
{
"excludePatterns": [".git", "node_modules", ".trash"],
"defaultNoteFolder": "",
"journalFolder": "journal",
"journalDateFormat": "YYYY-MM-DD",
"attachmentsFolder": "attachments",
"journalShowInSidebar": false
}vault.downloadRemote
Download a vault of the signed-in account from the sync server.
vault.downloadRemote(vaultUuid, parentPath?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
vaultUuid | string | yes | min length 1 |
parentPath | string | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "vault.downloadRemote",
"args": ["3f6c2a1e-8b4d-4c1a-9e2f-5d7a8b9c0d1e", "/Users/me/Documents"]
}
}No example reply: it needs a signed-in account with a vault on the sync server, so the example is not run.
Canvas
canvas.create
Create an empty canvas.
canvas.create(input?) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
input | object | null | no | |
input.title | string | null | no | |
input.scene | string | no | |
input.folder | string | null | no | |
input.icon | string | null | no | |
input.ownerNoteId | string | null | no |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "canvas.create",
"args": [
{
"title": "Sitemap"
}
]
}
}Reply:
{
"id": "pnB8GGcsxY4P6rfo8Gzkh",
"title": "Sitemap",
"folder": null,
"icon": null,
"ownerNoteId": null,
"createdAt": 1791371857488,
"updatedAt": 1791371857488,
"scene": "{\"type\":\"excalidraw\",\"version\":2,\"source\":\"memry\",\"elements\":[],\"appState\":{},\"files\":{}}"
}canvas.delete
Delete a canvas.
canvas.delete(id) through vault_desktop_write; needs approval.
| Argument | Type | Required | Allowed values |
|---|---|---|---|
id | string | yes |
Example call:
{
"name": "vault_desktop_write",
"arguments": {
"operation": "canvas.delete",
"args": ["<deleteCanvasId>"]
}
}Reply:
{
"success": true
}