Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SEEKSTONE_VAULTYesAbsolute path to your Obsidian vault.
SEEKSTONE_LOG_FILENoAbsolute path; when set, JSON-line logs are appended here (size-rotated).
SEEKSTONE_LOG_LEVELNoLog level: error | warn | info (default) | debug.
SEEKSTONE_WATCH_POLLNoSet to '1' to stat-poll for changes instead of native OS events.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
searchA

Full-text search across the vault. Returns ranked excerpts (~120 chars, tunable) — not full notes — to minimise context usage. Supports fuzzy matching and prefix search; with SEEKSTONE_SEMANTIC=1, mode "semantic"/"hybrid" searches by meaning via a local embedding model.

query_notesA

Structured metadata query — filter notes by frontmatter key/value predicates, tag, folder, modified time, and size. Returns compact rows (path + title by default; opt into more via select), not note content. Use this instead of search when filtering by properties rather than text.

context_packA

Assemble everything needed to ANSWER a natural-language question in one call, under a strict byte budget (default 2048): ranked excerpts, linked neighbor notes (backlinks/outlinks) with one-line summaries, and follow-up source paths. Use search to locate notes and query_notes for metadata filters; use context_pack when you want answer-ready context without multiple round-trips. Empty excerpts with confidence "none" or "low" means the vault lacks coverage — do not infer content.

read_noteA

Read a note or a span of it — by heading section, block reference, or line range. Returns structured JSON with the content, bytes returned, total note size, and a contentHash to pass as prevHash to edit tools for compare-and-swap. Use search or outline_note first to find the right path and section names.

list_notesB

List notes, optionally filtered by folder prefix or tag.

list_tagsA

List all tags in the vault with usage counts. Supports substring filtering, minimum count threshold, and sort order. Nested tags (e.g. area/work) include a parent field.

create_noteA

Create a new note at a vault-relative path. Optionally sets frontmatter and body content. Parent directories are created automatically. Fails if the note already exists unless overwrite is true (prevHash may guard the overwrite).

delete_noteA

Delete a note. By default it is moved to the vault .trash/ folder (recoverable by moving it back); pass permanent: true to remove it outright.

move_noteA

Move or rename a note to a new vault-relative path, rewriting wikilinks and markdown links in other notes that point at it so nothing breaks (links inside fenced code blocks are left alone). Parent directories at the destination are created automatically. Fails if the destination already exists unless overwrite is true.

rename_headingA

Rename a heading in a note and rewrite every [[note#heading]] wikilink and embed across the vault so references keep working — aliases preserved, fenced code blocks left alone. Served from the warm backlink index, no vault scan. Heading matching is case-insensitive; with duplicate headings the first match wins, mirroring Obsidian link resolution.

append_noteA

Append text to a note body without touching the frontmatter. Safe for meeting notes, daily logs, and append-only workflows.

patch_frontmatterA

Set, update, or delete frontmatter keys without reordering existing keys or changing quote style. Pass null as a value to delete a key.

outline_noteA

Return a note's structure — heading tree with offsets, block-reference anchors, and frontmatter key list — without returning any prose. Use this before section reads or patches to discover what sections exist at a fraction of the cost of reading the full note.

patch_noteA

Surgically edit a section of a note — targeted by heading or block reference — without rewriting the whole file. Operations: append (add after section), prepend (add after heading line), replace (swap section content). Frontmatter is never touched.

get_backlinksA

Return every note that links to the target note, with the source line and an optional excerpt. Results come from the pre-built reverse-link index so this is a fast, pure index lookup. Sort order: source path ascending.

get_linksA

Return all outgoing wikilinks and embeds from a note. Each link is marked resolved (with target path) or unresolved. Duplicate targets are de-duplicated; results sorted by line number.

replace_in_noteA

Find and replace text within a note body. Supports literal and regex search, case sensitivity, whole-word matching, and a replacement limit. Frontmatter is never touched. Use dryRun to preview matches before writing.

get_periodic_noteA

Get the path and existence status of a periodic note (daily, weekly, monthly, quarterly, or yearly) for a given date. Reads folder/format config from .obsidian/daily-notes.json (daily) or the periodic-notes plugin data.json. Optionally creates the note from the configured template if it is missing.

append_periodic_noteA

Append text to a periodic note (daily, weekly, monthly, quarterly, or yearly). Preserves existing frontmatter exactly. Creates the note first (from template if configured) when createIfMissing is true (default).

list_writesA

List recent writes from the journal — every write tool records the pre-image of each file it touches, so any of them can be reverted with undo_write. Returns compact metadata rows (seq, timestamp, tool, paths, undoable), never note content.

undo_writeA

Revert a journaled write: restores every file it touched to its byte-identical pre-write state (a multi-file move or heading rename is restored whole; a delete is restored even if it was permanent). Defaults to the most recent undoable write. Refuses with undo_conflict if a file changed since that write, unless force: true. The undo is itself journaled — undo it to redo.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have clearly distinct purposes — search vs. query_notes vs. list_notes are separated by text, metadata, and folder/tag listing, and the edit tools are differentiated by scope. A few pairs like list_notes/query_notes and append_note/patch_note/replace_in_note could require careful reading, but the descriptions mostly resolve the ambiguity.

Naming Consistency4/5

The set largely follows a verb_noun snake_case convention: get_*, list_*, append_*, patch_*, and create/delete/move/rename are all predictable. Exceptions like search, context_pack, and replace_in_note introduce minor inconsistency but do not undermine readability.

Tool Count4/5

21 tools is on the heavier side, but the count is justified by the broad scope of vault operations: searching, reading, linking, editing, periodic notes, and undo/journaling. Each tool has a real job, so the set feels comprehensive rather than padded.

Completeness5/5

The surface covers the full note lifecycle — create, read, update via multiple surgical edit tools, delete, move, rename, search, metadata querying, link management, periodic notes, and journaled undo. No critical dead ends or obvious missing operations are apparent for an Obsidian-style note vault.

Maintenance

ActivityActive
ResponsivenessWithin a week