MCP Tools Reference

MCP Tools Reference

Auto-generated documentation of all MCP tools. Do not edit manually. Regenerate with: dotnet run --project scripts/GenerateCommandsRef

Generated: 2026-07-14 21:05 UTC

Summary

Total tool classes: 19

Total prompt classes: 1

Total resource classes: 1

AssetTools

find_orphan_assets

Find asset files (images, PDFs, Excalidraw) not referenced by any note. When dry_run=false, moves orphans to .trash/.kioku-orphans/.

Parameters:

Name Type Required Description
dry_run Boolean No If true (default), lists orphans without moving them.

get_asset_metadata

Return metadata (name, path, size, last modified) for a non-Markdown asset file in the vault.

Parameters:

Name Type Required Description
path String Yes Vault-relative path to the asset file (e.g. ‘Attachments/diagram.png’).

list_excalidraw_files

List all Excalidraw files in the vault: standalone .excalidraw files and Markdown notes with ‘excalidraw: true’ in frontmatter.

move_attachments_to_folder

Move scattered attachment files to a centralized folder and update all references in notes.

Parameters:

Name Type Required Description
target_folder String Yes Target folder path where attachments will be moved (e.g., ‘Attachments’).
dry_run Boolean No If true, returns a preview without moving files.

normalize_attachment_names

Rename attachment files with a consistent pattern (note-slug-N.ext) and update all references in notes.

Parameters:

Name Type Required Description
asset_folder String Yes Asset folder path containing attachments to normalize (e.g., ‘Attachments’, ‘Assets’).
dry_run Boolean No If true, returns a preview without renaming files.

reorder_notes_in_folder

Rename notes in a folder with numeric prefixes (01-, 02-, …) to define explicit ordering.

Parameters:

Name Type Required Description
folder String Yes Vault-relative folder path containing the notes to reorder.
dry_run Boolean No If true, returns a preview without renaming files.

CssThemingTools

apply_css_snippet

Creates or updates a CSS snippet file in the Obsidian vault’s .obsidian/snippets/ folder. Use Obsidian CSS variables (–color-base-00, –text-normal, etc.) for best compatibility. After applying, call trigger_obsidian_command with ‘app:reload-css-snippets’ to activate it.

Parameters:

Name Type Required Description
name String Yes Snippet filename without .css extension (e.g. ‘sepia-editor’, ‘custom-tags’).
css_content String Yes Valid CSS content. Use Obsidian CSS variables for theme compatibility.
enable Boolean No If true, adds the snippet to Obsidian’s enabled snippets list in app.json. Requires ‘app:reload-css-snippets’ plugin command to take effect.

list_css_snippets

Lists all CSS snippet files in the vault’s .obsidian/snippets/ folder, showing their enabled/disabled status and a preview of their content.

reload_css_snippets

Reloads CSS snippets in Obsidian so changes made with apply_css_snippet or remove_css_snippet take effect without restarting Obsidian.

remove_css_snippet

Removes a CSS snippet file from the Obsidian vault’s .obsidian/snippets/ folder. Also removes it from the enabledCssSnippets list in app.json.

Parameters:

Name Type Required Description
name String Yes Snippet name without .css extension (e.g. ‘sepia-editor’).

EngineeringWorkflowTools

add_backlog_item

Adds a future improvement or idea to a project’s backlog as {projects}/{project}/backlog/{title}.md with status ‘proposed’. Use for out-of-scope improvements worth remembering. Later, set status to ‘adopted’ or ‘discarded’ with update_frontmatter.

Parameters:

Name Type Required Description
project String Yes Project name (folder under the projects root).
title String Yes Short idea title.
description String Yes What the improvement is and why it was deferred.
tags String No Extra tags, comma-separated.

add_knowledge

Saves a knowledge note. With a project it goes to {projects}/{project}/knowledge/; without one it goes to the general knowledge folder. Use for lessons learned, how-things-work explanations, and setup guides (e.g. local deployment).

Parameters:

Name Type Required Description
title String Yes Note title, used as the file name (wiki-friendly, no prefix).
content String Yes The knowledge content in markdown.
project String No Project name for project-specific knowledge. Leave empty for general knowledge.
tags String No Extra tags, comma-separated.

create_plan

Creates an implementation plan for a project as {projects}/{project}/plans/PLAN-{date}-{title}.md. Write steps as a markdown checkbox list (- [ ] step) so task tools can track them. When the plan is completed, set status to ‘done’ with update_frontmatter. Scaffolds the project folder structure on first use.

Parameters:

Name Type Required Description
project String Yes Project name (folder under the projects root).
title String Yes Short plan title, e.g. ‘Add semantic search’.
objective String Yes What the plan achieves and why.
steps String Yes The plan steps in markdown. Prefer a checkbox list: ‘- [ ] step one’.
status String No Plan status: draft, active, or done.
ticket String No Optional ticket note name this plan implements; linked as a wikilink.
tags String No Extra tags, comma-separated.

get_engineering_template

Reads the current effective body template for an engineering doc type (vault override if one exists, otherwise the embedded default), plus the it supports. Read this before proposing an edit with set_engineering_template.

Parameters:

Name Type Required Description
type_key String Yes Doc type: adr, bug, plan, knowledge, idea, session, daily, ticket, or project-moc.

get_project_context

Returns the current state of a project workspace: the project MOC note, summaries of recent work sessions, and per-type listings (decisions, bugs, plans, tickets, backlog, knowledge, daily). Reads files fresh from disk, so edits made in Obsidian moments ago are always reflected. Call this before resuming work on a project.

Parameters:

Name Type Required Description
project String Yes Project name (folder under the projects root). Use list_projects to discover names.
include_content Boolean No Include the full content of every listed document (verbose).
types String No Comma-separated type filter (adr, bug, plan, ticket, idea, knowledge, session, daily). Empty = all.
limit Int32 No Maximum documents listed per type.

list_engineering_templates

