Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
EVERKEEP_TOKENNoThe secret token used as the only key for authentication (Bearer header or `private_<token>` path). Set with the flag `--token-file` or the environment variable `EVERKEEP_TOKEN`. Default: a token generated into `<state_dir>/token` on first start.
EVERKEEP_VAULTYesThe directory tree (the vault) that Everkeep's tools work on. Set with the flag `--vault` or the environment variable `EVERKEEP_VAULT`. There is no default; it is required.
EVERKEEP_STATE_DIRNoThe directory where Everkeep keeps its state (token, document cache); must be outside the vault. Set with the environment variable `EVERKEEP_STATE_DIR`. Default is `~/.local/state/everkeep`.

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
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
grep_filesA

Search file CONTENTS by regex, recursively. Per file returns path, rev, line count, then matching line numbers with their text. Long lines are clipped around the match (max_line_length, default 200). Line numbers and rev feed straight into read_text_file offset/limit and edit_file line edits. Documents (PDF, Word, spreadsheets…) are searched in their extracted text: matches as L (p.N / slide N / sheet Name), no rev; documents:false skips them. Other binaries and symlinks are skipped; output is capped and flags truncation when incomplete. To find files by name use search_files.

read_text_fileA

Read one file. Whole file by default; head/tail = N lines from an edge; offset/limit = an arbitrary 1-based line range, which also reports total lines and rev (needed for edit_file line edits). Documents (PDF, DOCX, XLSX, PPTX, ODF, EPUB, MSG…) come as numbered lines with section markers, no rev, read-only; HTML, RTF, EML and FB2 read raw, extract:true gives their text. Several files at once: read_multiple_files; images and page images: read_media_file / read_pdf_page.

read_fileB

DEPRECATED alias of read_text_file.

read_media_fileA

Read an image, audio or PDF file. PDF returns one page (default 1, or "#N" path suffix) as JPEG plus the total page count. For PDF text use read_pdf_text; one PDF page as an image: read_pdf_page.

read_pdf_pageA

Render one PDF page (1-based) as JPEG. Prefer read_pdf_text unless layout or graphics matter.

read_pdf_textA

Text of a PDF, whole or a page range, as numbered lines with page markers (the same numbers as read_text_file). Much cheaper than page images — prefer it; for scans use read_pdf_page.

sqlite_schemaA

Inspect a SQLite database file: schema-neutral, no interpretation of the data. File type is decided by the first 16 bytes, not the extension. Returns table/index/view/trigger DDL from sqlite_master, the journal_mode/page_size/page_count/encoding/user_version/application_id PRAGMAs, the sqlite3 version, whether -wal/-shm siblings exist next to the ORIGINAL file, plus path/size/mtime (UTC and local with numeric offset). A database with no journal (or an empty leftover one) is opened in place and leaves no new files behind; one with a real -wal is read from a private copy instead, cleaned up after the call — wal_copy/wal_copy_ms in the response say whether that happened and how long it took. Either way nothing is ever left next to the original. counts=true adds COUNT(*) per table, off by default — it is a full scan and can take minutes on a large database. counts_timeout_ms is a PER-TABLE budget covering the whole call (spawning sqlite3 and opening the file, not just the COUNT itself) — on a large database file a very small budget can time out even a tiny table. A table that does not finish is null in counts; every such table is listed in counts_incomplete.tables with one shared counts_incomplete.note, not a message repeated per table. The rest of the schema is always returned in full. Call once without counts first, then again with counts only if row counts are actually needed — the DDL comes back in full either way, so a second call re-sends everything already read, which matters on a database with a hundred tables.

sqlite_queryA

