Skip to content

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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
querystringyesmin length 1
limitintegernomax 50; greater than 0
folder_idstringnomin length 1
file_types("markdown" | "pdf" | "image" | "audio" | "video")[]nomin items 1

Example call:

json
{
  "query": "relaunch",
  "limit": 5
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
from_pageintegernomax 9007199254740991; greater than 0

Example call:

json
{
  "id": "<noteId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
attachmentstringnomin length 1
pageintegernomax 9007199254740991; greater than 0

Example call:

json
{
  "id": "<noteId>",
  "attachment": "<attachmentName>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
pathstringno
idstringnomin length 1
recursivebooleanno

Example call:

json
{
  "path": "Projects"
}

Reply:

json
[
  {
    "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:

json
{}

Reply:

json
null

vault_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.

ArgumentTypeRequiredAllowed values
statusstringno
project_idstringnomin length 1
due_beforestringno
tagstringno
limitintegernomax 200; greater than 0

Example call:

json
{
  "status": "open",
  "project_id": "<projectId>",
  "limit": 5
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<taskId>"
}

Reply:

json
{
  "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:

json
{}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<projectId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
project_idstringyesmin length 1

Example call:

json
{
  "project_id": "<projectId>"
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "date": "2026-10-05"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
fromstringyespattern ^\d{4}-\d{2}-\d{2}$
tostringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "from": "2026-10-01",
  "to": "2026-10-31"
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
unread_onlybooleanno

Example call:

json
{
  "unread_only": false
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<inboxId>"
}

Reply:

json
{
  "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:

json
{}

Reply:

json
[
  {
    "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:

json
{}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<canvasId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<canvasId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed 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"
argsany[]nodefault []

Example call:

json
{
  "operation": "notes.list",
  "args": [
    {
      "folder": "Projects",
      "limit": 2
    }
  ]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed 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:

json
{
  "operation": "notes.ensurePropertyDefinition"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringyesmin length 1
content_markdownstringyes
folder_pathstringno
tagsstring[]no

Example call:

json
{
  "title": "Release notes draft",
  "content_markdown": "# Release notes\n\n- New onboarding\n",
  "folder_path": "Projects",
  "tags": ["website"]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
titlestringyesmin length 1; max length 200

Example call:

json
{
  "id": "<renameNoteId>",
  "title": "Q4 roadmap"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<deleteNote2Id>"
}

Reply:

json
{
  "id": "<deleteNote2Id>"
}

vault_create_folder ​

Create a note folder. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
pathstringyesmin length 1

Example call:

json
{
  "path": "Projects/Research"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
old_pathstringyesmin length 1
new_pathstringyesmin length 1

Example call:

json
{
  "old_path": "Projects/Research",
  "new_path": "Projects/User research"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
pathstringyesmin length 1

Example call:

json
{
  "path": "Projects/User research"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringyesmin length 1; max length 500
status_idstring | nullno
project_idstring | nullno
parent_idstring | nullno
duestring | nullno
due_datestring | nullno
due_timestring | nullno
start_datestring | nullno
priorityintegernomin 0; max 4
notesstring | nullno
descriptionstring | nullno
is_repeatingbooleanno
repeat_configRecord<string, any> | nullno
repeat_from"due" | "completion" | nullno"due", "completion"
tagsstring[]nomax items 20
linked_note_idsstring[]no
source_note_idstring | nullno
positionintegernomin -9007199254740991; max 9007199254740991

Example call:

json
{
  "title": "Book the launch venue",
  "project_id": "<projectId>",
  "due_date": "2026-10-20",
  "priority": 2,
  "tags": ["launch"]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<deleteTask2Id>"
}

Reply:

json
{
  "id": "<deleteTask2Id>"
}

vault_complete_task ​

Complete a task. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
completed_atstringnoformat 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:

json
{
  "id": "<task2Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<task2Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<task3Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<task3Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
task_idstringyesmin length 1
target_project_idstringnomin length 1
target_status_idstring | nullno
target_parent_idstring | nullno
positionintegeryesmin -9007199254740991; max 9007199254740991

Example call:

json
{
  "task_id": "<task3Id>",
  "target_status_id": "<statusDoingId>",
  "position": 0
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
task_idsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "task_ids": ["<taskId>", "<task2Id>"],
  "positions": [1, 0]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<taskId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
task_idstringyesmin length 1
parent_idstringyesmin length 1

Example call:

json
{
  "task_id": "<task4Id>",
  "parent_id": "<taskId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<task4Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
namestringyesmin length 1; max length 100
descriptionstring | nullno
colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6366f1"
iconstring | nullno
statusesobject[]nomin items 2
statuses[].idstringnomin length 1
statuses[].namestringyesmin length 1; max length 50
statuses[].colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
statuses[].type"todo" | "in_progress" | "done"yes"todo", "in_progress", "done"
statuses[].orderintegeryesmin 0; max 9007199254740991

Example call:

json
{
  "name": "Hiring",
  "color": "#0ea5e9"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
namestringnomin length 1; max length 100
descriptionstring | nullno
colorstringnopattern ^#[0-9a-fA-F]{6}$
iconstring | nullno
statusesobject[]nomin items 2
statuses[].idstringnomin length 1
statuses[].namestringyesmin length 1; max length 50
statuses[].colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
statuses[].type"todo" | "in_progress" | "done"yes"todo", "in_progress", "done"
statuses[].orderintegeryesmin 0; max 9007199254740991

Example call:

json
{
  "id": "<project2Id>",
  "description": "Everything for the autumn hiring round."
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<deleteProject2Id>"
}

Reply:

json
{
  "id": "<deleteProject2Id>"
}

vault_archive_project ​

Archive a task project. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<project2Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
project_idsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "project_ids": ["<projectId>", "<project3Id>"],
  "positions": [1, 0]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
project_idstringyesmin length 1
namestringyesmin length 1; max length 50
colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
is_donebooleannodefault false

Example call:

json
{
  "project_id": "<projectId>",
  "name": "Blocked",
  "color": "#ef4444"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
namestringnomin length 1; max length 50
colorstringnopattern ^#[0-9a-fA-F]{6}$
positionintegernomin -9007199254740991; max 9007199254740991
is_defaultbooleanno
is_donebooleanno

Example call:

json
{
  "id": "<statusDoingId>",
  "name": "Doing"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<statusSpare2Id>"
}

Reply:

json
{
  "id": "<statusSpare2Id>"
}

vault_reorder_statuses ​

Reorder project statuses. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
status_idsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "status_ids": ["<statusTodoId>", "<statusDoingId>"],
  "positions": [0, 1]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$
content_markdownstringyes

Example call:

json
{
  "date": "2026-10-07",
  "content_markdown": "Shipped the pricing page.\n"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$
content_markdownstringno
tagsstring[]no
propertiesRecord<string, any>no

Example call:

json
{
  "date": "2026-10-06",
  "content_markdown": "Planned the launch with the team.\n",
  "tags": ["planning"]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "date": "2026-10-07"
}

Reply:

json
{
  "date": "2026-10-07",
  "deleted": true
}

vault_add_to_inbox ​

Append a new inbox item. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
sourcestringyesmin length 1
titlestringyesmin length 1
contentstringyes

Example call:

json
{
  "source": "agent",
  "title": "Competitor pricing",
  "content": "Compare the three plans on the pricing pages."
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
titlestringnomin length 1; max length 200
contentstringnomax length 50000

Example call:

json
{
  "id": "<inboxId>",
  "title": "Call the printer about flyers"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
snooze_untilstringyesformat 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))$
reasonstringnomax length 500

Example call:

json
{
  "id": "<inbox2Id>",
  "snooze_until": "2026-10-12T09:00:00.000Z",
  "reason": "After the launch"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<inbox3Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<inbox3Id>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1

Example call:

json
{
  "id": "<inbox15Id>"
}

Reply:

json
{
  "id": "<inbox15Id>"
}

vault_add_inbox_tag ​

Add a tag to an inbox item. Requires user approval.

Write tool; needs approval.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
tagstringyesmin length 1

Example call:

json
{
  "id": "<inboxId>",
  "tag": "errands"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
tagstringyesmin length 1

Example call:

json
{
  "id": "<inboxId>",
  "tag": "errands"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
mode"append" | "prepend" | "replace"yes"append", "prepend", "replace"
content_markdownstringyes

Example call:

json
{
  "id": "<noteId>",
  "mode": "append",
  "content_markdown": "## Open questions\n\n- Who signs off the copy?\n"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed valuesNotes
idstringyesmin length 1ID of the existing note to append the artifact to, exactly as returned by a vault read/search tool. Not a name for the artifact.
titlestringyesmin length 1; max length 120Artifact title, used as the file name.
htmlstringyesmin length 1; max length 524288

Example call:

json
{
  "id": "<noteId>",
  "title": "Launch timeline",
  "html": "<h1>Launch timeline</h1><ol><li>Copy freeze</li><li>QA</li><li>Go live</li></ol>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringnomin length 1; max length 500
statusstringno
status_idstring | nullno
project_idstring | nullno
parent_idstring | nullno
duestring | nullno
due_datestring | nullno
due_timestring | nullno
start_datestring | nullno
priorityintegernomin 0; max 4
notesstring | nullno
descriptionstring | nullno
is_repeatingbooleanno
repeat_configRecord<string, any> | nullno
repeat_from"due" | "completion" | nullno"due", "completion"
tagsstring[]nomax items 20
linked_note_idsstring[]no
idstringyesmin length 1

Example call:

json
{
  "id": "<taskId>",
  "priority": 3,
  "due_date": "2026-10-15"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
kind"note" | "task"yes"note", "task"
tagstringyesmin length 1

Example call:

json
{
  "id": "<noteId>",
  "kind": "note",
  "tag": "q4"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
kind"note" | "task"yes"note", "task"
tagstringyesmin length 1

Example call:

json
{
  "id": "<noteId>",
  "kind": "note",
  "tag": "q4"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
folder_pathstringyesmin length 1

Example call:

json
{
  "id": "<moveNoteId>",
  "folder_path": "Archive"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
canvas_idstringyesmin length 1
itemsobject[]yesmin items 1; max items 20
items[].entity_type"note" | "task" | "calendar_event"yes"note", "task", "calendar_event"
items[].entity_idstringyesmin length 1

Example call:

json
{
  "canvas_id": "<canvasId>",
  "items": [
    {
      "entity_type": "note",
      "entity_id": "<noteId>"
    },
    {
      "entity_type": "task",
      "entity_id": "<taskId>"
    }
  ]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
canvas_idstringyesmin length 1
entity_type"note" | "task" | "calendar_event"yes"note", "task", "calendar_event"
entity_idstringyesmin length 1

Example call:

json
{
  "canvas_id": "<canvasId>",
  "entity_type": "task",
  "entity_id": "<taskId>"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringnomin length 1; max length 200

Example call:

json
{
  "title": "Retro board"
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
canvas_idstringyesmin length 1
elementsobject[]yesmin items 1; max items 300
elements[].refstringnomin 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[].xnumberno
elements[].ynumberno
elements[].widthnumbernomin 0; max 100000
elements[].heightnumbernomin 0; max 100000
elements[].strokeColorstringnopattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$
elements[].backgroundColorstringnopattern ^(#[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[].strokeWidthnumbernomax 20; greater than 0
elements[].strokeStyle"solid" | "dashed" | "dotted"no"solid", "dashed", "dotted"
elements[].roughnessnumbernomin 0; max 2
elements[].opacitynumbernomin 0; max 100
elements[].roundness"sharp" | "round"no"sharp", "round"
elements[].anglenumberno
elements[].lockedbooleanno
elements[].linkstring | nullno
elements[].textstringnomax length 20000
elements[].fontSizenumbernomax 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[].labelobjectno
elements[].label.textstringyesmin length 1; max length 2000
elements[].label.fontSizenumbernomax 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.strokeColorstringnopattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$
elements[].startobjectno
elements[].start.refstringnomin length 1; max length 64
elements[].start.elementIdstringnomin length 1; max length 128
elements[].endobjectno
elements[].end.refstringnomin length 1; max length 64
elements[].end.elementIdstringnomin 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][]nomin items 2; max items 500
elements[].pressuresnumber[]nomax items 500
elements[].childrenstring[]nomax items 200
elements[].namestringnomax length 200
elements[].fileIdstringnomin length 1; max length 128
elements[].urlstringnomax length 2048

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
canvas_idstringyesmin length 1
editsobject[]yesmin items 1; max items 300
edits[].elementIdstringyesmin length 1; max length 128
edits[].deletebooleanno
edits[].xnumberno
edits[].ynumberno
edits[].widthnumbernomin 0; max 100000
edits[].heightnumbernomin 0; max 100000
edits[].strokeColorstringnopattern ^(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|transparent)$
edits[].backgroundColorstringnopattern ^(#[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[].strokeWidthnumbernomax 20; greater than 0
edits[].strokeStyle"solid" | "dashed" | "dotted"no"solid", "dashed", "dotted"
edits[].roughnessnumbernomin 0; max 2
edits[].opacitynumbernomin 0; max 100
edits[].roundness"sharp" | "round"no"sharp", "round"
edits[].anglenumberno
edits[].lockedbooleanno
edits[].linkstring | nullno
edits[].textstringnomax length 20000
edits[].fontSizenumbernomax 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[].namestringnomax length 200

Example call:

json
{
  "canvas_id": "<canvasId>",
  "edits": [
    {
      "elementId": "<drawnElementId>",
      "backgroundColor": "#dcfce7",
      "text": "Idea (approved)"
    }
  ]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed 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"
argsany[]nodefault []

Example call:

json
{
  "operation": "notes.ensurePropertyDefinition",
  "args": ["priority", "select"]
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.get",
    "args": ["<noteId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
pathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getByPath",
    "args": ["Projects/Website relaunch plan.md"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getFile",
    "args": ["<fileId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.resolveByTitle",
    "args": ["Launch checklist"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
targetstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.resolveWikiTarget",
    "args": ["Website relaunch plan#Goals"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
titlestringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.previewByTitle",
    "args": ["Launch checklist"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.folderstringno
options.tagsstring[]no
options.sortBy"modified" | "created" | "title" | "position"no"modified", "created", "title", "position"; default "modified"
options.sortOrder"asc" | "desc"no"asc", "desc"; default "desc"
options.limitintegernomin 1; max 10000; default 100
options.offsetintegernomin 0; max 9007199254740991; default 0
options.fields"full" | "tree"no"full", "tree"
options.includeJournalsbooleanno

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.list",
    "args": [
      {
        "folder": "Projects",
        "sortBy": "title",
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getTags",
    "args": []
  }
}

Reply:

json
[
  {
    "tag": "website",
    "color": "violet",
    "count": 3
  },
  {
    "tag": "planning",
    "color": "indigo",
    "count": 2
  },
  {
    "tag": "active",
    "color": "pink",
    "count": 1
  }
]

The outgoing links and backlinks of a note.

notes.getLinks(id) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getLinks",
    "args": ["<noteId>"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getFolders",
    "args": []
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
titleOrPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.exists",
    "args": ["Launch checklist"]
  }
}

Reply:

json
true

notes.getPropertyDefinitions ​

Every property definition: name, type, options and colors.

notes.getPropertyDefinitions() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getPropertyDefinitions",
    "args": []
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
noteIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.listAttachments",
    "args": ["<noteId>"]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
folderPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getFolderConfig",
    "args": ["Projects"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
folderPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getFolderTemplate",
    "args": ["Projects"]
  }
}

Reply:

json
null

notes.getVersions ​

The saved versions (snapshots) of a note, newest first.

notes.getVersions(noteId) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
noteIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getVersions",
    "args": ["<noteId>"]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
snapshotIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getVersion",
    "args": ["<snapshotId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
folderPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getPositions",
    "args": ["Projects"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getAllPositions",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getLocalOnlyCount",
    "args": []
  }
}

Reply:

json
{
  "count": 0
}

notes.getCalendarPropertyNames ​

The date properties shown on the calendar.

notes.getCalendarPropertyNames() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "notes.getCalendarPropertyNames",
    "args": []
  }
}

Reply:

json
[]

Tasks and projects ​

tasks.get ​

Read a task by id.

tasks.get(id) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.get",
    "args": ["<taskId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.projectIdstringno
options.statusIdstring | nullno
options.parentIdstring | nullno
options.includeCompletedbooleannodefault false
options.includeArchivedbooleannodefault false
options.dueBeforestringno
options.dueAfterstringno
options.tagsstring[]no
options.searchstringno
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.limitintegernomin 1; max 1000; default 100
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.list",
    "args": [
      {
        "projectId": "<projectId>",
        "sortBy": "priority",
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
parentIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getSubtasks",
    "args": ["<taskId>"]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getProject",
    "args": ["<projectId>"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.listProjects",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
projectIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.listStatuses",
    "args": ["<projectId>"]
  }
}

Reply:

json
[
  {
    "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getTags",
    "args": []
  }
}

Reply:

json
[
  {
    "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getStats",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getToday",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
daysinteger | nullno

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getUpcoming",
    "args": [7]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getOverdue",
    "args": []
  }
}

Reply:

json
{
  "tasks": [],
  "total": 0,
  "hasMore": false
}

tasks.getLinkedTasks ​

Tasks linked to a note.

tasks.getLinkedTasks(noteId) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
noteIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.getLinkedTasks",
    "args": ["<noteId>"]
  }
}

Reply:

json
[]

The raw link rows of a project’s hub, including pin state.

tasks.listProjectLinks(projectId) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
projectIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.listProjectLinks",
    "args": ["<projectId>"]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
projectIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.listProjectContents",
    "args": ["<projectId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemType"note" | "calendar_event" | "file"yes"note", "calendar_event", "file"
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tasks.listForItem",
    "args": ["note", "<noteId>"]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.get",
    "args": ["<inboxId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.type"link" | "note" | "image" | "voice" | "clip" | "pdf" | "social" | "reminder"no"link", "note", "image", "voice", "clip", "pdf", "social", "reminder"
options.includeSnoozedbooleannodefault false
options.sortBy"created" | "modified" | "title"no"created", "modified", "title"; default "created"
options.sortOrder"asc" | "desc"no"asc", "desc"; default "desc"
options.limitintegernomin 1; max 200; default 50
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.list",
    "args": [
      {
        "type": "note",
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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
}

Fetch a URL’s title, description and image without capturing it.

inbox.previewLink(url) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
urlstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.previewLink",
    "args": ["https://example.com/"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getSuggestions",
    "args": ["<inboxId>"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getTags",
    "args": []
  }
}

Reply:

json
[]

inbox.getSnoozed ​

Inbox items that are snoozed, with when they come back.

inbox.getSnoozed() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getSnoozed",
    "args": []
  }
}

Reply:

json
[]

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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getStats",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.itemIdsstring[]nomax items 200
options.statuses("pending" | "running" | "failed" | "complete")[]nomax items 10

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getJobs",
    "args": [
      {
        "statuses": ["pending", "running"]
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getPatterns",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getStaleThreshold",
    "args": []
  }
}

Reply:

json
7

inbox.listArchived ​

Archived inbox items, searchable and paged.

inbox.listArchived(options?) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.searchstringno
options.limitintegernomin 1; max 200; default 50
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.listArchived",
    "args": [
      {
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.limitintegernomin 1; max 100; default 20

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "inbox.getFilingHistory",
    "args": [
      {
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getEntry",
    "args": ["2026-10-05"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
yearintegeryesmin 1970; max 2100

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getHeatmap",
    "args": [2026]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
yearintegeryesmin 1970; max 2100
monthintegeryesmin 1; max 12

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getMonthEntries",
    "args": [2026, 10]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
yearintegeryesmin 1970; max 2100

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getYearStats",
    "args": [2026]
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getDayContext",
    "args": ["2026-10-05"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getAllTags",
    "args": []
  }
}

Reply:

json
[
  {
    "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "journal.getStreak",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
entityIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "properties.get",
    "args": ["<noteId>"]
  }
}

Reply:

json
[
  {
    "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "templates.list",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "templates.get",
    "args": ["<templateId>"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "savedFilters.list",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "bookmarks.get",
    "args": ["<bookmarkId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.itemTypestringno
options.sortBy"position" | "createdAt"no"position", "createdAt"; default "position"
options.sortOrder"asc" | "desc"no"asc", "desc"; default "asc"
options.limitintegernomin 1; max 1000; default 100
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "bookmarks.list",
    "args": [
      {
        "itemType": "note",
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemTypestringyes
input.itemIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "bookmarks.isBookmarked",
    "args": [
      {
        "itemType": "note",
        "itemId": "<noteId>"
      }
    ]
  }
}

Reply:

json
true

bookmarks.listByType ​

The bookmarks of one item type.

bookmarks.listByType(itemType) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
itemTypestringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "bookmarks.listByType",
    "args": ["note"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemTypestringyes
input.itemIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "bookmarks.getByItem",
    "args": [
      {
        "itemType": "note",
        "itemId": "<noteId>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.tagstringyesmin length 1
input.sortBy"modified" | "created" | "title"no"modified", "created", "title"; default "modified"
input.sortOrder"asc" | "desc"no"asc", "desc"; default "desc"
input.includeDescendantsbooleannodefault false

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tags.getNotesByTag",
    "args": [
      {
        "tag": "website",
        "sortBy": "title"
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tags.getAllWithCounts",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "tags.listCategories",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
folderPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.getConfig",
    "args": ["Projects"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
scope{ kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] }yes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.getViews",
    "args": [
      {
        "kind": "folder",
        "path": "Projects"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobjectyes
options.scope{ kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] }yes
options.propertiesstring[]no
options.limitintegernomin 1; max 1000; default 500
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.listWithProperties",
    "args": [
      {
        "scope": {
          "kind": "folder",
          "path": "Projects"
        },
        "properties": ["stage"],
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
scope{ kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] }yes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.getAvailableProperties",
    "args": [
      {
        "kind": "folder",
        "path": "Projects"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
noteIdstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.getFolderSuggestions",
    "args": ["<meetingNoteId>"]
  }
}

Reply:

json
{
  "suggestions": []
}

folderView.folderExists ​

Whether a folder exists.

folderView.folderExists(folderPath) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
folderPathstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "folderView.folderExists",
    "args": ["Projects"]
  }
}

Reply:

json
true

Reminders ​

reminders.get ​

Read a reminder by id.

reminders.get(id) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.get",
    "args": ["<reminderId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
optionsobject | nullno
options.targetType"note" | "journal" | "highlight" | "task" | "note_date"no"note", "journal", "highlight", "task", "note_date"
options.targetIdstringno
options.status"pending" | "triggered" | "dismissed" | "snoozed" | ("pending" | "triggered" | "dismissed" | "snoozed")[]no"pending", "triggered", "dismissed", "snoozed"
options.fromDatestringnoformat 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.toDatestringnoformat 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.limitintegernomin 1; max 200; default 50
options.offsetintegernomin 0; max 9007199254740991; default 0

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.list",
    "args": [
      {
        "targetType": "note",
        "status": "pending",
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
daysnumberno

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.getUpcoming",
    "args": [30]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.getDue",
    "args": []
  }
}

Reply:

json
[]

reminders.getForTarget ​

The reminders set on a note, journal entry or highlight.

reminders.getForTarget(input) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.targetType"note" | "journal" | "highlight" | "task" | "note_date"yes"note", "journal", "highlight", "task", "note_date"
input.targetIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.getForTarget",
    "args": [
      {
        "targetType": "note",
        "targetId": "<noteId>"
      }
    ]
  }
}

Reply:

json
[
  {
    "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "reminders.countPending",
    "args": []
  }
}

Reply:

json
3

Calendar ​

calendar.getEvent ​

Read a calendar event by id.

calendar.getEvent(id) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "calendar.getEvent",
    "args": ["<eventId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
options{ includeArchived?: boolean } | string | nullno

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "calendar.listEvents",
    "args": [
      {
        "includeArchived": false
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputOrStart{ startAt?: string, endAt?: string, start?: string, end?: string } | stringyes
endstring | nullno

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "calendar.getRange",
    "args": [
      {
        "startAt": "2026-10-01T00:00:00.000Z",
        "endAt": "2026-11-01T00:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
keystringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.get",
    "args": ["agent-api-example"]
  }
}

Reply:

json
"on"

settings.getJournalSettings ​

Journal settings: templates and which panels show.

settings.getJournalSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getJournalSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getAISettings",
    "args": []
  }
}

Reply:

json
{
  "enabled": true
}

settings.getVoiceTranscriptionSettings ​

Voice transcription settings: provider and model.

settings.getVoiceTranscriptionSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getVoiceTranscriptionSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getVoiceModelStatus",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getVoiceRecordingReadiness",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getVoiceTranscriptionOpenAIKeyStatus",
    "args": []
  }
}

Reply:

json
{
  "hasApiKey": false
}

settings.getAIModelStatus ​

The state of the local embedding model.

settings.getAIModelStatus() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getAIModelStatus",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getTabSettings",
    "args": []
  }
}

Reply:

json
{
  "restoreSessionOnStart": true,
  "tabCloseButton": "hover"
}

settings.getNoteEditorSettings ​

Note editor toolbar settings.

settings.getNoteEditorSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getNoteEditorSettings",
    "args": []
  }
}

Reply:

json
{
  "toolbarMode": "floating"
}

settings.getGeneralSettings ​

General settings: theme, fonts, language and startup.

settings.getGeneralSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getGeneralSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getEditorSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getTaskSettings",
    "args": []
  }
}

Reply:

json
{
  "defaultProjectId": null,
  "defaultSortOrder": "manual",
  "defaultView": "all",
  "staleInboxDays": 7
}

settings.getKeyboardSettings ​

Keyboard shortcut overrides.

settings.getKeyboardSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getKeyboardSettings",
    "args": []
  }
}

Reply:

json
{
  "overrides": {},
  "globalCapture": null
}

settings.getSyncSettings ​

Sync settings.

settings.getSyncSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getSyncSettings",
    "args": []
  }
}

Reply:

json
{
  "enabled": true,
  "autoSync": true,
  "attachmentAutoDownload": true
}

settings.getBackupSettings ​

Backup settings.

settings.getBackupSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getBackupSettings",
    "args": []
  }
}

Reply:

json
{
  "autoBackup": false,
  "frequencyHours": 24,
  "maxBackups": 5,
  "lastBackupAt": null
}

settings.getGraphSettings ​

Graph view settings.

settings.getGraphSettings() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getGraphSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getCalendarSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getFeaturesSettings",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "settings.getInboxSettings",
    "args": []
  }
}

Reply:

json
{
  "reviewReminderEnabled": false,
  "reviewReminderTime": "18:00",
  "imageFilingMode": "embed",
  "imageFilingModeRemembered": false
}

search.query ​

Full-text search across notes, tasks, journal entries and inbox items.

search.query(params) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
paramsobjectyes
params.textstringyesmax length 500
params.types("note" | "journal" | "task" | "inbox")[]nodefault []
params.tagsstring[]nodefault []
params.dateRangeobject | nullnodefault null
params.dateRange.fromstringyes
params.dateRange.tostringyes
params.projectIdstring | nullnodefault null
params.folderPathstring | nullnodefault null
params.limitnumbernomin 1; max 100; default 10
params.offsetnumbernomin 0; default 0
params.noteFileTypes("markdown" | "pdf" | "image" | "audio" | "video")[]nomin items 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "search.query",
    "args": [
      {
        "text": "relaunch",
        "types": ["note", "task"],
        "limit": 3
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
textstringyes
noteFileTypes("markdown" | "pdf" | "image" | "audio" | "video")[]nomin items 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "search.quick",
    "args": ["launch", ["markdown"]]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "search.getStats",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "search.getReasons",
    "args": []
  }
}

Reply:

json
[]

search.getAllTags ​

Every tag known to search, with counts.

search.getAllTags() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "search.getAllTags",
    "args": []
  }
}

Reply:

json
["active", "draft", "meeting"]

Graph ​

graph.getData ​

The whole link graph: nodes and edges.

graph.getData() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "graph.getData",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
paramsobjectyes
params.noteIdstringyesmin length 1
params.depthintegernomin 1; max 3; default 2

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "graph.getLocal",
    "args": [
      {
        "noteId": "<noteId>",
        "depth": 1
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "homePages.list",
    "args": []
  }
}

Reply:

json
[
  {
    "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "homePages.get",
    "args": ["<homePageId>"]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "vault.getAll",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "vault.getStatus",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "vault.getConfig",
    "args": []
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "vault.listAccount",
    "args": []
  }
}

Reply:

json
[]

Canvas ​

canvas.list ​

Every canvas.

canvas.list() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "canvas.list",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
canvasIdstringyesmin length 1
fileIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "canvas.getAsset",
    "args": ["<canvasId>", "missing-file-id"]
  }
}

Reply:

json
{
  "ref": null
}

canvas.listAssets ​

The image files attached to a canvas.

canvas.listAssets(canvasId) through vault_desktop_read.

ArgumentTypeRequiredAllowed values
canvasIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "canvas.listAssets",
    "args": ["<canvasId>"]
  }
}

Reply:

json
{
  "assets": []
}

canvas.libraryList ​

The shapes saved in the canvas library.

canvas.libraryList() through vault_desktop_read.

Takes no arguments.

Example call:

json
{
  "name": "vault_desktop_read",
  "arguments": {
    "operation": "canvas.libraryList",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.titlestringyesmin length 1; max length 200
input.contentstringnodefault ""
input.folderstringno
input.tagsstring[]nomax items 50
input.templatestringno
input.propertiesRecord<string, any>no
input.emojistring | nullno

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.titlestringnomin length 1; max length 200
input.contentstringno
input.tagsstring[]nomax items 50
input.frontmatterRecord<string, any>no
input.emojistring | nullno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.update",
    "args": [
      {
        "id": "<note2Id>",
        "content": "# Launch checklist\n\n- [ ] DNS\n- [ ] Analytics\n"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes
newTitlestringyesmin length 1; max length 200

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.rename",
    "args": ["<renameNoteId>", "Q4 roadmap (draft)"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes
newFolderstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.move",
    "args": ["<moveNoteId>", "Projects"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.delete",
    "args": ["<deleteNoteId>"]
  }
}

Reply:

json
{
  "success": true
}

notes.createFolder ​

Create a note folder.

notes.createFolder(path) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
pathstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.createFolder",
    "args": ["Projects/Assets"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
oldPathstringyes
newPathstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.renameFolder",
    "args": ["Projects/Assets", "Projects/Brand assets"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
pathstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.deleteFolder",
    "args": ["Projects/Brand assets"]
  }
}

Reply:

json
{
  "success": true
}

notes.createPropertyDefinition ​

Define a property: its name, type and options.

notes.createPropertyDefinition(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1
input.type"text" | "number" | "checkbox" | "date" | "url" | "status" | "select" | "multiselect"yes"text", "number", "checkbox", "date", "url", "status", "select", "multiselect"
input.optionsobject[]no
input.options[].valuestringyes
input.options[].colorstringyes
input.options[].defaultbooleanno
input.defaultValueanyno
input.colorstringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.createPropertyDefinition",
    "args": [
      {
        "name": "effort",
        "type": "select",
        "options": [
          {
            "value": "S",
            "color": "green"
          },
          {
            "value": "L",
            "color": "red"
          }
        ]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1
input.type"text" | "number" | "checkbox" | "date" | "url" | "status" | "select" | "multiselect"no"text", "number", "checkbox", "date", "url", "status", "select", "multiselect"
input.optionsobject[]no
input.options[].valuestringyes
input.options[].colorstringyes
input.options[].defaultbooleanno
input.defaultValueanyno
input.colorstringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.updatePropertyDefinition",
    "args": [
      {
        "name": "effort",
        "color": "blue"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
namestringyesmin length 1
type"status" | "select" | "multiselect"yes"status", "select", "multiselect"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.ensurePropertyDefinition",
    "args": ["stage", "select"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
propertyNamestringyesmin length 1
optionobjectyes
option.valuestringyesmin length 1
option.colorstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.addPropertyOption",
    "args": [
      "stage",
      {
        "value": "review",
        "color": "yellow"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
propertyNamestringyesmin length 1
categoryKey"todo" | "in_progress" | "done"yes"todo", "in_progress", "done"
optionobjectyes
option.valuestringyesmin length 1
option.colorstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.addStatusOption",
    "args": [
      "progress",
      "in_progress",
      {
        "value": "waiting",
        "color": "orange"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
propertyNamestringyesmin length 1
optionValuestringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.removePropertyOption",
    "args": ["stage", "in review"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
propertyNamestringyesmin length 1
oldValuestringyesmin length 1
newValuestringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.renamePropertyOption",
    "args": ["stage", "review", "in review"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
propertyNamestringyesmin length 1
optionValuestringyesmin length 1
newColorstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.updateOptionColor",
    "args": ["stage", "in review", "purple"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
namestringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.deletePropertyDefinition",
    "args": ["effort"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed valuesNotes
noteIdstringyes
fileobjectyesA File-like object whose arrayBuffer() returns the bytes. JSON cannot carry one, so an agent call to this operation fails.
file.namestringyes
file.arrayBufferanyyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.uploadAttachment",
    "args": [
      "<noteId>",
      {
        "name": "photo.png",
        "arrayBuffer": null
      }
    ]
  }
}

Reply (an error):

json
{
  "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.

ArgumentTypeRequiredAllowed values
noteIdstringyes
filenamestringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.deleteAttachment",
    "args": ["<noteId>", "<attachmentName>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
folderPathstringyes
configobjectyes
config.iconstring | nullno
config.templatestringno
config.inheritbooleannodefault true

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.setFolderConfig",
    "args": [
      "Projects",
      {
        "icon": "folder-kanban"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
snapshotIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.restoreVersion",
    "args": ["<snapshotId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
snapshotIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.deleteVersion",
    "args": ["<snapshotId>"]
  }
}

Reply:

json
{
  "success": true
}

notes.reorder ​

Set the manual order of the notes in a folder.

notes.reorder(folderPath, notePaths) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
folderPathstringyes
notePathsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.reorder",
    "args": ["Projects", ["Projects/Launch checklist.md", "Projects/Website relaunch plan.md"]]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
sourcePathsstring[]yes
targetFolderstringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.importFiles",
    "args": [["/Users/me/Downloads/reading-list.md"], "Projects"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes
localOnlybooleanyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.setLocalOnly",
    "args": ["<meetingNoteId>", true]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
namestringyesmin length 1
showOnCalendarbooleanyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.setCalendarPropertyVisibility",
    "args": ["deadline", true]
  }
}

Reply:

json
{
  "success": true,
  "stored": ["deadline"]
}

notes.applyTemplate ​

Apply a template to an existing note.

notes.applyTemplate(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyes
input.templateIdstringyes
input.mode"full" | "body"yes"full", "body"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.applyTemplate",
    "args": [
      {
        "noteId": "<meetingNoteId>",
        "templateId": "<templateId>",
        "mode": "body"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyesmin length 1
input.includeMetadatabooleannodefault true
input.pageSize"A4" | "Letter" | "Legal"no"A4", "Letter", "Legal"; default "A4"
input.includeTaskMarkersbooleannodefault false
input.outputPathstringnomin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.exportPdf",
    "args": [
      {
        "noteId": "<noteId>",
        "pageSize": "A4",
        "outputPath": "/Users/me/Downloads/export/plan.pdf"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyesmin length 1
input.includeMetadatabooleannodefault true
input.pageSize"A4" | "Letter" | "Legal"no"A4", "Letter", "Legal"; default "A4"
input.includeTaskMarkersbooleannodefault false
input.outputPathstringnomin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "notes.exportHtml",
    "args": [
      {
        "noteId": "<noteId>",
        "outputPath": "/Users/me/Downloads/export/plan.html"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.titlestringyesmin length 1; max length 500
input.descriptionstring | nullno
input.priorityintegernomin 0; max 4; default 0
input.statusIdstring | nullno
input.parentIdstring | nullno
input.dueDatestring | nullno
input.dueTimestring | nullno
input.startDatestring | nullno
input.isRepeatingbooleannodefault false
input.repeatConfigobject | nullno
input.repeatConfig.frequency"daily" | "weekly" | "monthly" | "yearly"yes"daily", "weekly", "monthly", "yearly"
input.repeatConfig.intervalintegernomin 1; max 9007199254740991; default 1
input.repeatConfig.daysOfWeekinteger[]no
input.repeatConfig.monthlyType"dayOfMonth" | "weekPattern"no"dayOfMonth", "weekPattern"
input.repeatConfig.dayOfMonthintegernomin 1; max 31
input.repeatConfig.weekOfMonthintegernomin 1; max 5
input.repeatConfig.dayOfWeekForMonthintegernomin 0; max 6
input.repeatConfig.endType"never" | "date" | "count"yes"never", "date", "count"
input.repeatConfig.endDatestring | nullno
input.repeatConfig.endCountintegernomin 1; max 9007199254740991
input.repeatConfig.completedCountintegernomin 0; max 9007199254740991; default 0
input.repeatConfig.createdAtstringyes
input.repeatFrom"due" | "completion" | nullno"due", "completion"
input.tagsstring[]nomax items 20
input.linkedNoteIdsstring[]no
input.linkedCanvasIdsstring[]no
input.sourceNoteIdstring | nullno
input.positionintegernomin -9007199254740991; max 9007199254740991

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.create",
    "args": [
      {
        "projectId": "<projectId>",
        "title": "Order the launch cake",
        "priority": 1,
        "dueDate": "2026-10-21"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.titlestringnomin length 1; max length 500
input.descriptionstring | nullno
input.priorityintegernomin 0; max 4
input.projectIdstringno
input.statusIdstring | nullno
input.parentIdstring | nullno
input.dueDatestring | nullno
input.dueTimestring | nullno
input.startDatestring | nullno
input.isRepeatingbooleanno
input.repeatConfigobject | nullno
input.repeatConfig.frequency"daily" | "weekly" | "monthly" | "yearly"yes"daily", "weekly", "monthly", "yearly"
input.repeatConfig.intervalintegernomin 1; max 9007199254740991; default 1
input.repeatConfig.daysOfWeekinteger[]no
input.repeatConfig.monthlyType"dayOfMonth" | "weekPattern"no"dayOfMonth", "weekPattern"
input.repeatConfig.dayOfMonthintegernomin 1; max 31
input.repeatConfig.weekOfMonthintegernomin 1; max 5
input.repeatConfig.dayOfWeekForMonthintegernomin 0; max 6
input.repeatConfig.endType"never" | "date" | "count"yes"never", "date", "count"
input.repeatConfig.endDatestring | nullno
input.repeatConfig.endCountintegernomin 1; max 9007199254740991
input.repeatConfig.completedCountintegernomin 0; max 9007199254740991; default 0
input.repeatConfig.createdAtstringyes
input.repeatFrom"due" | "completion" | nullno"due", "completion"
input.tagsstring[]nomax items 20
input.linkedNoteIdsstring[]no
input.linkedCanvasIdsstring[]no

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.update",
    "args": [
      {
        "id": "<taskId>",
        "title": "Write homepage copy",
        "description": "Hero, features, pricing."
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.delete",
    "args": ["<deleteTaskId>"]
  }
}

Reply:

json
{
  "success": true
}

tasks.complete ​

Mark a task done.

tasks.complete(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.completedAtstringnoformat 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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.complete",
    "args": [
      {
        "id": "<task2Id>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.uncomplete",
    "args": ["<task2Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.archive",
    "args": ["<task3Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.unarchive",
    "args": ["<task3Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.taskIdstringyes
input.targetProjectIdstringno
input.targetStatusIdstring | nullno
input.targetParentIdstring | nullno
input.positionintegeryesmin -9007199254740991; max 9007199254740991

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.move",
    "args": [
      {
        "taskId": "<task3Id>",
        "targetStatusId": "<statusTodoId>",
        "position": 0
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
taskIdsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.reorder",
    "args": [
      ["<taskId>", "<task2Id>"],
      [0, 1]
    ]
  }
}

Reply:

json
{
  "success": true
}

tasks.duplicate ​

Copy a task.

tasks.duplicate(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.duplicate",
    "args": ["<task2Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
taskIdstringyes
parentIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.convertToSubtask",
    "args": ["<task4Id>", "<taskId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
taskIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.convertToTask",
    "args": ["<task4Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1; max length 100
input.descriptionstring | nullno
input.colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6366f1"
input.iconstring | nullno
input.statusesobject[]nomin items 2
input.statuses[].namestringyesmin length 1; max length 50
input.statuses[].colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
input.statuses[].type"todo" | "in_progress" | "done"yes"todo", "in_progress", "done"
input.statuses[].orderintegeryesmin 0; max 9007199254740991

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.createProject",
    "args": [
      {
        "name": "Office move",
        "color": "#f97316"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.namestringnomin length 1; max length 100
input.descriptionstring | nullno
input.colorstringnopattern ^#[0-9a-fA-F]{6}$
input.iconstring | nullno
input.statusesobject[]nomin items 2
input.statuses[].idstringno
input.statuses[].namestringyesmin length 1; max length 50
input.statuses[].colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
input.statuses[].type"todo" | "in_progress" | "done"yes"todo", "in_progress", "done"
input.statuses[].orderintegeryesmin 0; max 9007199254740991

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.updateProject",
    "args": [
      {
        "id": "<project3Id>",
        "name": "Website relaunch v2"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.deleteProject",
    "args": ["<deleteProjectId>"]
  }
}

Reply:

json
{
  "success": true
}

tasks.archiveProject ​

Archive a project.

tasks.archiveProject(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.archiveProject",
    "args": ["<project3Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
projectIdsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.reorderProjects",
    "args": [
      ["<projectId>", "<project3Id>"],
      [0, 1]
    ]
  }
}

Reply:

json
{
  "success": true
}

tasks.linkProjectItem ​

Link a note, file or calendar event to a project.

tasks.linkProjectItem(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.itemType"note" | "calendar_event" | "file"yes"note", "calendar_event", "file"
input.itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.linkProjectItem",
    "args": [
      {
        "projectId": "<projectId>",
        "itemType": "note",
        "itemId": "<note2Id>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.itemType"note" | "calendar_event" | "file"yes"note", "calendar_event", "file"
input.itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.unlinkProjectItem",
    "args": [
      {
        "projectId": "<projectId>",
        "itemType": "note",
        "itemId": "<note2Id>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.itemIdstringyes
input.pinnedbooleanyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.setProjectLinkPinned",
    "args": [
      {
        "projectId": "<projectId>",
        "itemId": "<note2Id>",
        "pinned": true
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.noteIdstring | nullyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.setProjectHomeNote",
    "args": [
      {
        "projectId": "<projectId>",
        "noteId": "<noteId>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.urlstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.captureUrlToProject",
    "args": [
      {
        "projectId": "<projectId>",
        "url": "https://example.com/"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.sourcePathsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.importFilesToProject",
    "args": [
      {
        "projectId": "<projectId>",
        "sourcePaths": ["/Users/me/Downloads/brief.md"]
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "linked": ["ozkylhbuuo5b"],
  "failed": []
}

tasks.createStatus ​

Add a status to a project.

tasks.createStatus(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.projectIdstringyes
input.namestringyesmin length 1; max length 50
input.colorstringnopattern ^#[0-9a-fA-F]{6}$; default "#6b7280"
input.isDonebooleannodefault false

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.createStatus",
    "args": [
      {
        "projectId": "<projectId>",
        "name": "Review",
        "color": "#a855f7"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes
updatesobjectyes
updates.namestringnomin length 1; max length 50
updates.colorstringnopattern ^#[0-9a-fA-F]{6}$
updates.positionintegernomin -9007199254740991; max 9007199254740991
updates.isDefaultbooleanno
updates.isDonebooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.updateStatus",
    "args": [
      "<statusDoingId>",
      {
        "name": "In progress"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.deleteStatus",
    "args": ["<statusSpareId>"]
  }
}

Reply:

json
{
  "success": true
}

tasks.reorderStatuses ​

Set the order of a project’s statuses.

tasks.reorderStatuses(statusIds, positions) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
statusIdsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.reorderStatuses",
    "args": [
      ["<statusDoingId>", "<statusTodoId>"],
      [0, 1]
    ]
  }
}

Reply:

json
{
  "success": true
}

tasks.bulkComplete ​

Mark several tasks done.

tasks.bulkComplete(ids) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.bulkComplete",
    "args": [["<task5Id>", "<task6Id>"]]
  }
}

Reply:

json
{
  "success": true,
  "count": 2
}

tasks.bulkDelete ​

Delete several tasks.

tasks.bulkDelete(ids) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.bulkDelete",
    "args": [["<task6Id>"]]
  }
}

Reply:

json
{
  "success": true,
  "count": 1
}

tasks.bulkMove ​

Move several tasks to a project.

tasks.bulkMove(ids, projectId) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes
projectIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.bulkMove",
    "args": [["<task5Id>", "<task6Id>"], "<project3Id>"]
  }
}

Reply:

json
{
  "success": true,
  "count": 2
}

tasks.bulkArchive ​

Archive several tasks.

tasks.bulkArchive(ids) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tasks.bulkArchive",
    "args": [["<task5Id>"]]
  }
}

Reply:

json
{
  "success": true,
  "count": 1
}

Inbox ​

inbox.captureText ​

Capture a text note into the inbox.

inbox.captureText(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.contentstringyesmin length 1; max length 50000
input.titlestringnomin length 1; max length 200
input.tagsstring[]nomax items 20
input.forcebooleanno
input.source"quick-capture" | "inline" | "browser-extension" | "api" | "reminder"no"quick-capture", "inline", "browser-extension", "api", "reminder"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.captureText",
    "args": [
      {
        "content": "Ask Sam for the hero photo",
        "title": "Hero photo",
        "tags": ["website"]
      }
    ]
  }
}

Reply:

json
{
  "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
  }
}

Capture a link into the inbox; its title and preview are fetched.

inbox.captureLink(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.urlstringyesmax length 2000
input.tagsstring[]nomax items 20
input.forcebooleanno
input.source"quick-capture" | "inline" | "browser-extension" | "api" | "reminder"no"quick-capture", "inline", "browser-extension", "api", "reminder"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.captureLink",
    "args": [
      {
        "url": "https://example.com/",
        "tags": ["reading"]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.dataanyyes
input.filenamestringyesmin 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.tagsstring[]nomax items 20
input.source"quick-capture" | "inline" | "browser-extension" | "api" | "reminder"no"quick-capture", "inline", "browser-extension", "api", "reminder"

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.dataanyyes
input.durationnumberyesmin 0; max 300
input.format"webm" | "mp3" | "wav"yes"webm", "mp3", "wav"
input.transcribebooleannodefault true
input.tagsstring[]nomax items 20
input.source"quick-capture" | "inline" | "browser-extension" | "api" | "reminder"no"quick-capture", "inline", "browser-extension", "api", "reminder"
input.waveformnumber[]nomax items 120

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.htmlstringyesmax length 100000
input.textstringyesmax length 50000
input.sourceUrlstringyesmax length 2000
input.sourceTitlestringyesmax length 200
input.tagsstring[]nomax items 20
input.source"quick-capture" | "inline" | "browser-extension" | "api" | "reminder"no"quick-capture", "inline", "browser-extension", "api", "reminder"

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.dataanyyes
input.filenamestringyesmin length 1; max length 255
input.extractTextbooleannodefault true
input.tagsstring[]nomax items 20

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.capturePdf",
    "args": [
      {
        "data": "JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCAzMDAgMTQ0XSAvQ29udGVudHMgNCAwIFIgL1Jlc291cmNlcyA8PCAvRm9udCA8PCAvRjEgNSAwIFIgPj4gPj4gPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA0NiA+PgpzdHJlYW0KQlQgL0YxIDE4IFRmIDI0IDcyIFRkIChRdWFydGVybHkgcmVwb3J0KSBUaiBFVAplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+CmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1OCAwMDAwMCBuIAowMDAwMDAwMTE1IDAwMDAwIG4gCjAwMDAwMDAyNDEgMDAwMDAgbiAKMDAwMDAwMDMzNyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDYgL1Jvb3QgMSAwIFIgPj4Kc3RhcnR4cmVmCjQwNwolJUVPRgo=",
        "filename": "report.pdf",
        "extractText": false
      }
    ]
  }
}

Reply (an error):

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.titlestringnomin length 1; max length 200
input.contentstringnomax length 50000

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.update",
    "args": [
      {
        "id": "<inboxId>",
        "content": "Call the printer about 500 flyers."
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.archive",
    "args": ["<inbox10Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdstringyes
input.destinationobjectyes
input.destination.type"folder" | "note" | "new-note"yes"folder", "note", "new-note"
input.destination.pathstringno
input.destination.noteIdstringno
input.destination.noteIdsstring[]no
input.destination.noteTitlestringnomax length 200
input.destination.targets({ kind: "note", noteId: string } | { kind: "new", title: string })[]nomax items 20
input.tagsstring[]nomax items 20
input.imageMode"embed" | "link"no"embed", "link"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.file",
    "args": [
      {
        "itemId": "<inbox5Id>",
        "destination": {
          "type": "folder",
          "path": "Projects"
        }
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdstringyes
input.itemTypestringyes
input.suggestedTostringyes
input.actualTostringyes
input.confidencenumberyes
input.suggestedTagsstring[]no
input.actualTagsstring[]no

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.trackSuggestion",
    "args": [
      {
        "itemId": "<inboxId>",
        "itemType": "note",
        "suggestedTo": "Projects",
        "actualTo": "Projects",
        "confidence": 0.8
      }
    ]
  }
}

Reply:

json
{
  "success": true
}

inbox.convertToNote ​

Turn an inbox item into a note.

inbox.convertToNote(itemId) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.convertToNote",
    "args": ["<inbox6Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes
inputobject | nullno
input.projectIdstringno
input.dueDatestring | nullno
input.dueTimestring | nullno
input.prioritynumberno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.convertToTask",
    "args": [
      "<inbox7Id>",
      {
        "projectId": "<projectId>",
        "dueDate": "2026-10-14",
        "priority": 2
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "taskId": "KtJWVfXIR5cqfA7ppZstZ"
}

inbox.convertToEvent ​

Turn an inbox item into a calendar event.

inbox.convertToEvent(itemId, input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
itemIdstringyes
inputobjectyes
input.startAtstringyes
input.endAtstring | nullno
input.isAllDaybooleanno
input.locationstring | nullno

Example call:

json
{
  "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:

json
{
  "success": true,
  "eventId": "r74UCZ3Cp2Ep7LYrnp3UT"
}

inbox.convertToReminder ​

Turn an inbox item into a reminder.

inbox.convertToReminder(itemId, input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
itemIdstringyes
inputobjectyes
input.remindAtstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.convertToReminder",
    "args": [
      "<inbox9Id>",
      {
        "remindAt": "2026-10-13T08:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes
noteIdstringyes
tagsstring[] | nullno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.linkToNote",
    "args": ["<inbox4Id>", "<noteId>", ["website"]]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes
tagstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.addTag",
    "args": ["<inboxId>", "errands"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes
tagstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.removeTag",
    "args": ["<inboxId>", "errands"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdstringyes
input.snoozeUntilstringyes
input.reasonstringnomax length 200

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.snooze",
    "args": [
      {
        "itemId": "<inbox4Id>",
        "snoozeUntil": "2026-10-12T09:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.unsnooze",
    "args": ["<inbox4Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.markViewed",
    "args": ["<inboxId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdsstring[]yesmin items 1; max items 100
input.destinationobjectyes
input.destination.type"folder" | "note" | "new-note"yes"folder", "note", "new-note"
input.destination.pathstringno
input.destination.noteIdstringno
input.tagsstring[]nomax items 20

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.bulkFile",
    "args": [
      {
        "itemIds": ["<inbox12Id>"],
        "destination": {
          "type": "folder",
          "path": "Projects"
        }
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "processedCount": 1,
  "errors": []
}

inbox.bulkArchive ​

Archive several inbox items.

inbox.bulkArchive(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdsstring[]yesmin items 1; max items 100

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.bulkArchive",
    "args": [
      {
        "itemIds": ["<inbox13Id>"]
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "processedCount": 1,
  "errors": []
}

inbox.bulkTag ​

Add tags to several inbox items.

inbox.bulkTag(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdsstring[]yesmin items 1; max items 100
input.tagsstring[]yesmin items 1; max items 20

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.bulkTag",
    "args": [
      {
        "itemIds": ["<inboxId>", "<inbox2Id>"],
        "tags": ["launch"]
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "processedCount": 2,
  "errors": []
}

inbox.bulkSnooze ​

Snooze several inbox items until a time.

inbox.bulkSnooze(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemIdsstring[]yes
input.snoozeUntilstringyes
input.reasonstringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.bulkSnooze",
    "args": [
      {
        "itemIds": ["<inbox11Id>"],
        "snoozeUntil": "2026-10-12T09:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.fileAllStale",
    "args": []
  }
}

Reply:

json
{
  "success": true,
  "processedCount": 0,
  "errors": []
}

inbox.retryTranscription ​

Run transcription of a voice memo again.

inbox.retryTranscription(itemId) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.retryTranscription",
    "args": ["<voiceInboxId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
itemIdstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.retryMetadata",
    "args": ["<linkInboxId>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
daysnumberyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.setStaleThreshold",
    "args": [14]
  }
}

Reply:

json
{
  "success": true,
  "stored": 14
}

inbox.unarchive ​

Bring an archived inbox item back.

inbox.unarchive(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.unarchive",
    "args": ["<inbox13Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.deletePermanent",
    "args": ["<inbox14Id>"]
  }
}

Reply:

json
{
  "success": true
}

inbox.undoFile ​

Undo filing an inbox item.

inbox.undoFile(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.undoFile",
    "args": ["<inbox5Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "inbox.undoArchive",
    "args": ["<inbox10Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.datestringyespattern ^\d{4}-\d{2}-\d{2}$
input.contentstringnodefault ""
input.tagsstring[]nodefault []
input.propertiesRecord<string, any>no

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "journal.createEntry",
    "args": [
      {
        "date": "2026-10-08",
        "content": "Launch day prep.\n",
        "tags": ["launch"]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.datestringyespattern ^\d{4}-\d{2}-\d{2}$
input.contentstringno
input.tagsstring[]no
input.propertiesRecord<string, any>no

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "journal.updateEntry",
    "args": [
      {
        "date": "2026-10-08",
        "content": "Launch day prep went well.\n"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
datestringyespattern ^\d{4}-\d{2}-\d{2}$

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "journal.deleteEntry",
    "args": ["2026-10-08"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
entityIdstringyesmin length 1
propertiesRecord<string, any>yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "properties.set",
    "args": [
      "<noteId>",
      {
        "stage": "draft",
        "owner": "Sam"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
entityIdstringyesmin length 1
oldNamestringyesmin length 1
newNamestringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "properties.rename",
    "args": ["<noteId>", "owner", "lead"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1; max length 200
input.descriptionstringno
input.iconstring | nullno
input.tagsstring[]nodefault []
input.propertiesobject[]nodefault []
input.properties[].namestringyesmin 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[].valueanyyes
input.properties[].optionsstring[]no
input.contentstringnodefault ""

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "templates.create",
    "args": [
      {
        "name": "Retro",
        "content": "## Went well\n\n## To change\n",
        "tags": ["meeting"]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyesmin length 1
input.namestringnomin length 1; max length 200
input.descriptionstringno
input.iconstring | nullno
input.tagsstring[]no
input.propertiesobject[]no
input.properties[].namestringyesmin 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[].valueanyyes
input.properties[].optionsstring[]no
input.contentstringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "templates.update",
    "args": [
      {
        "id": "<templateId>",
        "description": "Agenda, notes, action items."
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "templates.delete",
    "args": ["<deleteTemplateId>"]
  }
}

Reply:

json
{
  "success": true
}

templates.duplicate ​

Copy a template under a new name.

templates.duplicate(id, newName) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyesmin length 1
newNamestringyesmin length 1; max length 200

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "templates.duplicate",
    "args": ["<templateId>", "Meeting (short)"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1; max length 100
input.configobjectyes
input.config.filtersobjectyes
input.config.filters.searchstringnodefault ""
input.config.filters.projectIdsstring[]nodefault []
input.config.filters.priorities("urgent" | "high" | "medium" | "low" | "none")[]nodefault []
input.config.filters.tagsstring[]nodefault []
input.config.filters.dueDate{ type: "any" | "none" | "overdue" | "today" | "tomorrow" | "this-week" | "next-week" | "this-month" | "custom", customStart?: string | null, customEnd?: string | null }nodefault {"type":"any","customStart":null,"customEnd":null}
input.config.filters.statusIdsstring[]nodefault []
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.folderPathsstring[]no
input.config.filters.noteIdsstring[]no
input.config.sortobjectno
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.starredbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "savedFilters.create",
    "args": [
      {
        "name": "Urgent website tasks",
        "config": {
          "filters": {
            "priorities": ["urgent", "high"],
            "tags": ["website"]
          }
        }
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.namestringnomin length 1; max length 100
input.configobjectno
input.config.filtersobjectyes
input.config.filters.searchstringnodefault ""
input.config.filters.projectIdsstring[]nodefault []
input.config.filters.priorities("urgent" | "high" | "medium" | "low" | "none")[]nodefault []
input.config.filters.tagsstring[]nodefault []
input.config.filters.dueDate{ type: "any" | "none" | "overdue" | "today" | "tomorrow" | "this-week" | "next-week" | "this-month" | "custom", customStart?: string | null, customEnd?: string | null }nodefault {"type":"any","customStart":null,"customEnd":null}
input.config.filters.statusIdsstring[]nodefault []
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.folderPathsstring[]no
input.config.filters.noteIdsstring[]no
input.config.sortobjectno
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.starredbooleanno
input.positionintegernomin 0; max 9007199254740991

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "savedFilters.update",
    "args": [
      {
        "id": "<savedFilterId>",
        "name": "Due this week"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "savedFilters.delete",
    "args": ["<savedFilterId>"]
  }
}

Reply:

json
{
  "success": true
}

savedFilters.reorder ​

Set the order of saved task filters.

savedFilters.reorder(ids, positions) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes
positionsinteger[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "savedFilters.reorder",
    "args": [["<savedFilterId>"], [0]]
  }
}

Reply:

json
{
  "success": true
}

Bookmarks ​

bookmarks.create ​

Bookmark an item.

bookmarks.create(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemTypestringyes
input.itemIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.create",
    "args": [
      {
        "itemType": "note",
        "itemId": "<note2Id>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.delete",
    "args": ["<bookmarkId>"]
  }
}

Reply:

json
{
  "success": true
}

bookmarks.toggle ​

Bookmark an item, or remove its bookmark when it has one.

bookmarks.toggle(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.itemTypestringyes
input.itemIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.toggle",
    "args": [
      {
        "itemType": "note",
        "itemId": "<meetingNoteId>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
bookmarkIdsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.reorder",
    "args": [["<bookmarkId>"]]
  }
}

Reply:

json
{
  "success": true
}

bookmarks.bulkDelete ​

Delete several bookmarks.

bookmarks.bulkDelete(bookmarkIds) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
bookmarkIdsstring[]yesmin items 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.bulkDelete",
    "args": [["<bookmark2Id>"]]
  }
}

Reply:

json
{
  "success": true,
  "deletedCount": 1
}

bookmarks.bulkCreate ​

Bookmark several items.

bookmarks.bulkCreate(items) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
itemsobject[]yes
items[].itemTypestringyes
items[].itemIdstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "bookmarks.bulkCreate",
    "args": [
      [
        {
          "itemType": "task",
          "itemId": "<taskId>"
        }
      ]
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyesmin length 1
input.tagstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.pinNoteToTag",
    "args": [
      {
        "noteId": "<noteId>",
        "tag": "website"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyesmin length 1
input.tagstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.unpinNoteFromTag",
    "args": [
      {
        "noteId": "<noteId>",
        "tag": "website"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.oldNamestringyesmin length 1
input.newNamestringyesmin length 1; max length 50

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.renameTag",
    "args": [
      {
        "oldName": "draft",
        "newName": "drafts"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.tagstringyesmin length 1
input.colorstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.updateTagColor",
    "args": [
      {
        "tag": "website",
        "color": "blue"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
tagstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.deleteTag",
    "args": ["obsolete"]
  }
}

Reply:

json
{
  "success": true,
  "affectedNotes": 1
}

tags.removeTagFromNote ​

Remove a tag from one note.

tags.removeTagFromNote(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.noteIdstringyesmin length 1
input.tagstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.removeTagFromNote",
    "args": [
      {
        "noteId": "<note2Id>",
        "tag": "website"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.sourcestringyesmin length 1
input.targetstringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.mergeTag",
    "args": [
      {
        "source": "drafts",
        "target": "planning"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.tagstringyesmin length 1
input.iconstring | nullyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.updateTagIcon",
    "args": [
      {
        "tag": "website",
        "icon": "globe"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.createCategory",
    "args": [
      {
        "name": "Areas"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes
input.namestringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.renameCategory",
    "args": [
      {
        "id": "<categoryId>",
        "name": "Work areas"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.deleteCategory",
    "args": [
      {
        "id": "<categoryId>"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.tagsobject[]no
input.tags[].tagstringyes
input.tags[].categoryIdstring | nullyes
input.tags[].sortOrdernumberyes
input.categoriesobject[]no
input.categories[].idstringyes
input.categories[].sortOrdernumberyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "tags.reorder",
    "args": [
      {
        "tags": [
          {
            "tag": "website",
            "categoryId": "<categoryId>",
            "sortOrder": 0
          }
        ]
      }
    ]
  }
}

Reply:

json
{
  "success": true
}

Folder views ​

folderView.setConfig ​

Save a folder view’s configuration.

folderView.setConfig(folderPath, config) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
folderPathstringyes
configobjectyes
config.pathstringno
config.templatestringno
config.inheritbooleanno
config.formulasRecord<string, string>no
config.propertiesRecord<string, { displayName?: string, color?: boolean, dateFormat?: string, numberFormat?: string, hidden?: boolean }>no
config.summariesRecord<string, { type: "sum" | "average" | "min" | "max" | "count" | "countBy" | "countUnique" | "custom", label?: string, expression?: string }>no
config.viewsobject[]no
config.views[].namestringyesmin length 1
config.views[].type"table" | "grid" | "list"no"table", "grid", "list"; default "table"
config.views[].defaultbooleanno
config.views[].columnsobject[]no
config.views[].columns[].idstringyesmin length 1
config.views[].columns[].widthintegernomin 50; max 800
config.views[].columns[].displayNamestringno
config.views[].columns[].showSummarybooleanno
config.views[].filtersstring | { and: (string | object)[] } | { or: (string | object)[] } | { not: string | { and: object[] } | { or: object[] } | { not: object } }no
config.views[].orderobject[]no
config.views[].order[].propertystringyesmin length 1
config.views[].order[].direction"asc" | "desc"yes"asc", "desc"
config.views[].groupByobjectno
config.views[].groupBy.propertystringyesmin length 1
config.views[].groupBy.direction"asc" | "desc"no"asc", "desc"
config.views[].groupBy.collapsedbooleanno
config.views[].groupBy.showSummarybooleanno
config.views[].limitintegernomin 1; max 10000
config.views[].showSummariesbooleanno
config.views[].columnBordersbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "folderView.setConfig",
    "args": [
      "Projects",
      {
        "properties": {
          "stage": {
            "displayName": "Stage"
          }
        }
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
scope{ kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] }yes
viewobjectyes
view.namestringyesmin length 1
view.type"table" | "grid" | "list"no"table", "grid", "list"; default "table"
view.defaultbooleanno
view.columnsobject[]no
view.columns[].idstringyesmin length 1
view.columns[].widthintegernomin 50; max 800
view.columns[].displayNamestringno
view.columns[].showSummarybooleanno
view.filtersstring | { and: (string | object)[] } | { or: (string | object)[] } | { not: string | { and: object[] } | { or: object[] } | { not: object } }no
view.orderobject[]no
view.order[].propertystringyesmin length 1
view.order[].direction"asc" | "desc"yes"asc", "desc"
view.groupByobjectno
view.groupBy.propertystringyesmin length 1
view.groupBy.direction"asc" | "desc"no"asc", "desc"
view.groupBy.collapsedbooleanno
view.groupBy.showSummarybooleanno
view.limitintegernomin 1; max 10000
view.showSummariesbooleanno
view.columnBordersbooleanno
previousNamestringno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "folderView.setView",
    "args": [
      {
        "kind": "folder",
        "path": "Projects"
      },
      {
        "name": "By stage",
        "type": "table",
        "columns": [
          {
            "id": "title"
          },
          {
            "id": "stage"
          }
        ]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
scope{ kind: "folder", path: string } | { kind: "tag", tag: string, andTags?: string[] }yes
viewNamestringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "folderView.deleteView",
    "args": [
      {
        "kind": "folder",
        "path": "Projects"
      },
      "By stage"
    ]
  }
}

Reply:

json
{
  "success": true
}

Reminders ​

reminders.create ​

Set a reminder on a note, journal entry or highlight.

reminders.create(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed 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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.create",
    "args": [
      {
        "targetType": "note",
        "targetId": "<note2Id>",
        "remindAt": "2026-10-10T08:00:00.000Z",
        "title": "Check DNS"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyesmin length 1
input.remindAtstringnoformat 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.titlestring | nullno
input.notestring | nullno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.update",
    "args": [
      {
        "id": "<reminderId>",
        "remindAt": "2026-10-11T08:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.delete",
    "args": ["<reminderId>"]
  }
}

Reply:

json
{
  "success": true
}

reminders.dismiss ​

Dismiss a reminder that fired.

reminders.dismiss(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.dismiss",
    "args": ["<reminder2Id>"]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyesmin length 1
input.snoozeUntilstringyesformat 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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.snooze",
    "args": [
      {
        "id": "<reminderId>",
        "snoozeUntil": "2026-10-12T08:00:00.000Z"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.reminderIdsstring[]yesmin items 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "reminders.bulkDismiss",
    "args": [
      {
        "reminderIds": ["<reminder3Id>"]
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "dismissedCount": 1
}

Calendar ​

calendar.createEvent ​

Create a memrynote calendar event.

calendar.createEvent(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.titlestringyesmin length 1; max length 200
input.descriptionstring | nullno
input.locationstring | nullno
input.startAtstringyesformat 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.endAtstring | nullno
input.timezonestringnomin length 1; default "UTC"
input.isAllDaybooleannodefault false
input.recurrenceRuleRecord<string, any> | nullno
input.recurrenceExceptionsstring[] | nullno
input.targetCalendarIdstring | nullno
input.color"tomato" | "flamingo" | "tangerine" | "banana" | "sage" | "basil" | "peacock" | "blueberry" | "lavender" | "grape" | "graphite" | nullno"tomato", "flamingo", "tangerine", "banana", "sage", "basil", "peacock", "blueberry", "lavender", "grape", "graphite"

Example call:

json
{
  "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:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyesmin length 1
input.titlestringnomin length 1; max length 200
input.descriptionstring | nullno
input.locationstring | nullno
input.startAtstringnoformat 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.endAtstring | nullno
input.timezonestringnomin length 1
input.isAllDaybooleanno
input.recurrenceRuleRecord<string, any> | nullno
input.recurrenceExceptionsstring[] | nullno
input.targetCalendarIdstring | nullno
input.color"tomato" | "flamingo" | "tangerine" | "banana" | "sage" | "basil" | "peacock" | "blueberry" | "lavender" | "grape" | "graphite" | nullno"tomato", "flamingo", "tangerine", "banana", "sage", "basil", "peacock", "blueberry", "lavender", "grape", "graphite"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "calendar.updateEvent",
    "args": [
      {
        "id": "<eventId>",
        "location": "Room 4"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "calendar.deleteEvent",
    "args": ["<event2Id>"]
  }
}

Reply:

json
{
  "success": true
}

Settings ​

settings.set ​

Store one setting by key, as a string.

settings.set(key, value) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
keystringyes
valuestringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.set",
    "args": ["agent-api-example", "off"]
  }
}

Reply:

json
{
  "success": true,
  "stored": "off"
}

settings.setJournalSettings ​

Change journal settings.

settings.setJournalSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.defaultTemplatestring | nullno
settings.weekdayTemplatesRecord<string, string | null>no
settings.showSchedulebooleanno
settings.showTasksbooleanno
settings.showAIConnectionsbooleanno
settings.showStatsFooterbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setJournalSettings",
    "args": [
      {
        "showSchedule": true
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.enabledbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setAISettings",
    "args": [
      {
        "enabled": true
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "enabled": true
  }
}

settings.setVoiceTranscriptionSettings ​

Change voice transcription settings.

settings.setVoiceTranscriptionSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.provider"local" | "openai"no"local", "openai"
settings.memoNameMode"transcript" | "timestamp" | "none"no"transcript", "timestamp", "none"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setVoiceTranscriptionSettings",
    "args": [
      {
        "memoNameMode": "timestamp"
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "provider": "local",
    "memoNameMode": "timestamp"
  }
}

settings.setTabSettings ​

Change tab settings.

settings.setTabSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.restoreSessionOnStartbooleanno
settings.tabCloseButton"always" | "hover" | "active"no"always", "hover", "active"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setTabSettings",
    "args": [
      {
        "tabCloseButton": "hover"
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "restoreSessionOnStart": true,
    "tabCloseButton": "hover"
  }
}

settings.setNoteEditorSettings ​

Change the note editor toolbar mode.

settings.setNoteEditorSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.toolbarMode"floating" | "sticky"no"floating", "sticky"

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setNoteEditorSettings",
    "args": [
      {
        "toolbarMode": "floating"
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "toolbarMode": "floating"
  }
}

settings.setGeneralSettings ​

Change general settings; any subset of them.

settings.setGeneralSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.theme"light" | "dark" | "white" | "system"no"light", "dark", "white", "system"
settings.fontSize"small" | "medium" | "large"no"small", "medium", "large"
settings.fontSizePxintegernomin 12; max 24
settings.fontFamily"system" | "serif" | "sans-serif" | "monospace" | "gelasio" | "geist" | "inter"no"system", "serif", "sans-serif", "monospace", "gelasio", "geist", "inter"
settings.customFontFamilystringnomax length 64
settings.accentColorstringnopattern ^#[0-9a-fA-F]{6}$
settings.colorThemestringnomax length 64
settings.useThemeAccentbooleanno
settings.backgroundLight"" | stringno""
settings.foregroundLight"" | stringno""
settings.backgroundDark"" | stringno""
settings.foregroundDark"" | stringno""
settings.reduceMotion"system" | "on"no"system", "on"
settings.pointerCursorsbooleanno
settings.fontSmoothingbooleanno
settings.startOnBootbooleanno
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.onboardingCompletedbooleanno
settings.createInSelectedFolderbooleanno
settings.openPagesInNewTabbooleanno
settings.minimizeToTraybooleanno
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.zoomFactornumbernomin 0.5; max 2

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setGeneralSettings",
    "args": [
      {
        "theme": "system"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.width"normal" | "full"no"normal", "full"
settings.toolbarMode"floating" | "sticky"no"floating", "sticky"
settings.spellCheckbooleanno
settings.pdfAdaptToThemebooleanno
settings.convertChecklistsToTasksbooleanno
settings.convertAgentChecklistsToTasksbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setEditorSettings",
    "args": [
      {
        "spellCheck": true
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.defaultProjectIdstring | nullno
settings.defaultSortOrder"manual" | "dueDate" | "priority" | "createdAt"no"manual", "dueDate", "priority", "createdAt"
settings.defaultView"today" | "tomorrow" | "next7" | "all"no"today", "tomorrow", "next7", "all"
settings.staleInboxDaysintegernomin 1; max 90

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setTaskSettings",
    "args": [
      {
        "defaultSortOrder": "dueDate"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.overridesRecord<string, { key: string, modifiers: { meta?: boolean, ctrl?: boolean, shift?: boolean, alt?: boolean } }>no
settings.globalCaptureobject | nullno
settings.globalCapture.keystringyesmin length 1
settings.globalCapture.modifiersobjectyes
settings.globalCapture.modifiers.metabooleanno
settings.globalCapture.modifiers.ctrlbooleanno
settings.globalCapture.modifiers.shiftbooleanno
settings.globalCapture.modifiers.altbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setKeyboardSettings",
    "args": [
      {
        "overrides": {}
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.resetKeyboardSettings",
    "args": []
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "overrides": {},
    "globalCapture": null
  }
}

settings.setSyncSettings ​

Change sync settings.

settings.setSyncSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.enabledbooleanno
settings.autoSyncbooleanno
settings.attachmentAutoDownloadbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setSyncSettings",
    "args": [
      {
        "attachmentAutoDownload": true
      }
    ]
  }
}

Reply:

json
{
  "success": true,
  "stored": {
    "enabled": true,
    "autoSync": true,
    "attachmentAutoDownload": true
  }
}

settings.setBackupSettings ​

Change backup settings.

settings.setBackupSettings(settings) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.autoBackupbooleanno
settings.frequencyHours1 | 6 | 12 | 24no1, 6, 12, 24
settings.maxBackupsintegernomin 1; max 50
settings.lastBackupAtstring | nullno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setBackupSettings",
    "args": [
      {
        "frequencyHours": 24
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.layout"forceatlas2" | "circular" | "random"no"forceatlas2", "circular", "random"
settings.showLabelsbooleanno
settings.showEdgeLabelsbooleanno
settings.animateLayoutbooleanno
settings.showTagEdgesbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setGraphSettings",
    "args": [
      {
        "showLabels": true
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.dayCellClickBehavior"journal" | "calendar"no"journal", "calendar"
settings.calendarPageClickOverride"inherit" | "journal" | "calendar"no"inherit", "journal", "calendar"
settings.weekStartDay"sunday" | "monday"no"sunday", "monday"
settings.showNotesOnCalendarbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setCalendarSettings",
    "args": [
      {
        "dayCellClickBehavior": "journal"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.homebooleanno
settings.inboxbooleanno
settings.journalbooleanno
settings.tasksbooleanno
settings.calendarbooleanno
settings.graphbooleanno
settings.spatialCanvasbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setFeaturesSettings",
    "args": [
      {
        "graph": true
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
settingsobjectyes
settings.reviewReminderEnabledbooleanno
settings.reviewReminderTimestringnopattern ^([01]\d|2[0-3]):([0-5]\d)$
settings.imageFilingMode"embed" | "link"no"embed", "link"; default "embed"
settings.imageFilingModeRememberedbooleannodefault false

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "settings.setInboxSettings",
    "args": [
      {
        "reviewReminderEnabled": false
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "search.rebuildIndex",
    "args": []
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
paramsobjectyes
params.itemIdstringyesmin length 1
params.itemType"note" | "journal" | "task" | "inbox"yes"note", "journal", "task", "inbox"
params.itemTitlestringyesmin length 1
params.itemIconstring | nullnodefault null
params.searchQuerystringyesmin length 1

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "search.addReason",
    "args": [
      {
        "itemId": "<noteId>",
        "itemType": "note",
        "itemTitle": "Website relaunch plan",
        "searchQuery": "relaunch"
      }
    ]
  }
}

Reply:

json
{
  "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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "search.clearReasons",
    "args": []
  }
}

Reply:

json
{
  "cleared": true
}

Home pages ​

homePages.create ​

Create a home page.

homePages.create(input) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.namestringyesmin length 1
input.iconstringno
input.positionintegernomin 0; max 9007199254740991; default 0
input.widgetsobject[]nodefault []
input.widgets[].idstringyesmin length 1
input.widgets[].typestringyesmin length 1
input.widgets[].xintegeryesmin 0; max 9007199254740991
input.widgets[].yintegeryesmin 0; max 9007199254740991
input.widgets[].wintegeryesmin 1; max 9007199254740991
input.widgets[].hintegeryesmin 1; max 9007199254740991
input.widgets[].configRecord<string, any>nodefault {}

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "homePages.create",
    "args": [
      {
        "name": "Launch week",
        "icon": "rocket"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobjectyes
input.idstringyesmin length 1
input.namestringnomin length 1
input.iconstringno
input.positionintegernomin 0; max 9007199254740991
input.widgetsobject[]no
input.widgets[].idstringyesmin length 1
input.widgets[].typestringyesmin length 1
input.widgets[].xintegeryesmin 0; max 9007199254740991
input.widgets[].yintegeryesmin 0; max 9007199254740991
input.widgets[].wintegeryesmin 1; max 9007199254740991
input.widgets[].hintegeryesmin 1; max 9007199254740991
input.widgets[].configRecord<string, any>nodefault {}

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "homePages.update",
    "args": [
      {
        "id": "<homePageId>",
        "name": "Today"
      }
    ]
  }
}

Reply:

json
{
  "id": "<homePageId>",
  "name": "Today",
  "position": 0,
  "widgets": []
}

homePages.delete ​

Delete a home page.

homePages.delete(id) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "homePages.delete",
    "args": ["<homePage2Id>"]
  }
}

Reply:

json
{
  "success": true
}

homePages.reorder ​

Set the order of home pages.

homePages.reorder(ids) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
idsstring[]yes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "homePages.reorder",
    "args": [["<homePageId>"]]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
vaultPathstringyes

Example call:

json
{
  "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:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "vault.reindex",
    "args": []
  }
}

Reply:

json
null

vault.updateConfig ​

Change the open vault’s configuration.

vault.updateConfig(config) through vault_desktop_write; needs approval.

ArgumentTypeRequiredAllowed values
configobjectyes
config.excludePatternsstring[]no
config.defaultNoteFolderstringno
config.journalFolderstringno
config.journalDateFormatstringno
config.attachmentsFolderstringno
config.journalShowInSidebarbooleanno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "vault.updateConfig",
    "args": [
      {
        "excludePatterns": [".git", "node_modules", ".trash"]
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
vaultUuidstringyesmin length 1
parentPathstringno

Example call:

json
{
  "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.

ArgumentTypeRequiredAllowed values
inputobject | nullno
input.titlestring | nullno
input.scenestringno
input.folderstring | nullno
input.iconstring | nullno
input.ownerNoteIdstring | nullno

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "canvas.create",
    "args": [
      {
        "title": "Sitemap"
      }
    ]
  }
}

Reply:

json
{
  "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.

ArgumentTypeRequiredAllowed values
idstringyes

Example call:

json
{
  "name": "vault_desktop_write",
  "arguments": {
    "operation": "canvas.delete",
    "args": ["<deleteCanvasId>"]
  }
}

Reply:

json
{
  "success": true
}

Released under the GNU GPL v3.0.