Lists the engineering doc types (adr, bug, plan, knowledge, idea, session, daily, ticket, project-moc), whether each has a vault override or falls back to the embedded default, its path, and the it supports. Use before editing a template with set_engineering_template.

list_projects

Lists all project workspaces under the projects root with per-type document counts and the last modification date. Projects can be grouped in plain folders (e.g. ‘Atena/api.core’, ‘Atena/api.common’) — pass the full identifier shown here as the ‘project’ parameter to other engineering tools. Use to discover project names.

log_bug

Logs a bug and its solution for a project as {projects}/{project}/bugs/BUG-{date}-{title}.md. Records the symptom, root cause, and fix so future agents don’t re-debug solved problems. Scaffolds the project folder structure on first use.

Parameters:

Name Type Required Description
project String Yes Project name (folder under the projects root).
title String Yes Short bug title, e.g. ‘Index race on startup’.
symptom String Yes Observed symptom: what failed and how it manifested.
root_cause String Yes The actual root cause found.
fix String Yes The fix that was applied (or should be applied if still open).
status String No Bug status: open or fixed.
related_files String No Related source files, comma-separated (e.g. ‘src/a.ts, src/b.ts’).
tags String No Extra tags, comma-separated.

record_adr

Records an architecture decision record (ADR) for a project as {projects}/{project}/decisions/ADR-NNNN-{title}.md with sequential numbering. Scaffolds the project folder structure on first use. To supersede an old ADR later, change its status with update_frontmatter.

Parameters:

Name Type Required Description
project String Yes Project name (folder under the projects root). Use list_projects to discover existing ones.
title String Yes Short decision title, e.g. ‘Use PostgreSQL for persistence’.
context String Yes The context: what problem or forces led to this decision.
decision String Yes The decision taken, stated in full sentences.
consequences String Yes Consequences of the decision (positive and negative).
alternatives String No Alternatives that were considered and why they were rejected.
status String No ADR status: proposed, accepted, or superseded.
tags String No Extra tags, comma-separated.

set_engineering_template

Creates or updates the vault override template for an engineering doc type at {templates}/kioku/{type_key}.md (always overwrites, unlike create_template). Pass reset_to_default=true to delete the override and revert to the embedded default. Never triggers Templater evaluation: this writes the template itself, which is only evaluated later when a note is generated from it.

Parameters:

Name Type Required Description
type_key String Yes Doc type: adr, bug, plan, knowledge, idea, session, daily, ticket, or project-moc.
content String No New template body content. Ignored when reset_to_default=true.
reset_to_default Boolean No Delete the vault override and revert to the embedded default instead of writing.

setup_agent_workflow

Sets up the agent workflow structure in the vault: creates the projects and knowledge root folders, copies the default document templates (adr, bug, plan, knowledge, idea, session, daily, ticket, project-moc) into {templates}/kioku/ so the user can edit them in Obsidian, and documents the configuration in .kioku/config.yml. Fully idempotent: never overwrites existing files or human edits.

Parameters:

Name Type Required Description
project String No Optional project to scaffold (creates its folder structure and MOC note).
write_templates Boolean No Copy the default templates into the vault’s templates folder (skips existing files).
patch_config Boolean No Append a commented reference block to .kioku/config.yml if not present.

GenerationTools

generate_flashcards

Generates spaced-repetition flashcards from a note locally using Ollama (no cloud calls). Formats: ‘spaced-repetition’ (Q::A markdown for the Obsidian Spaced Repetition plugin, default), ‘anki-csv’ (front,back,tags CSV for Anki import), or ‘cloze’ (==hidden text== cloze cards for the Spaced Repetition plugin). Requires KIOKU_GEN_MODEL configured and Ollama running with that model pulled. Treat the cards as a draft to review before studying — quality depends on the configured model.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to generate flashcards from.
count Int32 No Number of flashcards to generate (default: 10).
format String No Output format: ‘spaced-repetition’ (default), ‘anki-csv’, or ‘cloze’.
output_note String No Path to write the flashcards to. Default: ‘Flashcards/{note}.md’ (‘.csv’ for anki-csv, in the assets folder).
dry_run Boolean No Preview the generated flashcards without writing any file.

summarize_note

Summarizes a note locally using Ollama (no cloud calls). Styles: ‘bullets’ (default), ‘paragraph’, or ‘eli5’ (explain like I’m 5). Requires KIOKU_GEN_MODEL configured and Ollama running with that model pulled. Treat the output as a local draft, not a final answer — quality depends on the configured model.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to summarize.
style String No Summary style: ‘bullets’ (default), ‘paragraph’, or ‘eli5’.
max_words Int32 No Approximate maximum word count for the summary (default: 150).

GitTools

commit_staged

Commits all staged changes with the given message. Returns an informational message if there is nothing to commit.

Parameters:

Name Type Required Description
message String Yes Commit message describing the changes.

fix_merge_conflicts

Scans all Markdown notes in the vault for Git merge conflict markers («««<, =======, »»»>). Returns a list of affected notes with the conflicting sections. Does not modify any files — use resolve_merge_conflict to resolve conflicts. Does not require Obsidian to be running.

Parameters:

Name Type Required Description
folder String No Folder to scan (vault-relative). Leave empty to scan the entire vault.

get_git_status

Shows the current git status of the vault repository (modified, added, deleted files).

list_git_commits

Lists the most recent git commits in the repository.

Parameters:

Name Type Required Description
max_count Int32 No Maximum number of commits to return (default: 10)

resolve_merge_conflict

Resolves a specific Git merge conflict in a note by choosing one version. Use ‘ours’ to keep the HEAD version, ‘theirs’ to keep the incoming version, or ‘both’ to concatenate both versions. Does not require Obsidian to be running. The FileSystemWatcher will automatically re-index the note after resolution.

Parameters:

Name Type Required Description
note String Yes Name or vault-relative path of the note with conflicts.
conflict_index Int32 No Index of the conflict to resolve (0-based). Use -1 to resolve all conflicts at once.
version String No Which version to keep: ‘ours’ (HEAD), ‘theirs’ (incoming), or ‘both’.

stage_all

Stages all changes across the entire vault using git add -A. Includes modified, deleted, and new (untracked) files.

Parameters:

Name Type Required Description
dry_run Boolean No If true, only reports what would be staged without running git add.

stage_note

Stages a note for commit using git add. Prepares the file to be included in the next commit.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to stage.
dry_run Boolean No If true, only reports what would be staged without running git add.

unstage_note

Unstages a previously staged note using git restore –staged. Removes the file from the staging area without discarding changes.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to unstage.

GraphAnalysisTools

Applies accepted link suggestions: appends (or extends) a section at the end of a note with wikilinks to the given targets. Idempotent — targets already linked from the note are skipped, so running it again with the same targets adds nothing new. Set dry_run=true to preview without writing.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to add links to.
targets String Yes Comma-separated list of target note names/paths to link.
section String No Heading for the links section (default: ‘Related’).
dry_run Boolean No If true, previews the change without writing any file.

find_graph_islands

Finds connected components in the graph smaller than a threshold (graph islands). Small isolated clusters often indicate notes that should be linked to the main graph.

Parameters:

Name Type Required Description
threshold Int32 No Maximum size of a connected component to be considered an island (default: 3).

find_unlinked_notes

Finds all notes with no outgoing links and no backlinks (completely isolated from the graph).

measure_vault_density

Computes vault graph density metrics: average links per note, percentage of notes with backlinks, connectivity profile.

Suggests wikilinks that don’t exist yet. With ‘note’: semantic candidates for that note, excluding any pair already linked in either direction. Without ‘note’ (vault-wide mode): prioritizes orphaned notes and small graph islands, proposing a bridge for each. Requires Ollama for semantic scoring — per-note mode fails without it; vault-wide mode degrades to a structural report of orphans/islands with no specific targets.

Parameters:

Name Type Required Description
note String No Name or path of a note to suggest links for. Leave empty for vault-wide mode (orphans + islands).
max_suggestions Int32 No Maximum number of suggestions to return.
min_similarity Single No Minimum similarity score 0.0–1.0 (default: 0.7).

KnowledgeGraphTools

get_concept_map

Returns a JSON graph centered on a specific note: nodes (notes) and edges (links). Edges include outgoing wikilinks, backlinks, and (optionally) semantic similarity. Use ‘depth’ to control traversal depth (1=direct links, 2=links of links). Use ‘max_nodes’ to limit graph size. The graph JSON can be visualized with tools like Obsidian Graph View, D3.js, or Cytoscape.

Parameters:

Name Type Required Description
note String Yes Name or path of the center note for the concept map.
depth Int32 No Traversal depth: 1 = direct links only, 2 = links of links (default: 2, max: 3).
max_nodes Int32 No Maximum number of nodes to include (default: 50, max: 150).

get_knowledge_timeline

Returns notes ordered chronologically by their frontmatter ‘date’ field. Useful for reviewing the evolution of ideas over time. Optionally filter by tag, folder, or date range. Notes without a ‘date’ frontmatter field are excluded.

Parameters:

Name Type Required Description
tag String No Filter by tag (without #). Leave empty for all notes.
folder String No Folder path relative to vault root. Leave empty for all folders.
date_from String No Start date (inclusive) in YYYY-MM-DD format. Leave empty for no lower bound.
date_to String No End date (inclusive) in YYYY-MM-DD format. Leave empty for no upper bound.
max_results Int32 No Maximum number of notes to return (default: 50, max: 200).

get_vault_snapshot

Returns a comprehensive snapshot of the vault in a single call: folder tree with note counts, top tags by frequency, frontmatter coverage stats, and recent activity summary. Replaces the need to call list_notes + get_vault_stats + multiple get_note_metadata.

NoteCommandTools

add_tag

Adds one or more tags to an existing note.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
tags String Yes Tag(s) to add (comma-separated).

append_to_note

Appends text to the end of an existing note. Ideal for log notes or journals where the agent records entries.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
content String Yes Text to append to the end of the note (in Markdown).
add_separator Boolean No If true, appends a horizontal separator (—) before the new content.

create_note

Creates a new note in the Obsidian vault with frontmatter and content. If the note already exists, returns an error — use update_note_content to modify it.

Parameters:

Name Type Required Description
name String Yes Name of the note (without .md extension). Can include subfolders: ‘Projects/My Note’.
content String Yes Content of the note body (in Markdown).
tags String No Tags to add in the frontmatter (comma-separated). E.g. ‘ai, project, draft’.
type String No Note type for frontmatter (e.g. ‘note’, ‘project’, ‘area’, ‘resource’).
status String No Status of the note (e.g. ‘draft’, ‘published’).

delete_note

Deletes a note from the vault by moving it to .trash folder (recoverable). Set permanent=true to delete immediately (irreversible). When dry_run is true, only reports what would be deleted without modifying the vault.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to delete.
dry_run Boolean No If true, only reports what would be deleted without modifying the vault.
permanent Boolean No If true, deletes permanently instead of moving to trash. Default: false (soft delete).

move_note

Moves a note to another folder in the vault. By default, rewrites inbound full-path wikilinks (e.g. [[Folder/Note]]) that reference the note’s old location; bare-name links (e.g. [[Note]]) are left as-is since the note’s name doesn’t change and Obsidian resolves them across folders. Set update_links=false to skip rewriting. Set dry_run=true to preview the move and link updates without modifying any file.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to move.
destination_folder String Yes Destination folder (relative to the vault). E.g. ‘Archive/2024’
update_links Boolean No If true (default), rewrites inbound full-path wikilinks to the note’s new location.
dry_run Boolean No If true, previews the move and link updates without modifying any file.

prepend_to_note

Prepends text to the beginning of a note body (just after the YAML frontmatter).

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
content String Yes Text to prepend (in Markdown).

remove_tag

Removes one or more tags from an existing note.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
tags String Yes Tag(s) to remove (comma-separated).

rename_note

Renames a note in the vault. The new name can include subfolders. By default, rewrites inbound wikilinks (bare name, full path, aliases, headings, block references, embeds) to point to the new name. Links whose bare name is shared by another note are left untouched and reported, since they can’t be safely disambiguated. Set update_links=false to skip rewriting. Set dry_run=true to preview the rename and link updates without modifying any file.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to rename.
new_name String Yes New name of the note (without .md extension, e.g. ‘New Folder/New Name’).
update_links Boolean No If true (default), rewrites inbound wikilinks to the note’s new name.
dry_run Boolean No If true, previews the rename and link updates without modifying any file.

update_frontmatter

Updates or adds fields in the YAML frontmatter of an existing note. Only modifies specified fields, the rest remains intact.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
tags String No New tags (replaces existing ones, comma-separated). Leave empty to not modify, or use clear_tags to remove all tags.
status String No New status (e.g. ‘published’, ‘draft’, ‘archived’). Leave empty to not modify.
type String No New note type. Leave empty to not modify.
clear_tags Boolean No If true, removes all tags regardless of the ‘tags’ argument.

update_note_content

Replaces the body of an existing note keeping its YAML frontmatter intact.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
content String Yes New content of the body of the note.

NoteQueryTools

filter_notes

Filters notes by YAML frontmatter metadata. All parameters are optional — combined with AND. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
tag String No Filter by tag (e.g. ‘project’, ‘ai’, ‘reference’).
status String No Filter by frontmatter status (e.g. ‘draft’, ‘published’, ‘archived’).
type String No Filter by note type (e.g. ‘note’, ‘project’, ‘area’).
date_from String No Minimum date in frontmatter (format: YYYY-MM-DD).
date_to String No Maximum date in frontmatter (format: YYYY-MM-DD).
format String No Output format: ‘text’ (default) or ‘json’.

find_similar_notes

Finds notes conceptually similar to a given note using semantic embeddings. Unlike search_notes_semantic (which takes a text query), this tool takes a note name and finds notes similar to it — useful for discovering hidden connections in the vault. Requires Ollama.

Parameters:

Name Type Required Description
note String Yes Name or path of the source note.
max_results Int32 No Maximum number of similar notes to return (default: 10).
min_score Single No Minimum similarity score 0.0–1.0 (default: 0.5).

Returns all notes linking to the specified note via [[wikilinks]]. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
note_name String Yes Name of the target note (without .md extension).
format String No Output format: ‘text’ (default) or ‘json’.

get_note_embedding

Returns diagnostic information about the embedding vector of a note. Shows the vector dimensions and a preview of the first values. Use to verify that a note has been indexed for semantic search.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.

get_note_metadata

Reads only the YAML frontmatter metadata of a note, without loading its full content. More efficient than read_note when only metadata is needed. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
format String No Output format: ‘text’ (default) or ‘json’.

Returns all wikilinks outgoing from the specified note. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
format String No Output format: ‘text’ (default) or ‘json’.

get_vault_stats

Returns general statistics of the vault: total notes, unique tags, folders, and index status. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
format String No Output format: ‘text’ (default) or ‘json’.

inspect_note_tags

Returns the current tag state of a note to help an AI agent decide which new tags to add. Reports existing tags, folder-inherited tags from config.yml auto_tags, and frontmatter fields that must not be duplicated as tags. After reading this, the AI agent should call add_tag with any missing semantic tags.

Parameters:

Name Type Required Description
note String Yes Name or vault-relative path of the note.

list_notes

Lists notes in the vault or a specific folder. Supports pagination via offset and limit. Returns name, relative path, tags, and modified date. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
folder String No Folder to list (relative to the vault). Leave empty to list the entire vault.
limit Int32 No Maximum number of notes to return (default: 50, capped by KIOKU_MAX_RESULTS).
offset Int32 No Number of notes to skip for pagination.
format String No Output format: ‘text’ (default) or ‘json’.

read_note

Reads the full content of an Obsidian note. Accepts note name (without extension), vault-relative path, or absolute path. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
note String Yes Name or path of the note. E.g. ‘My Note’, ‘Projects/Kioku’, ‘/home/user/vault/note.md’
format String No Output format: ‘text’ (default) or ‘json’.

search_notes

Searches notes in the vault by text in title, content, and tags. Returns results ordered by relevance with a snippet of context. Use format=’json’ to receive a structured response.

Parameters:

Name Type Required Description
query String Yes Text to search. Can include multiple keywords.
max_results Int32 No Maximum number of results to return (default: 10).
format String No Output format: ‘text’ (default) or ‘json’.

search_notes_hybrid

Searches notes combining keyword and semantic search using Reciprocal Rank Fusion (RRF). Finds notes that match by exact terms AND by conceptual meaning. Best general-purpose search when you are unsure whether to use keyword or semantic search. Requires Ollama for the semantic leg — degrades to keyword-only if Ollama is unavailable.

Parameters:

Name Type Required Description
query String Yes Search query in natural language or keywords.
max_results Int32 No Maximum number of results to return (default: 10).
min_score Single No Minimum RRF score 0.0–1.0 to include a result (default: 0.0 = no filter).
keyword_weight Single No Weight for keyword search leg (default: 1.0).
semantic_weight Single No Weight for semantic search leg (default: 1.0). Set to 0 to disable semantic.

search_notes_semantic

Searches notes by semantic meaning using Ollama embeddings. Finds notes conceptually related to the query even without exact keyword matches. Frontmatter fields (tags, status, type, date, extra fields) are included in the index. Requires Ollama running with the configured embedding model.

Parameters:

Name Type Required Description
query String Yes Natural language query. E.g. ‘notes about stress and burnout’.
max_results Int32 No Maximum number of results to return (default: 10).
min_score Single No Minimum similarity score 0.0–1.0 to include a result (default: 0.4). Use 0 to disable filtering or 0.7 to keep only high-confidence matches.

ObsidianBridgeTools

create_note_ui

Create a note and open it in Obsidian. Creates the file if it does not exist.

Parameters:

Name Type Required Description
path String Yes Vault-relative path of the note to create and open (e.g. ‘Projects/NewNote.md’).

fold_all_headings

Folds all headings in the active Obsidian note (collapses all sections).

get_active_note_in_obsidian

Returns metadata of the note currently open in Obsidian.

get_obsidian_status

Returns Obsidian bridge status: whether the plugin is ready, the Obsidian and Kioku plugin versions, and the open vault’s path and name.

get_open_notes_in_obsidian

Returns the list of all notes currently open in Obsidian tabs.

get_selection_in_obsidian

Returns the text currently selected in the active Obsidian note, if any.

insert_at_cursor

Insert text at the cursor position in the active Obsidian note.

Parameters:

Name Type Required Description
text String Yes Text to insert at the current cursor position.

open_in_split

Open a note in a new split pane in Obsidian.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to open in a split pane.

open_note_in_obsidian

Opens and focuses a specific note within the Obsidian application.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to open.

replace_selection

Replace the current text selection in the active Obsidian note.

Parameters:

Name Type Required Description
text String Yes Text to replace the selection with.

scroll_to_block

Scroll the active Obsidian note to a specific block ID (e.g. ‘^blockid’).

Parameters:

Name Type Required Description
block_id String Yes Block ID to scroll to (without the ^ prefix, e.g. ‘abc123’).

toggle_reading_mode

Toggles the active Obsidian note between edit mode and reading (preview) mode.

trigger_obsidian_command

Triggers an internal Obsidian command by its unique identifier (command ID).

Parameters:

Name Type Required Description
command_id String Yes Unique ID of the command (e.g., ‘app:toggle-left-sidebar’, ‘workspace:close-others’).

unfold_all_headings

Unfolds all headings in the active Obsidian note (expands all sections).

PluginIntegrationTools

apply_template

Creates a new note from a Templater template via the Obsidian plugin bridge. Requires Obsidian to be open with the Kioku plugin and Templater plugin enabled. The template is instantiated by Templater — all template variables (tp.date, tp.file, etc.) are evaluated.

Parameters:

Name Type Required Description
template_path String Yes Vault-relative path to the Templater template file. Example: ‘Templates/Daily Note.md’
target_note String No Optional: vault-relative path of an existing note to apply the template to.

get_installed_plugins

Returns a list of all installed Obsidian plugins with their ID, name, version, author, and enabled status. Requires Obsidian to be open with the Kioku plugin. Use this to check if a required plugin (e.g. ‘dataview’, ‘templater-obsidian’) is available before calling plugin-dependent tools.

lint_note

Runs the Obsidian Linter plugin on a specific note or the currently active note. Requires Obsidian to be open with the Kioku plugin and the ‘obsidian-linter’ plugin enabled. Linter fixes formatting issues according to the user’s configured Linter rules.

Parameters:

Name Type Required Description
note String No Vault-relative path of the note to lint. Leave empty to lint the currently active note.

lint_vault

Runs the Obsidian Linter plugin on all notes in the vault. Requires Obsidian to be open with the Kioku plugin and the ‘obsidian-linter’ plugin enabled. This is a long-running operation for large vaults.

query_dataview

Executes a Dataview DQL query via the Obsidian plugin bridge and returns results as JSON. Requires Obsidian to be open with the Kioku plugin and Dataview plugin enabled. Supports TABLE, LIST, TASK queries and inline expressions.

Parameters:

Name Type Required Description
query String Yes Dataview DQL query. Example: ‘TABLE status, tags FROM “Projects” WHERE status = “active” SORT file.mtime DESC’

ResearchTools

export_bibtex

Reconstructs a BibTeX (.bib) document from literature notes that carry a ‘citekey’ in frontmatter, including notes originally created by import_bibtex. Complements export_citations (which exports Markdown/BibTeX stubs) with a full round-trip-capable export.

Parameters:

Name Type Required Description
folder String No Folder to scan (vault-relative). Leave empty to scan the entire vault.

export_citations

Exports citation keys found in note frontmatter (‘citekey’ field) as a BibTeX stub list or Markdown table. Useful for building a bibliography from your literature notes. Each note with a ‘citekey’ in its extra frontmatter fields is included.

Parameters:

Name Type Required Description
format String No Export format: ‘bib’ for BibTeX stubs, ‘markdown’ for a Markdown table (default: markdown).
folder String No Folder to scan (vault-relative). Leave empty to scan the entire vault.

export_note

Exports a note as HTML (rendered from Markdown using Markdig). Returns a self-contained HTML document with inline styles. Useful for sharing notes without requiring Obsidian.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to export.
format String No Output format: only ‘html’ is supported.

get_citation_graph

Builds a citation graph from literature notes with a ‘citekey’ in frontmatter: the most-cited sources and orphan sources that were imported but never cited anywhere in the vault. A citation is counted from either a [[wikilink]] to the source note or an inline [@citekey]/@citekey mention. Complements get_literature_gap, which looks at citations from the opposite direction.

Parameters:

Name Type Required Description
folder String No Folder to scan for source (literature) notes. Leave empty to scan the entire vault. Citing notes may live anywhere regardless of this filter.

get_literature_gap

Identifies citekeys referenced inline in notes (as [@citekey] or @citekey) that do not have a corresponding literature note in the vault. Helps find gaps in your literature review — citations you have referenced but not yet synthesized.

Parameters:

Name Type Required Description
folder String No Folder to scan for literature notes (vault-relative). Leave empty to scan the entire vault.

import_bibtex

Imports a BibTeX (.bib) file or raw BibTeX content as literature notes, one per entry. Parses tolerantly: malformed entries are reported individually rather than aborting the whole import. Deduplicates by ‘citekey’ — re-importing the same file never creates duplicates. All BibTeX fields are stored in frontmatter, so export_bibtex can reconstruct the original entries losslessly. Use dry_run=true to preview before writing.

Parameters:

Name Type Required Description
source String Yes Path to a .bib file (absolute, vault-relative, or CWD-relative), or raw BibTeX content.
folder String No Folder to create literature notes in. Default: the configured ‘literature’ folder, or ‘Literature’.
update_existing Boolean No If a note with the same citekey already exists, refresh its frontmatter fields (body is left untouched). Default: skip existing entries.
dry_run Boolean No Preview what would be created/updated/skipped without writing any files.

share_as_gist

Publishes a note as a GitHub Gist and returns the URL. Requires the KIOKU_GITHUB_TOKEN environment variable to be set with a GitHub personal access token that has the ‘gist’ scope. Gists are public by default; set ‘public’ to false for a secret Gist.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to share.
description String No Gist description shown on GitHub.
public Boolean No Whether the Gist should be public (default: true).

validate_research_notes

Validates that research and literature notes have required metadata fields (citekey, year, authors, status, updated). Returns a report of notes with missing fields for quality assurance.

Parameters:

Name Type Required Description
folder String No Folder to scan for research notes (vault-relative). Leave empty for entire vault.

RestoreTools

list_deleted_notes

Lists notes in the trash folder that can be restored. Shows file paths and how long ago they were deleted.

Parameters:

Name Type Required Description
trash_folder String No Trash folder (vault-relative). Default: ‘.trash’.

restore_note_from_trash

Restores a deleted note from the trash folder back to the vault. Moves the file from .trash to the vault root or a specified destination folder.

Parameters:

Name Type Required Description
note String Yes Name or path of the note in the trash to restore.
destination String No Target folder to restore into (vault-relative). Defaults to vault root.
dry_run Boolean No If true, only reports what would be restored without moving the file.

restore_note_version

Restores a note to a specific git revision using git restore –source. Requires the vault to be a git repository.

Parameters:

Name Type Required Description
note String Yes Name or path of the note.
revision String Yes Git revision (commit hash, branch name, or ref like HEAD~2).

revert_all_uncommitted

Reverts all uncommitted changes across the entire vault using git restore. Discards staged and unstaged changes to tracked files. Untracked files are not affected.

Parameters:

Name Type Required Description
dry_run Boolean No If true, lists files that would be reverted without modifying them.

revert_note

Reverts a note to its last committed version using git restore. Discards all uncommitted changes. Requires the vault to be a git repository.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to revert.

SessionContextTools

end_work_session

Closes the current work session by appending a summary of notes modified since the session started. Updates the session note status to ‘done’. For project sessions, the summary is also written into the ‘## Summary’ section at the top of the note so the next agent reads it first via get_project_context.

Parameters:

Name Type Required Description
session_note String No Name or path of the session note to close. If empty, finds the most recent active session.
summary String No Optional summary or outcome of the session. Strongly recommended for project sessions: it is the handoff for the next agent.
project String No Project name: looks for the active session under {projects}/{project}/sessions/.

get_recent_activity

Returns the N most recently modified notes in the vault, ordered by last modification time. Useful for the agent to quickly understand what the user has been working on.

Parameters:

Name Type Required Description
n Int32 No Maximum number of notes to return.
folder String No Scope to a subfolder (relative to vault root). Leave empty for the full vault.

get_session_activity

Returns all notes created or modified during a specific work session.

Parameters:

Name Type Required Description
session_note String Yes Name or path of the session note (e.g., ‘2025-06-25’ or ‘Sessions/2025-06-25’).

get_work_context

Returns a snapshot of the vault’s current work state: notes in inbox folders, notes with status ‘draft’, and the most recently modified notes. Call this at the start of a session to quickly understand where to resume work.

Parameters:

Name Type Required Description
inbox_folder String No Folder treated as the inbox (relative to vault root). Default: ‘Inbox’.
max_per_section Int32 No Maximum number of recent notes to show in each section.

list_work_sessions

Lists all work session notes with their dates, status (active/done), and duration if closed.

Parameters:

Name Type Required Description
sessions_folder String No Folder where session notes are stored (relative to vault root). Auto-detects if empty.
project String No Project name: lists the sessions under {projects}/{project}/sessions/.

start_work_session

Creates a new work session note with a timestamp header. Records the current date, time, and optional session goal. With a project, the session is stored in that project’s sessions subfolder as {date-time}-{agent}.md so multiple agents can hand work off to each other; the agent name is auto-detected from the MCP client when not provided.

Parameters:

Name Type Required Description
session_name String No Optional name for the session (e.g. ‘Thesis Chapter 3 Review’). Defaults to today’s date.
sessions_folder String No Folder where session notes are stored (relative to vault root). Ignored when project is set.
goal String No Optional goal or focus for this session.
project String No Project name: stores the session under {projects}/{project}/sessions/.
agent String No Agent running this session (claude, codex, …). Auto-detected from the MCP client if empty.
server McpServer No  

TaskManagementTools

complete_task

Marks a task as completed (‘- [x]’) at the specified line in a note. Use list_tasks first to find the note name and line number of the task.

Parameters:

Name Type Required Description
note String Yes Name or path of the note containing the task.
line_number Int32 Yes 1-based line number of the task within the note.

list_overdue_tasks

Lists all open tasks whose due date (📅 YYYY-MM-DD in Obsidian Tasks format) is in the past. Only scans open tasks — completed tasks are never overdue.

Parameters:

Name Type Required Description
folder String No Folder to restrict the search (relative to vault root). Leave empty to scan the entire vault.

list_tasks

Lists all tasks (open and completed) across the vault or within a specific note. Supports filtering by completion status. Returns task text, note name, line number, due date, and inline tags.

Parameters:

Name Type Required Description
note String No Name or path of a specific note to scan. Leave empty to scan the entire vault.
status String No Filter by completion status: ‘open’ (default), ‘done’, or ‘all’.
folder String No Folder to restrict the search (relative to vault root). Only used when ‘note’ is empty.

list_tasks_by_tag

Lists all open tasks that match a given tag. Matches both frontmatter tags of the note and inline ‘#tag’ annotations in the task text. Returns task text, note, line number, and due date.

Parameters:

Name Type Required Description
tag String Yes Tag to filter by (without the ‘#’ prefix). E.g. ‘project’, ‘urgent’.
include_done Boolean No Include completed tasks too (default: false — open tasks only).

reopen_task

Reopens a completed task by changing ‘- [x]’ back to ‘- [ ]’. Use list_tasks with status=’done’ first to find the note and line number.

Parameters:

Name Type Required Description
note String Yes Name or path of the note containing the task.
line_number Int32 Yes 1-based line number of the task within the note.

UtilityTools

get_index_status

Returns the current status of the in-memory index: number of notes, embeddings cached, Ollama availability, last update time, whether the index is ready, and — if a re-embedding backlog is being processed in the background — its progress (backlog, rate, ETA).

ping

Verifies that the Kioku MCP server is active and responding.

rebuild_index

Forces a full re-indexing of the entire vault. Useful if the index got out of sync or massive changes were made outside of Obsidian.

VaultOrganizationTools

audit_vault

Generates a health report of the vault: notes without tags, without dates, without content, broken wikilinks, and notes not updated in a long time.

Parameters:

Name Type Required Description
stale_days Int32 No Flag notes not updated in this many days (default: 90).

Scans the entire vault for broken wikilinks — links that point to notes that do not exist.

Parameters:

Name Type Required Description
folder String No Folder to scope the scan (relative to vault root). Leave empty for full vault.

find_duplicate_notes

Detects notes with very similar titles or content that may be duplicates. Always operates as a dry run — reports findings without modifying the vault.

Parameters:

Name Type Required Description
threshold Single No Similarity threshold (0.0–1.0). Higher = only very similar notes. Default: 0.8.
max_results Int32 No Maximum number of duplicate pairs to report.

merge_tags

Merges two tags into one across the entire vault. All notes containing source_tag will have it replaced with target_tag. Use dry_run=true to preview changes without modifying files.

Parameters:

Name Type Required Description
source_tag String Yes The tag to merge away (will be replaced).
target_tag String Yes The tag to merge into (will remain).
dry_run Boolean No If true, returns a preview without modifying any files.

normalize_tags

Normalizes tag formatting across all notes in the vault. Converts tags to lowercase and replaces spaces/underscores with hyphens. Use dry_run=true to preview changes without modifying files.

Parameters:

Name Type Required Description
dry_run Boolean No If true, returns a preview of what would change without modifying any files.

process_inbox

Batch-triages notes in an inbox folder: for each note, suggests a destination folder (same scoring as suggest_folder), tags (keyword overlap + destination folder inheritance), and up to 3 related notes (semantic similarity, when Ollama embeddings are available). apply=false (default) returns a numbered plan without touching any file. apply=true executes it: moves each note (updating inbound full-path wikilinks), adds the suggested tags, and appends a Related section with the suggested links. This moves files in batch — review the plan first. If something goes wrong, revert_all_uncommitted (or git) can undo an apply.

Parameters:

Name Type Required Description
inbox_folder String No Inbox folder (relative to vault root). Leave empty to use folders.inbox from .kioku/config.yml, falling back to ‘Inbox’.
max_notes Int32 No Maximum number of notes to process in one call (default: 20).
apply Boolean No If true, executes the plan (move + tag + link). Default false only previews it.

reclassify_note

Move a note to the most appropriate folder based on its content. Uses the same scoring as suggest_folder.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to reclassify.
dry_run Boolean No If true, returns the suggested destination without moving the file.

rename_tag_globally

Renames a tag in every note across the entire vault. Use dry_run=true to preview which notes would be affected without modifying files.

Parameters:

Name Type Required Description
old_tag String Yes The tag to rename (without the # prefix).
new_tag String Yes The new tag name (without the # prefix).
dry_run Boolean No If true, returns a preview of which notes would change without modifying any files.

suggest_folder

Suggest the most appropriate vault folder(s) for a note based on content similarity to existing notes.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to suggest a folder for.
max_suggestions Int32 No Maximum number of folder suggestions to return.

suggest_tags

Suggests existing tags from the vault that are relevant to the given note’s content. Uses keyword overlap between the note’s text and existing tags.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to suggest tags for.
max_suggestions Int32 No Maximum number of tag suggestions to return.

WorkflowTools

create_note_from_template

Creates a new note by applying a template with variable substitution. Replaces placeholders with the provided values. Built-in variables: (today), (now), (note name).

Parameters:

Name Type Required Description
template_name String Yes Name of the template (without .md extension). Use list_templates to see available templates.
target_path String Yes Path for the new note (without .md extension). Can include subfolders: ‘Projects/My Note’.
variables Dictionary`2 No Variables to inject into the template as key-value pairs. Example: {“title”: “My Note”, “status”: “draft”, “author”: “David”}. Built-in variables (date, time, title) are auto-populated if not provided.
templates_folder String No Templates folder relative to vault root. Leave empty to auto-detect.

create_template

Creates a new template file in the vault’s templates folder. Use syntax for placeholders that will be filled when the template is used.

Parameters:

Name Type Required Description
name String Yes Template name (without .md extension).
content String Yes Template content in Markdown. Use for placeholders.
templates_folder String No Templates folder relative to vault root. Leave empty to auto-detect (defaults to ‘Templates’).

extract_action_items

Extracts all unchecked task checkboxes from a note and optionally consolidates them into a new action items note. Returns the found tasks even in dry-run mode.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to scan for action items.
output_note String No If provided, creates a new note at this path containing the extracted action items.
dry_run Boolean No If true, only reports found action items without creating the output note.

generate_digest

Generates a digest note summarizing recent vault activity: notes created or modified, overdue and upcoming tasks, newly orphaned notes, and draft/inbox notes awaiting review. period=’day’ (default) covers today since local midnight; period=’week’ covers the last 7 days. Written as ‘Digest {yyyy-MM-dd}.md’ in the ‘daily’ folder (folders.daily in .kioku/config.yml, falling back to target_folder, then the vault root) — re-running on the same day replaces the note, since it’s fully regenerated each time. If local generation (KIOKU_GEN_MODEL) is available, adds a short AI-generated Summary section; otherwise the digest is purely structural. Set dry_run=true to preview the markdown without writing anything.

Parameters:

Name Type Required Description
period String No Digest period: ‘day’ (default, since local midnight) or ‘week’ (last 7 days).
target_folder String No Destination folder (relative to vault root) used only if folders.daily isn’t configured. Leave empty for the vault root.
dry_run Boolean No If true, returns the digest markdown without writing any file.

list_templates

Lists all available note templates in the vault’s templates folder. Returns template names and the variables they accept ( syntax).

Parameters:

Name Type Required Description
templates_folder String No Templates folder relative to vault root. Leave empty to auto-detect.

ZettelkastenTools

create_folder_readme

Creates a folder note (named after the folder, e.g. Projects.md inside Projects/) listing all its notes. Compatible with the Obsidian Folder Notes plugin. Acts as a lightweight, non-Zettelkasten alternative to create_moc. Overwrites any existing note with the same name in that folder. Only supports folders up to level 2 depth (e.g. ‘Projects’ or ‘Areas/Work’).

Parameters:

Name Type Required Description
folder String Yes Vault-relative folder path (max level 2, e.g. ‘Projects’ or ‘Areas/Work’).

create_literature_note

Creates a structured literature note for a book, article, or paper using the standard Zettelkasten literature note template. The note includes fields for author, year, title, source, and a summary section.

Parameters:

Name Type Required Description
title String Yes Title of the work (book, article, paper, etc.).
author String Yes Author(s) of the work.
year String Yes Publication year (e.g. ‘2023’).
source String No Source or URL (e.g. ‘https://…’, ‘ISBN 978-…’).
summary String No Brief summary or key insight from the work.
tags String No Tags to add in frontmatter (comma-separated). ‘literature’ is always included.
folder String No Folder to save the note in. Default: ‘Literature’.

create_moc

Generates a Map of Content (MOC) note for a given vault folder. The MOC lists all notes in the folder with their tags and a brief description, organized hierarchically by subfolder. Overwrites any existing MOC for the same folder.

Parameters:

Name Type Required Description
folder String Yes Vault-relative folder path to generate the MOC for (e.g. ‘Projects’, ‘Areas/Work’).
output_name String No Name of the output MOC note (without extension). Default: ‘-MOC'.
output_folder String No Folder to save the MOC note. Defaults to the same folder being mapped.

create_zettel

Creates a Zettelkasten note with a unique timestamp ID (YYYYMMDDHHMMSS) as the filename. Optionally finds semantically related notes and adds wikilinks to them. Returns the created note’s path and ID.

Parameters:

Name Type Required Description
title String Yes Title of the note (used as the H1 heading inside the note).
content String Yes Main content of the note in Markdown.
tags String No Tags to add in the frontmatter (comma-separated). E.g. ‘idea, philosophy’.
folder String No Folder inside the vault to create the note in. Leave empty to use the configured default, or auto-detect via content similarity if no default is set.
link_related Boolean No If true, automatically finds up to 5 semantically related notes and adds [[wikilinks]] to them.
max_links Int32 No Maximum number of related notes to link (default 5). Only used when link_related=true.

Finds notes that are semantically related to a given note and appends wikilinks to them in a ‘Related’ section at the end of the note. Requires Ollama to be running (semantic search). Does not add links that already exist in the note.

Parameters:

Name Type Required Description
note String Yes Name or path of the note to find related notes for and link.
max_links Int32 No Maximum number of related notes to link (default 5).
min_similarity Double No Minimum similarity score (0.0–1.0). Notes below this threshold are excluded. Default: 0.65.

Prompts

literature_review

Collects existing evidence on a topic from the vault and synthesizes it with citations.

Arguments:

Name Type Required Description
topic String Yes Topic or research question to review.

log_bugfix

Logs a bug and its fix for a project so future agents don’t re-debug solved problems.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).

plan_feature

Drafts an implementation plan for a feature, checking prior art in the vault first.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).
feature String Yes Feature to plan.

process_inbox

Guides the smart-inbox triage workflow: propose a plan, confirm it, then apply it.

Arguments:

Name Type Required Description
inbox String No Inbox folder to process (relative to vault root). Leave empty to use the configured default.

record_decision

Records an architecture decision (ADR) for a project, superseding older ADRs when needed.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).
topic String Yes Topic of the decision, e.g. ‘database choice’.

research_digest

Summarizes recent reading/research activity in the vault and lists open questions.

Arguments:

Name Type Required Description
folder String No Folder to scope the review to (relative to vault root). Leave empty for the whole vault.

resume_project

Loads a project’s full engineering context (decisions, plans, bugs, session handoffs) before resuming work.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).

weekly_review

Runs a weekly vault review: digest, overdue tasks, orphaned notes, and link suggestions.

work_on_ticket

Reads a human-written ticket, structures it, and creates a linked implementation plan.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).
ticket String Yes Ticket note name or path (under the project’s tickets folder).

write_daily

Drafts today’s daily note for a project from recent sessions and the previous daily.

Arguments:

Name Type Required Description
project String Yes Project name (folder under the projects root).

Resources

kioku://note/{path}

Full content (including frontmatter) of a note, resolved by vault-relative path or name.

MIME type: text/markdown

kioku://vault/stats

Snapshot of vault statistics: note count, tag count, folder count, index status.

MIME type: application/json


Total tools: 128

Total prompts: 10

Total resources: 2