Run one read-only SQL statement on a SQLite file (sqlite3 -readonly -safe -json; ATTACH and other escapes are disabled). Must start with SELECT, WITH, VALUES, or EXPLAIN [QUERY PLAN] followed by one of those. Runs wrapped as SELECT * FROM () LIMIT <limit+1>; truncated=true means more rows exist. ";" is allowed only inside string literals, quoted identifiers and comments, plus one trailing. Bind parameters (?, :x, @x, $x, #x) are rejected — write values as literals. EXPLAIN describes the wrapped statement. BLOBs are not converted — use hex(col) or length(col). A database with a -wal journal is read from a temporary copy (wal_copy in the response).

read_multiple_filesA

Read several whole files at once (documents as numbered lines, as read_text_file; the trash is skipped). For a line range or rev use read_text_file.

write_fileA

Create or overwrite a file with given content. In a zone with policy overwrite="rev", overwriting an EXISTING file requires its current rev (creating a new one does not); the refusal message carries the rev to use. For a change inside a file use edit_file. Document formats (PDF, DOCX…) are not overwritten.

edit_fileA

Edit a file. Two mutually exclusive edit shapes: {oldText,newText} literal replacement, or line edits (1-based). {startLine,endLine,newText} replaces the inclusive range; newText "" deletes, no trailing newline. Omitting endLine INSERTS before startLine instead of replacing, and startLine = lines+1 appends at EOF. Line edits require rev and are applied bottom-up in one atomic pass, so numbers from a single grep/read stay valid; a stale rev is rejected, never applied. Returns the new rev. dryRun shows the diff. In a zone with policy overwrite="rev" every edit needs rev, including {oldText}; in overwrite="never" zones editing is refused outright. To replace a whole file use write_file. Document formats are read-only.

create_directoryA

Create a directory (and parents); an existing one is not an error. Refused where the zone policy forbids writing.

list_directoryA

List one directory; the first line is the policy in force. Sizes: list_directory_with_sizes; deeper levels: directory_tree.

list_directory_with_sizesA

List a directory with file sizes, sorted by name or size. Without sizes: list_directory.

directory_treeA

Recursive tree view, 2 levels deep. One level: list_directory.

move_fileA

Move or rename a file or directory. Taking a file out of a zone with policy overwrite="rev" requires its current rev, exactly like overwriting it in place; directories are not moved out of a strict zone at all. Use trash_file, not this, to discard something; moving a file out of the trash restores it.

trash_fileA

Discard a file by moving it into the trash of its own zone, keeping its relative path and adding an arrival timestamp to the name. There is no delete: this is the only way to remove something. Fails if the zone has no trash configured. In a zone with overwrite="rev" the current rev is required — you have to read a file before throwing it away. To restore, move_file it back out of the trash.

search_filesA

Find files by NAME substring, recursively. For content use grep_files.

get_file_infoA

Metadata for a file or directory: size, times, format, plus line count and rev for text files (the rev that writes in a strict zone ask for). Content: read_text_file.

list_allowed_directoriesA

The vault root; every path must be inside it. Start here if the vault path is unknown.

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 20 tools

Disambiguation4/5

Most tools have clearly distinct purposes (grep vs search, read vs write vs edit, PDF text vs PDF image). The read family is large (read_text_file, read_file deprecated alias, read_multiple_files, read_media_file, read_pdf_page, read_pdf_text), but descriptions give strong routing guidance to avoid misselection.

Naming Consistency4/5

Names are overwhelmingly consistent snake_case verb_noun (read_text_file, write_file, edit_file, move_file, trash_file, search_files, grep_files, create_directory). Minor deviations exist: the deprecated read_file alias, noun-first names like directory_tree, sqlite_schema, sqlite_query, and slight variance in list_* patterns.

Tool Count3/5

Twenty tools is on the heavy side for a file-vault server and sits in the 16-25 'heavy' band. Specialized document/PDF/SQLite tools are justified, but the deprecated read_file alias and multiple overlapping read variants make the set larger than strictly needed.

Completeness4/5

Core lifecycle is well covered: list/search, read, write, edit, move, trash (delete equivalent), directory creation, metadata, plus document and SQLite inspection. Minor gaps remain—no copy operation and no explicit way to trash or remove a directory, only to move it.

Maintenance

ActivityMaintained
ResponsivenessNo issues