MCP Tools Reference
The Noteriv MCP server exposes 22 tools organized into six categories. This page documents each tool with its parameters, behavior, and usage examples.
Vault Management
list_vaults
List all Noteriv vaults configured on this machine.
Parameters: None
Returns: A list of vaults with their name, ID, path, and whether they are currently active.
Example response:
My Notes (abc123)
Path: /home/user/notes
[ACTIVE]
Work (def456)
Path: /home/user/work-notes
get_active_vault
Get the currently active vault name and path.
Parameters: None
Returns: The active vault's name, path, and ID. If a manual vault path was set via command-line argument or set_vault_path, that path is returned instead.
Example response:
My Notes
Path: /home/user/notes
ID: abc123
switch_vault
Switch to a different vault by name or ID. All subsequent operations will target the new vault.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
name_or_id |
string | Yes | The vault name (case-insensitive) or vault ID |
Example: switch_vault({ name_or_id: "Work" })
Returns: Confirmation with the new vault name and path.
set_vault_path
Set a custom vault path for vaults that are not in the Noteriv configuration. Useful for pointing the server at any directory containing markdown files.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Absolute path to the vault directory |
Example: set_vault_path({ path: "/home/user/my-project/docs" })
Returns: Confirmation of the new vault path. Returns an error if the path does not exist.
Note CRUD
read_note
Read the full content of a note by its relative path within the vault.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path from vault root (e.g., Projects/roadmap.md) |
Example: read_note({ path: "Projects/roadmap.md" })
Returns: The full markdown content of the note, or an error if the file does not exist.
write_note
Create a new note or overwrite an existing one. Parent directories are created automatically if they do not exist.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path for the note |
content |
string | Yes | Full markdown content to write |
Example: write_note({ path: "Ideas/new-feature.md", content: "# New Feature\n\nDescription here." })
Returns: Confirmation that the note was written.
append_to_note
Append text to the end of an existing note. A newline is inserted between the existing content and the appended text if the file does not already end with one.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path to the existing note |
content |
string | Yes | Text to append |
Example: append_to_note({ path: "Daily/2026-03-20.md", content: "\n## Evening\n\nWrapped up the documentation." })
Returns: Confirmation that the text was appended. Returns an error if the note does not exist.
delete_note
Move a note to the trash (soft delete). The note is moved to .noteriv/trash/ with a metadata file recording its original path and deletion time. The note can be restored later.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path to the note to delete |
Example: delete_note({ path: "Archive/old-draft.md" })
Returns: Confirmation that the note was trashed.
rename_note
Rename or move a note to a new path. Parent directories for the new path are created automatically.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
old_path |
string | Yes | Current relative path |
new_path |
string | Yes | New relative path |
Example: rename_note({ old_path: "Inbox/idea.md", new_path: "Projects/idea.md" })
Returns: Confirmation showing the old and new paths.
Browsing
list_notes
List all markdown notes (.md and .markdown files) in the vault or a specific subfolder. Does not include directories or non-markdown files.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | No | Subfolder to list (omit for entire vault) |
Example: list_notes({ folder: "Projects" })
Returns: Newline-separated list of relative file paths.
list_folders
List all folders in the vault, including nested subfolders. Hidden directories (starting with .) and node_modules are excluded.
Parameters: None
Returns: Newline-separated list of relative folder paths.
list_all_files
List all files in the vault or a subfolder, including non-markdown files like images, PDFs, and other attachments.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | No | Subfolder to list (omit for entire vault) |
Returns: Newline-separated list of relative file paths.
search_notes
Full-text search across all notes in the vault. Searches both file names and file content (case-insensitive). Returns up to 20 matching files with up to 5 matching lines per file.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search text |
Example: search_notes({ query: "API design" })
Returns: Matching files with line numbers and matching line text:
Projects/api-spec.md
L12: ## API Design Principles
L45: The API design follows REST conventions.
Notes/meeting-2026-03-15.md
L8: Discussed API design for the new endpoints.
Folders
create_folder
Create a new folder in the vault. Intermediate directories are created automatically.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative folder path to create |
Example: create_folder({ path: "Projects/2026/Q1" })
delete_folder
Permanently delete a folder and all of its contents. This is not a soft delete -- files are removed from disk.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative folder path to delete |
Warning: This operation is permanent. Consider moving important files before deleting a folder.
Knowledge Graph
get_tags
List all #tags found across all notes in the vault, along with the notes that use each tag. Tags are sorted by frequency (most-used first). Up to 5 file paths are shown per tag.
Parameters: None
Example response:
#project (8): Projects/alpha.md, Projects/beta.md, Notes/planning.md, ...
#meeting (5): Daily/2026-03-15.md, Daily/2026-03-16.md, Notes/standup.md, ...
#idea (3): Inbox/feature-x.md, Inbox/research.md, Ideas/brainstorm.md
get_backlinks
Find all notes that contain a [[wiki-link]] pointing to a given note. This is the inverse of get_outgoing_links -- it answers "who links to this note?"
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path to the target note |
Example: get_backlinks({ path: "Concepts/react-hooks.md" })
Returns: Newline-separated list of notes that link to the target. The search matches both [[react-hooks]] and [[react-hooks|display text]] link formats.
get_outgoing_links
List all [[wiki-links]] found in a given note. Returns the link targets (note names), deduplicated.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path to the source note |
Example: get_outgoing_links({ path: "Projects/roadmap.md" })
Returns: Newline-separated list of wiki-link targets.
Stats & Meta
get_vault_stats
Get aggregate statistics for the active vault.
Parameters: None
Example response:
Vault: /home/user/notes
Notes: 247
Words: 89,432
Characters: 512,876
get_note_info
Get detailed metadata about a specific note, including frontmatter fields, word count, line count, tags, and outgoing wiki-links.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | Relative path to the note |
Example: get_note_info({ path: "Projects/roadmap.md" })
Example response:
Path: Projects/roadmap.md
Words: 342
Lines: 48
Tags: #project, #roadmap
Links: milestones, team, timeline
Frontmatter:
title: Project Roadmap
status: active
due: 2026-06-30
Daily Notes
create_daily_note
Create today's daily note in the Daily/ folder, or return the existing one if it already exists. The filename follows the YYYY-MM-DD.md format.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
content |
string | No | Initial content for the note (defaults to # YYYY-MM-DD\n\n) |
Example: create_daily_note({ content: "# 2026-03-20\n\n## Tasks\n\n- [ ] Write documentation\n- [ ] Review PRs" })
Returns: Confirmation that the note was created, or the full content of the existing note if one already exists for today.
get_recent_daily_notes
List the most recent daily notes. Looks for files matching the YYYY-MM-DD.md pattern in the Daily/ folder, sorted by date (newest first).
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
count |
number | No | Number of notes to return (default: 7) |
Example: get_recent_daily_notes({ count: 14 })
Returns: Newline-separated list of daily note paths:
Daily/2026-03-20.md
Daily/2026-03-19.md
Daily/2026-03-18.md
Daily/2026-03-17.md
Daily/2026-03-16.md
Daily/2026-03-15.md
Daily/2026-03-14.md