Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CARTOGRAPHER_KBNoKB path(s) (single, or multiple comma-separated)
CARTOGRAPHER_AUTHNotrue / false / unset (auto on HTTP)auto
CARTOGRAPHER_DATANoDirectory whose subfolders are auto-discovered KBs
CARTOGRAPHER_HTTPNoHTTP address (e.g. :39273). Absent = stdio only
CARTOGRAPHER_OLLAMANoOllama server URL for semantic search
CARTOGRAPHER_TOKENSNoComma-separated bearer tokens
CARTOGRAPHER_GIT_SYNCNofetch/pull-rebase + push on origin around each writetrue
CARTOGRAPHER_AUDIT_KEYNoEd25519 key for audit signing
CARTOGRAPHER_AUDIT_LOGNoAudit log file path
CARTOGRAPHER_OLLAMA_MODELNoOllama embedding modelnomic-embed-text
CARTOGRAPHER_GIT_AUTOCOMMITNoOne git commit per write operationtrue

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": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
artifact_deleteA

Deletes a KB-root artifact file (skills//, agents/.md, hooks/, mcp/.json, instructions.md, templates/.md, paths.yaml, glossary.yaml), and its now-empty containing artifact directory for skills/hooks. if_match (sha256 of the current content, from artifact_read/artifact_list) is required.

artifact_readB

Reads a KB-root artifact (skills/, agents/, hooks/, mcp/, instructions.md, templates/.md, paths.yaml, glossary.yaml). Returns content and sha256, the if_match for artifact_write/artifact_delete (present only if the KB sets allow_artifact_write).

artifact_writeA

Creates or updates a KB-root artifact file (skills//, agents/.md, hooks/, mcp/.json, instructions.md, templates/.md, paths.yaml, glossary.yaml). On an existing file, if_match is required (sha256 of the current content, from artifact_read/artifact_list) — fails with stale_write if it's missing or doesn't match. On a new file, omit if_match — fails with already_exists if the file is actually already there. Validates structured artifacts, including template frontmatter and variables the paths.yaml schema (paths:/repos: key -> {description, default: ~/…, remote}) and the glossary.yaml schema (terms: list of {canonical, aliases: [..], forbidden: [..]}), before writing.

asset_deleteA

Permanently deletes a non-Markdown asset from an expanded concept. if_match is mandatory and must be the current raw-byte sha256 returned by asset_read or asset_list.

asset_listA

Lists the non-Markdown assets of an expanded concept: path, size, sha256, executable. A file over 10 MiB shows oversized: true (deletable only).

asset_readB

Reads a non-Markdown asset of an expanded concept: content, encoding, sha256 (the if_match to change or delete it), size, executable mode.

asset_writeA

Creates or updates a non-Markdown asset of an expanded concept (max 10 MiB). New: omit if_match; overwrite: if_match = current sha256. Content is text or base64. executable: omit to keep the mode (new files are non-executable).

atlas_overviewA

Root index.md plus the Maps and Journals with concept counts. structure: true adds the most central concepts and link-graph communities: where to start reading.

changes_sinceA

Concept changes from git history since a timestamp or duration: each concept's newest change, authors, agent clients, operations and reasons. links: true also reports links added/removed and pages that became or stopped being orphans.

concept_batchA

All-or-nothing write/patch of distinct concepts: one commit and log entry; a failure leaves the KB untouched. At most 50 operations and 512 KiB of decoded content per call (a patch counts its edits). Each operation is 'write' (frontmatter, body, if_match optional = create-only) or 'patch' (if_match required; the concept_patch fields). A creating 'write' may set index_entry to add a curated index entry. Not covered: delete, move, expand, assets, other index edits. Returns id, content_hash and findings per operation.

concept_deleteA

Permanently removes a concept (git commit). Refuses with inbound_links (listing the linkers) unless force=true; links are never rewritten. To keep the page use supersede; to rename, concept_move. An expanded concept that owns assets also needs force=true.

concept_expandB

Turns .md into a directory / whose index.md keeps the same ID, so the concept can hold satellites /; links keep working. id needs exactly two segments (map/concept). No inverse.

concept_historyA

Commits that changed a concept, newest first, following renames: {sha, at, author, subject, reason?, path}; truncated if more exist. A sha passed as rev to concept_read shows the concept then. No git history: no revisions.

concept_listA

Exhaustive inventory (id, title, type, status; fields adds keys) under a scope prefix, sorted by id; empty = whole KB. where and timestamp filters apply before limit. For curated navigation use index_get.

concept_moveA

Moves concepts to new IDs in one commit: one source_id/target_id pair or a moves array (exclusive). All entries are validated first (source exists, target free, no traversal or duplicate source); an invalid one aborts the batch. Unless rewrite_links=false, inbound links KB-wide are rewritten. Works across maps and services/. An expanded concept moves with assets and satellites. A mid-batch filesystem failure names both IDs, no rollback. Returns findings on moved concepts and their linkers.

concept_newB

Creates a concept from a KB template (template_list) and records it as its shape. Refuses an existing id. index_entry adds it to the map's curated index. Returns findings.

concept_patchA

Edit-style patch of a concept body: old_string/new_string/replace_all, or an edits array applied atomically in order. if_match required (stale_write). frontmatter is shallow-merged and may be the only change; frontmatter_append/frontmatter_remove add or drop list items (idempotent). Returns content_hash, findings. Many concepts: concept_batch, up to 50 operations in one commit.

concept_readA

Reads a concept: content_hash, frontmatter (parsed) and _raw, body. with_content: true returns content (exact bytes) instead of body. section returns one section; outline: true only the headings; match greps body lines (with context).

concept_writeA

Creates or updates a concept from frontmatter (YAML map, type required) and a markdown body. if_match (content hash) gives optimistic concurrency: stale_write if changed. Returns content_hash and structural findings too (links, orphan, index): fix them.

conflicts_listA

Lists open git rebase conflicts: concept, local/remote SHAs, branch, files. Resolve with git_conflict_resolve (kb-conflict-resolve skill).

gate_checkA

Local gate: validate + lint + commit_gate. Use at session end over the IDs you wrote, or before fast-forwarding to main. changed_ids alone lints just those (no whole-KB structure checks); empty changed_ids: whole KB, no commit gate; scope: a path prefix. severity_min sets the lint floor (default warning); pass ignores it.

git_conflict_resolveA

Resolves a git conflict. strategy: ours (local), theirs (remote), edit (reconciled body), union (log.md only). Once every open conflict (conflicts_list) is resolved, Cartographer merges, commits, pushes and clears the degraded markers.

graph_contextC

Concepts most related to a question or set of concepts, following links both ways, with hop count and the concept each was reached through.

graph_neighborsA

Graph neighbors up to depth hops (default 1): out = linked from the concept, in = linking to it, both = either.

index_getA

Reads a folder's index.md (root if empty). with_hash: {path, content, content_hash} (if_match for index_patch). Over 60 KB: outline, unless full or with_hash; outline: true forces it.

index_patchA

Like concept_patch, for the root or a Map/Journal curated index.md (same edit forms; if_match required, from index_get with_hash). An expanded concept's own index.md is refused (expanded_index): use concept_patch. Returns path, content_hash, replacements, findings.

kb_repairA

Applies the mechanical fix a lint finding carries (fix) for one check, KB-wide in one commit. dry_run defaults to true (plan only). Concepts changed since listing are skipped. Judgement fixes: kb-doctor skill.

kb_reviewC

Ranked kb-doctor work list: items {kind, concepts, evidence, suggested_action}. Dismiss: lint_ignore: [kind] on a named concept.

kb_statusC

KB health in one call: concept counts (by type, status), stale concepts, open contradictions and gaps, git replication state, capabilities (each per-KB gate, its state and controlling key), source-ledger counts, frequent search misses, versions, and conformance: {findings by severity, fixable, last_doctor, doctor_suggested}, the drift from the current standard. When doctor_suggested is true, follow the kb-doctor skill. usage: which skills and agents the clients actually load (never used, stale, active), from their reports. Read-only.

link_suggestB

Existing concepts this one probably should link to: at least two shared neighbours, not yet linked, hub evidence discounted; for an unlinked concept, title matches.

lintC

Deterministic checks. check, severity_min, limit (max 200), offset filter and page. Counts ignore them.

log_appendA

Appends an entry to the root log.md (newest first). With path, the entry is prefixed '[] ' in the root log (no per-directory log); read back with log_tail(path).

log_tailA

Last n entries (default 20) for path; empty = root log. A path filters root-log entries prefixed '[] ' (plus any pre-existing /log.md).

map_createC

Creates a Map or Journal (kind: journal) with _map.md, index.md, log.md. ontology_mode: strict (enforces concept_types) or flexible. templates (slugs) make every page follow one. Contract options are lint only, not a write gate.

map_deleteA

Deletes a Map or Journal only if empty (just the scaffold _map.md, index.md, log.md). Otherwise nothing changes and the error lists the concepts: concept_move them first.

map_listB

Lists Maps and Journals with kind, ontology_mode, concept_types and expanded-concept count.

map_updateC

Changes a map's title or lint contract: given keys are replaced whole, an empty list, "", false or {} removes one. stale_after 0 = off, -1 = default.

searchB

Keyword search over concepts (SQLite FTS5, substring matching); returns IDs ranked by relevance. Glossary aliases are searched too (expanded_to).

snapshotC

Logs a KB snapshot entry and, with git auto-commit enabled, a git commit.

source_listA

Source ledger (Source concepts), oldest first: {id, title, source_kind, ingest_status, timestamp?, cited_by (count), cited_by_ids (concepts citing it in provenance)}. status defaults to pending ('*' = all). Read-only.

source_registerA

Records a primary source BEFORE ingesting it: a Source concept in a journal (default 'sources', map_create kind journal). Dedupes by sha256, else locator: a duplicate returns {id, duplicate: true, ingest_status}, writes nothing, adding locator_mismatch + existing_locator if the locator differs. Never fetches; body is your distillation. Cite its ID in provenance, then concept_patch ingest_status.

supersedeB

Marks a concept as superseded by another: sets status=superseded and records the successor. Returns findings on it.

template_listA

Lists KB-only concept templates: slug, type, title, variables. Read a template body with artifact_read.

validateC

Validates frontmatter, reserved files and strict ontology; returns the errors.

work_listB

Open work: concepts in an open status for their map, and unchecked - [ ] items in any concept, with section and line. where as in concept_list; fields and order_by name frontmatter keys. Read-only: change work with concept_patch.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 45 tools

Disambiguation4/5

Most tools have clearly distinct scopes (concept vs artifact vs asset vs map vs index), but the health/validation cluster (validate, lint, gate_check, kb_repair, kb_review, kb_status) and multiple write/patch variants (concept_write, concept_patch, concept_batch, concept_new) create some potential for misselection. Descriptions clarify boundaries, so ambiguity is limited but not absent.

Naming Consistency4/5

Nearly all tools use consistent snake_case with an entity_action pattern (artifact_read, concept_write, map_create), but a few deviate as single verbs (validate, search, supersede, lint, snapshot) or noun_noun (atlas_overview, changes_since). The convention is still predictable and readable throughout.

Tool Count2/5

45 tools is far above the typical 3-15 range and exceeds the 25+ threshold for 'too many'. The KB domain is broad, but the surface is heavy and could overwhelm an agent; many tools could be consolidated or grouped without losing capability.

Completeness4/5

Core CRUD and lifecycle for concepts, maps, artifacts, assets, index, logs, sources, and graph are well covered. Minor gaps exist (no inverse for concept_expand, no explicit map_read, no asset_move, no index_create), but agents can work around them using existing tools.

Maintenance

ActivityActive
ResponsivenessResponsive