Skip to main content
Glama

mcp-llm-wiki

MCP server for a wiki an LLM maintains itself: Markdown files with YAML frontmatter, searchable via BM25 and vectors computed locally on the CPU. No cloud service, no embedding API, no external database.

The idea comes from llm-wiki.md / idee.md: three layers (immutable sources, a wiki owned by the model, schema as AGENTS.md) and three operations (Ingest, Query, Lint).

Layout

raw/     immutable sources        -> read-only
wiki/    the wiki itself          -> Markdown + YAML frontmatter
         .llm-wiki/index.db       -> SQLite: FTS5, sqlite-vec, metadata, link graph
         .llm-wiki/models/        -> downloaded embedding model

The server does not enforce folder conventions. It enforces safety (no escape from the wiki directory), valid frontmatter, and a current index. Where a page belongs is the model's decision - wiki_write_page therefore requires an explicit path.

Related MCP server: llm-wiki-mcp

Installation

No install needed if you start the server with npx (see Wiring). Otherwise:

npm install -g mcp-llm-wiki

From a clone:

cd mcp-llm-wiki
npm install
npm run build

On first start Transformers.js downloads the model Xenova/multilingual-e5-small (~120 MB, 384 dimensions, German and English) into MODEL_CACHE_DIR. After that everything runs offline; ALLOW_REMOTE_MODELS=false blocks the download.

Wiring

.vscode/mcp.json via npx (no global install):

{
  "servers": {
    "llm-wiki": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-llm-wiki"],
      "env": {
        "WIKI_ROOT": "${workspaceFolder}/wiki",
        "RAW_ROOT": "${workspaceFolder}/raw"
      }
    }
  }
}

After npm install -g mcp-llm-wiki:

{
  "servers": {
    "llm-wiki": {
      "type": "stdio",
      "command": "mcp-llm-wiki",
      "env": {
        "WIKI_ROOT": "${workspaceFolder}/wiki",
        "RAW_ROOT": "${workspaceFolder}/raw"
      }
    }
  }
}

From a clone, use "command": "node" and "args": ["${workspaceFolder}/mcp-llm-wiki/dist/index.js"].

Copy templates/AGENTS.md from the package to wiki/AGENTS.md and adapt it - conventions live there, not in the server config. After a global install the template is at $(npm root -g)/mcp-llm-wiki/templates/AGENTS.md.

Configuration

Every value can be set as an environment variable (mcp.jsonenv) or as a CLI flag; CLI overrides environment overrides the default.

Variable

Flag

Default

Meaning

WIKI_ROOT

--wiki-root

required

Wiki root.

RAW_ROOT

--raw-root

<WIKI_ROOT>/../raw

Source layer, read-only.

INDEX_DB

--index-db

<WIKI_ROOT>/.llm-wiki/index.db

SQLite file.

MODEL_ID

--model

Xenova/multilingual-e5-small

Embedding model.

MODEL_CACHE_DIR

--model-cache-dir

<INDEX_DB-dir>/models

Model cache.

ALLOW_REMOTE_MODELS

--allow-remote-models

true

Allow download.

CHUNK_CHARS

--chunk-chars

1200

Target chunk size.

CHUNK_OVERLAP

--chunk-overlap

180

Overlap when splitting long sections.

WATCH

--watch

false

Watch the filesystem.

ALLOW_WRITE

--allow-write

true

false disables all write tools.

RRF_K

--rrf-k

60

Rank-fusion constant.

SCHEMA_STRICT

--schema-strict

false

Reject unknown frontmatter fields.

DEFAULT_CONFIDENCE

--default-confidence

-

Default for confidence.

MAX_DEPTH

--max-depth

8

Maximum folder depth.

MAX_PATH_LENGTH

--max-path-length

240

Maximum path length.

STRUCTURE_HINT

--structure-hint

-

Injected into tool descriptions.

IGNORE_GLOBS

--ignore-globs

-

Comma-separated extra ignore patterns.

MAX_READ_BYTES

--max-read-bytes

2097152

Read size cap.

LOG_LEVEL

--log-level

info

debug, info, warn, error, silent.

Tools

Search and read

Tool

Purpose

wiki_search

Hybrid search (BM25 + vectors, Reciprocal Rank Fusion). Modes hybrid, bm25, vector.

wiki_read_page

Whole page, section (section), or line range.

wiki_list_pages

Page list with frontmatter, filterable by folder, type, status, tag.

wiki_list_folders

Folder tree with page counts - before creating a page.

wiki_list_tags

All tags with counts.

raw_list, raw_read

Access to the source layer.

Write

Tool

Purpose

wiki_write_page

Create or replace a page. path is required; missing folders are created.

wiki_patch_page

replace-section, append-section, append, prepend, replace-body, or frontmatter only.

wiki_move_page

Move a file or folder; relative links are rewritten (dryRun available).

wiki_delete_page

Moves to .trash/<timestamp>/, requires confirm: true.

Bookkeeping and maintenance

Tool

Purpose

wiki_update_index

Writes index.md - global or for a folder (scope).

wiki_append_log, wiki_read_log

Chronology in log.md as ## [YYYY-MM-DD] op | title.

wiki_backlinks

Inbound and outbound links, including dead ones.

wiki_lint

Frontmatter, dates, duplicate ids, dead links, orphans, empty folders.

wiki_reindex, wiki_index_status

Rebuild the index or query its state.

How search works

  1. Each file is split on headings; sections that are still too long are split on paragraphs with overlap. The heading path (H1 > H2) stays attached to the chunk.

  2. BM25 runs over FTS5 with weighted columns (text, heading path, title, summary, tags). Queries are wrapped in quotes so FTS5 operators do not leak through; AND is tried first, then OR.

  3. Vector search uses sqlite-vec with cosine distance. The e5 model needs prefixes (passage: when indexing, query: when searching) - the server adds them.

  4. Both rankings are merged with Reciprocal Rank Fusion, then the best chunk per page remains.

Security

  • Every path is normalized and checked against the root (.., absolute paths, UNC, reserved Windows names, control characters). realpath is also used so symlinks cannot escape; indexing skips symlinks entirely.

  • RAW_ROOT is read-only.

  • Delete means move to the trash and requires an explicit confirmation.

  • All SQL access uses parameters, never string concatenation.

Known vulnerabilities in dependencies

onnxruntime-node 1.24 (pulled by @huggingface/transformers) still declares adm-zip@0.5 and global-agent@3 (boolean). sharp is declared <0.35. This package overrides those to patched releases (adm-zip@0.6, global-agent@4, sharp@0.35). None of those paths are exercised here: the server does not unpack untrusted archives and does not process images. If you disagree, skip vector search with mode: "bm25".

Tests

npm run build
npm test        # indexing, search, path safety, write, move, lint, delete
npm run test:stdio  # real MCP client over stdio against the built server

Both scripts create a throwaway wiki under .smoke/.

Notes

  • stdout belongs to the JSON-RPC protocol. Diagnostics go to stderr only.

  • The first index pass starts only after the connection is up - the client does not wait for the model download.

  • If the model is changed, the server detects the different dimension and rebuilds the vector index on the next pass.

Available Tools

18 tools
raw_listList source filesA
Read-only

List files in the immutable source layer (RAW_ROOT). This layer is strictly read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoOnly files under this prefix.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's 'strictly read-only' phrasing adds limited new safety information. It does add useful context about the layer being immutable, but does not disclose output format, ordering, or whether recursion/prefix behavior is applied beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two short sentences, front-loading the verb and resource, with the second sentence reinforcing the read-only nature. Every sentence earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter, this description is largely complete: it states what is listed, where, and that the operation is read-only. It does not explain what a file in RAW_ROOT looks like or what the returned list contains, but the title and schema reasonably cover the essential usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the optional 'prefix' parameter fully described as 'Only files under this prefix.' The description adds no parameter-specific information, but the schema already carries this burden, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('files in the immutable source layer (RAW_ROOT)'), making the tool's purpose immediately clear. The title 'List source files' reinforces this, and the RAW_ROOT distinction separates it from sibling wiki_list_pages and raw_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly identifies the context: listing files in the immutable, read-only source layer. It does not explicitly name alternatives or state when not to use it, but the RAW_ROOT reference and strict read-only note make the intended scope fairly unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raw_readRead source fileB
Read-only

Read a file from RAW_ROOT, optionally as a line range. There is no write access here.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath relative to RAW_ROOT.
endLineNo
startLineNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals safety, and the description aligns with it by stating there is no write access. The line-range note adds slight behavioral context, but the description does not disclose error behavior, output format, or edge cases for the range parameters. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core action in the first sentence. The second sentence about write access is a bit redundant given the readOnlyHint annotation, but it is not harmful and does not add bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, the description covers the core operation and hints at the optional line-range capability, while the schema documents the path. However, it omits line-range semantics, return/error behavior, and any guidance relative to sibling tools, leaving minor but real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only describes the path parameter, leaving startLine and endLine undocumented, so schema coverage is 33%. The phrase 'optionally as a line range' gives basic meaning to the two integer parameters, but it does not specify inclusivity, ordering, defaults, or how they combine, only partially compensating for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: reading a file from RAW_ROOT, with an optional line-range behavior. It is clear enough to identify this as the raw source-file reader among the sibling tools, though it does not explicitly contrast itself with raw_list or wiki_read_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use raw_read versus alternatives such as raw_list or wiki_read_page. The 'no write access' clause is a constraint rather than a usage trigger or exclusion. The description does not explain the conditions under which this tool should be selected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_append_logAppend log entryA

Append an entry in the form '## [YYYY-MM-DD] | ' to log.md at the wiki root. Call after every content change (ingest, update, merge, split, delete, refactor) so history stays chronological.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO date (YYYY-MM-DD); default today.
titleYesAffected page or topic.
detailsNoOptional note placed under the heading.
operationYesShort operation name, e.g. 'ingest', 'update', 'merge'.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no read-only or destructive signal beyond false flags, and the description clarifies that the tool mutates log.md by appending a formatted line. It doesn't discuss failure modes or idempotency, but the append behavior and target are disclosed without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the first front-loads the exact action and format, the second gives the usage rule. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple append operation with no output schema and full parameter coverage, the description is complete: target file, entry format, and call timing are all specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds the output line format ('operation | title') but doesn't add meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names an explicit verb ('Append'), a specific target resource (log.md at wiki root), and the exact entry format. This distinguishes it from read-only siblings like wiki_read_log and write tools like wiki_write_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: call after every content change (ingest, update, merge, split, delete, refactor) to keep history chronological. It doesn't state exclusions or alternatives, but for an append-only log the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_delete_pageDelete wiki pageA
Destructive

Move a page to the trash (.trash//) and drop it from the index. Requires confirm=true. Check wiki_backlinks first to see if other pages link here.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath relative to the wiki root.
confirmYesMust be explicitly true.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description explains what actually happens: the page is moved to a trash location, removed from the index, and requires an explicit confirmation flag. It also warns about checking backlinks, adding meaningful behavioral context for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the primary behavior and adds the confirmation requirement and the backlink check. Every clause adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two simple parameters, complete schema coverage, rich annotations, and clear side-effect disclosure, the description is sufficient for an agent to select and invoke the tool correctly. It covers what is destroyed, the trash location pattern, the confirmation guard, and the recommended pre-check.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents both parameters with 100% coverage. The description echoes the confirm=true requirement but does not add new semantic meaning beyond what the input schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it moves a wiki page to trash and drops it from the index, clearly distinguishing deletion from siblings like wiki_move_page or wiki_update_index. The behavior is concrete and not a tautology of the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational guidance: confirm=true is required and wiki_backlinks should be checked first for incoming links. It does not explicitly compare against alternative tools or state when not to use it, but the usage context and prerequisite are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_index_statusIndex statusA
Read-only

Show index configuration and state: root directories, embedding model and dimension, counts of pages/chunks/tags/links, and last index time. A good first call in a session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, and the description is consistent with that by saying 'Show' rather than any mutating verb. It adds behavioral value by specifying what the status call reveals, such as embedding model, dimension, counts, and last index time, which helps the agent anticipate the response without an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action and immediately followed by the useful output details and session advice. Every word earns its place; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only status tool with no output schema, the description is complete. It enumerates the state fields, communicates the configuration aspects, and provides session-level context. Nothing essential is missing for an agent to decide to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline of 4 applies. The description correctly implies no inputs are needed and focuses entirely on the informational output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') with a clear resource ('index configuration and state') and enumerates exactly what is reported: root directories, embedding model/dimension, counts, and last index time. It is clearly distinct from sibling tools by substance, though it does not explicitly name a sibling or contrast itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'A good first call in a session' gives clear situational context for when to invoke this tool. It does not mention exclusions or alternatives, but for a zero-parameter status tool the timing guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_lintLint wikiA
Read-only

Check the wiki for frontmatter errors, invalid dates, duplicate ids, dead links, unresolved sources, orphan pages, and empty folders. Nothing is changed - the result is a work list. Folder layout is not judged, only technical limits (depth, path length).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax findings to report.
checksNoRun only these checks.
folderNoCheck only this folder and its subfolders.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already set readOnlyHint=true, and the description reinforces this by explicitly stating 'Nothing is changed.' It adds useful behavioral context beyond the annotations: the output is a work list, only technical limits are judged, and the tool does not modify wiki state. This is consistent with the annotations and helps an agent predict side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, focused sentences with no filler. It front-loads what the tool does, immediately clarifies the read-only nature and output type, and then adds a relevant scope exclusion. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only audit tool with all optional, self-documented parameters, the description covers the essential context: what is checked, that nothing changes, what the result is, and what is deliberately not judged. There is no output schema, so a little more detail about the exact shape of the work list could help, but it is adequate for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with descriptions, achieving 100% coverage, so the description does not need to compensate. The description's list of audit categories roughly mirrors the checks enum but adds no parameter-specific syntax or behavioral detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') with the wiki as the resource and enumerates concrete audit categories: frontmatter errors, invalid dates, duplicate ids, dead links, unresolved sources, orphan pages, and empty folders. This clearly distinguishes it from the read/write sibling tools, though it does not explicitly name an alternative or exclusion by sibling name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Nothing is changed - the result is a work list' signals the intended use as a safe, read-only audit and implies it is for gathering findings rather than searching or editing. The statement that folder layout is not judged, only technical limits, is a clear scope exclusion that helps an agent decide when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_list_foldersShow folder treeA
Read-only

Show the wiki folder tree with page counts per folder. Call before creating a page so the path matches the existing structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoOnly folders up to this depth.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read, and the description's 'Show' is consistent with that. The description adds mild context by mentioning page counts per folder, but it does not disclose details like default depth behavior or whether nested page counts are included. Given the annotations, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose is front-loaded, followed by a useful usage note. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with one optional parameter and no output schema, the description conveys the essential output (folder tree with page counts) and the main use case. It could be slightly more detailed about the exact tree structure, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, maxDepth, has full schema description coverage. The description adds no extra parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb-resource pair: 'Show the wiki folder tree with page counts per folder.' This distinguishes it from sibling tools like wiki_list_pages and wiki_list_tags through the specific resource being listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Call before creating a page so the path matches the existing structure.' It provides clear context for when to use the tool, though it does not explicitly discuss alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_list_pagesList wiki pagesA
Read-only

List indexed wiki pages with path, id, title, summary, type, status, tags, and updated date. Filterable by folder, type, status, and tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOnly pages with this tag.
typeNo
limitNo
folderNoOnly pages in this folder.
offsetNo
statusNo
recursiveNoInclude subfolders (default true).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true and openWorldHint=false, and the description does not contradict them. It adds useful behavior beyond annotations: the tool operates on 'indexed' pages and explicitly names the fields returned. It does not mention ordering, pagination defaults, or recursion behavior, but read-only annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-structured sentence that front-loads the verb and resource, then lists output fields and filters. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with seven parameters and no output schema, the description adequately explains what is returned and the main filtering dimensions. It could improve by stating pagination or recursion behavior, but the schema covers those details, and the description does not leave a confusing gap for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 43%, so the description needs to compensate. It names the folder, type, status, and tag filters, matching most user-facing filter parameters, but it does not explain limit, offset, or recursive. The schema already documents some of these, but the description adds no extra meaning for pagination or recursive traversal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), resource ('indexed wiki pages'), and enumerates output fields (path, id, title, summary, type, status, tags, updated date). The word 'indexed' helps distinguish this from raw list tools and the filter sets give a clear identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing and filtering indexed pages by folder, type, status, and tag, but it never says when not to use it or names alternatives such as wiki_search or raw_list. A clear exclusion or comparison with wiki_search would have raised this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_list_tagsList tagsA
Read-only

List all tags used in the wiki with counts, highest first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a read-only operation. The description adds useful behavioral details beyond annotations: output includes counts and is sorted by count descending. This is meaningful context for an agent deciding whether the tool's output meets its needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is direct and fully informative. It front-loads the action and resource ('List all tags') followed by the key modifiers. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool with no output schema, the description covers all essential information: what is listed, what accompanies it, and the ordering. Nothing an agent needs to decide whether to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add. Per the baseline rule, 0 params earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' with a clear resource 'all tags used in the wiki' and adds the key details of counts and ordering ('highest first'). This makes it easy for an agent to distinguish it from sibling tools like wiki_list_pages and wiki_list_folders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this tool is for retrieving the tag list with counts. It doesn't explicitly state exclusions or alternatives, but the resource scope and the presence of sibling tools with different resources provide sufficient contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_move_pageMove page or folderA
Destructive

Move or rename a page or a whole folder and rewrite relative Markdown links (id-based wikilinks stay valid). With dryRun=true you get the planned changes without writing anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget path relative to the wiki root.
fromYesCurrent path (file or folder) relative to the wiki root.
dryRunNoPlan only, do not write.
overwriteNoOverwrite an existing target (default false).
updateLinksNoRewrite links on other pages (default true).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The destructiveHint annotation already flags mutating behavior, and the description adds meaningful behavioral detail: relative Markdown links are rewritten, id-based wikilinks remain valid, and dryRun produces no writes. This is useful transparency beyond the structured annotation and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no filler. The core operation is front-loaded, the link-rewriting behavior is stated in the first sentence, and the dryRun capability is a useful second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a move/rename tool with a destructive annotation and a full schema, the description covers the main behavior, link handling, and dry-run planning. It does not describe return values or error behavior, but there is no output schema to satisfy and the core invocation context is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already well documented. The description reinforces the meaning of dryRun and provides context about link rewriting, but it does not add significant new semantic detail beyond the schema for from, to, overwrite, or updateLinks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (move or rename) on a specific resource (page or folder), and adds the key side effect of rewriting relative Markdown links while id-based wikilinks remain valid. This clearly distinguishes it from sibling write, patch, and delete tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly communicates when to use this tool: when a page or folder needs to be moved or renamed, with dryRun optionally used for planning. However, it does not explicitly state when not to use it or name alternative tools for content editing or deletion, leaving usage guidance mostly inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_patch_pagePatch wiki pageB

Change an existing page without rewriting it. Modes: 'replace-section' and 'append-section' (require section with the heading text), 'append', 'prepend', 'replace-body'. Omit mode to update frontmatter only. 'updated' is always refreshed.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoKind of text change; omit for frontmatter-only updates.
pathYesPath relative to the wiki root.
contentNoNew text; required when `mode` is set.
sectionNoHeading text for the section modes.
frontmatterNoFrontmatter fields to set.
frontmatterModeNo'merge' (default) fills in, 'replace' replaces the whole header.

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description exposes a `replace-body` mode that overwrites the entire page body, and the schema also allows `frontmatterMode: replace`, yet the annotations set destructiveHint=false. This is an annotation contradiction: an agent would be misled into thinking no destructive operation can occur. The `'updated' is always refreshed` note is helpful, but it does not resolve the contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight and well-organized: purpose, mode list with a condition, the frontmatter-only behavior, and the `updated` side effect. Every sentence earns its place and no information is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with a nested object and no output schema, the description covers mode selection and frontmatter-only usage but leaves important operational details unspecified, such as what happens if a section heading does not exist or how errors are surfaced. The annotation contradiction further undermines an agent's ability to accurately model the tool's side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by specifying that `replace-section` and `append-section` require `section` and by clarifying that adding `frontmatter` without `mode` is a frontmatter-only update. It does not describe `frontmatterMode`, but the schema already covers it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action—'Change an existing page without rewriting it'—and enumerates the supported modes, making the tool's purpose clear. It implies a contrast with a full rewrite tool but does not explicitly name a sibling, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage rules: section modes require `section`, `mode` can be omitted for frontmatter-only updates, and `updated` is always refreshed. This tells an agent how to select behavior within the tool, though it does not explicitly say when to prefer a sibling tool like wiki_write_page.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_read_logRead recent log entriesA
Read-only

Return the latest log.md entries, newest first - useful at the start of a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of entries (default 10).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only safety profile (readOnlyHint=true). The description adds value by disclosing the 'newest first' ordering and the specific log.md resource, but it does not mention return format, pagination behavior, or error conditions. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. The core function ('Return the latest log.md entries, newest first') comes first, followed by the usage hint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple tool with one optional parameter, read-only annotations, and no output schema. The description covers purpose, ordering, and typical usage. A minor gap is the lack of detail on what an 'entry' contains, but the low complexity makes this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage: the only parameter 'limit' is fully described with type, min/max, and default. The description does not add any parameter-specific meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return'), a concrete resource ('log.md entries'), and an ordering guarantee ('newest first'). This clearly distinguishes it from siblings like wiki_read_page or wiki_search, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context: 'useful at the start of a session.' However, it does not explicitly name alternatives or state when not to use this tool, stopping short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_read_pageRead wiki pageA
Read-only

Read a wiki page. With no extra args the full file including frontmatter is returned; section returns that heading's section; startLine/endLine return a line range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath relative to the wiki root, e.g. 'concepts/llm-wiki.md'.
endLineNoLast line (1-based, inclusive).
sectionNoHeading text whose section to read.
startLineNoFirst line (1-based, inclusive).
includeFrontmatterNofalse omits the YAML header (default true).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description aligns with readOnlyHint=true and adds useful default-behavior context beyond the annotation: the full file including frontmatter is returned when no extra args are passed. It also clarifies inclusive line ranges and section scoping, which annotations alone would not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the core action and uses a semicolon-separated list to cover all behavioral modes. Every word earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with fully documented parameters, the description sufficiently covers return behaviors (full file, section, line range, frontmatter inclusion). Minor gaps remain: no stated behavior for conflicting parameters (section + startLine/endLine) or for missing headings, but these are edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented individually. The description adds value by explaining how parameters interact to select the output mode (full page vs section vs line range), which the static parameter descriptions do not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('a wiki page') and enumerates three distinct retrieval modes (full file, section, line range). It is distinguishable from siblings like wiki_read_log and raw_read by the 'wiki page' resource, though it does not explicitly name the sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mode descriptions imply when to use each argument form (no args for full content, section for a heading, startLine/endLine for ranges), but there is no explicit guidance on when to prefer this tool over wiki_search, raw_read, or wiki_read_log. No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_reindexRebuild indexA
Idempotent

Refresh the search index. 'incremental' (default) processes changed files only; 'full' rebuilds everything. Usually unnecessary because write tools update the index - needed after filesystem changes made outside this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault: incremental.
pathsNoRe-read only these paths (relative to the wiki root).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover idempotency and non-destructiveness; the description adds meaningful behavioral detail about how incremental mode processes only changed files and full mode rebuilds everything. It also notes that normal write paths already update the index, which helps the agent predict side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences front-load the core action, then give mode semantics and guidance. Every sentence earns its place and no content is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for a no-required-parameter maintenance tool with annotations: it explains when to use, the two modes, and the default. It does not describe return values or performance characteristics, but no output schema exists and reindexing is a side-effect operation, so those are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes both parameters. The description enhances the mode parameter by explaining what each enum value actually does, though it adds no additional semantics for the paths parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the action verb 'Refresh' with a specific resource ('the search index') and clarifies two modes, incremental vs full. However, it does not explicitly distinguish itself from the closely named sibling wiki_update_index, so an agent must infer which tool handles which indexing task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: usually unnecessary because write tools update the index, and needed only after filesystem changes outside the server. It does not name the alternative tools or state an explicit when-not-to-use rule, but the condition is clear enough for most routing decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_update_indexUpdate index.mdA
DestructiveIdempotent

Create or refresh an index.md catalogue. With no scope this is the root index; with scope it writes /index.md. Entries come from indexed page titles and summaries - keep frontmatter current before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFolder to index; omit for the whole wiki.
titleNoOverride title for the index page.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond annotations: it states that with no scope it writes the root index, with a scope it writes <scope>/index.md, and that entries derive from indexed titles and summaries. This aligns with the destructiveHint and idempotentHint annotations, and the 'create or refresh' phrasing conveys that existing index content may be replaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The first sentence states the core purpose, the second specifies the parameter-driven behavior, and the third gives a practical prerequisite. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two optional parameters, annotations covering destructiveness/idempotency, and no output schema, the description is largely complete: it covers target file, scope behavior, data source, and a precondition. It could more explicitly address what happens to manual edits in an existing index.md, but 'create or refresh' covers this reasonably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining the concrete effect of the scope parameter: 'with scope it writes <scope>/index.md' and 'with no scope this is the root index,' which adds file-path semantics not present in the schema. The title parameter is not elaborated in the description, but the schema already documents it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Create or refresh an index.md catalogue,' and clarifies the root vs scoped behavior. It clearly identifies what file is written, but it does not explicitly differentiate itself from similar siblings like wiki_reindex, which could also be interpreted as an indexing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'keep frontmatter current before calling' provides a useful prerequisite and implies the tool should be used after page metadata is updated. However, there is no explicit guidance on when to choose this tool over alternatives such as wiki_reindex or wiki_index_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_write_pageWrite wiki pageA
Destructive

Create or fully overwrite a wiki page. The path is deliberately NOT derived by the server: you choose the folder and filename. Missing folders are created automatically. Call wiki_list_folders first so the path matches the existing structure. The YAML header is completed (id, title, type, created, updated); existing fields are kept. An existing file is replaced only with overwrite=true - use wiki_patch_page for partial edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body without the YAML header.
pathYesTarget path relative to the wiki root, including .md, e.g. 'concepts/knowledge-management/llm-wiki.md'.
overwriteNoReplace an existing file (default false).
frontmatterNoFrontmatter fields; 'updated' is always set.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses several important behaviors: the path is deliberately not derived by the server, missing folders are auto-created, the YAML header is completed while existing fields are kept, and an existing file is replaced only with overwrite=true. This gives the agent a detailed and accurate behavioral model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, each carrying distinct information: effect, path semantics, prerequisite call, YAML behavior, and overwrite caveat with sibling alternative. There is no filler and the most important caveat is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, complex tool with no output schema, the description covers everything an agent needs: when to call it, how to choose the path, how to avoid clobbering existing files, what happens to YAML fields, and which sibling to use for partial edits. No critical call-blocking information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by explaining path semantics (user-chosen, not server-derived), automatic folder creation, and the overwrite guard. It does not need to restate parameter types since the schema already documents them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create or fully overwrite a wiki page,' a specific verb and resource. It goes further by distinguishing itself from wiki_patch_page ('use wiki_patch_page for partial edits'), making the tool's scope unambiguous against its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: call wiki_list_folders first so the path matches existing structure, set overwrite=true only when replacing an existing file, and use wiki_patch_page instead for partial edits. This is actionable and routes the agent to the right alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 18 tool updatesv0.1.2
    • First observedraw_list
    • First observedraw_read
    • First observedwiki_append_log
    • First observedwiki_backlinks
    • First observedwiki_delete_page
    • First observedwiki_index_status
    • First observedwiki_lint
    • First observedwiki_list_folders
    • First observedwiki_list_pages
    • First observedwiki_list_tags
    • First observedwiki_move_page
    • First observedwiki_patch_page
    • First observedwiki_read_log
    • First observedwiki_read_page
    • First observedwiki_reindex
    • First observedwiki_search
    • First observedwiki_update_index
    • First observedwiki_write_page

TDQS

A3.9/5.0
Disambiguation5/5

Each wiki_* and raw_* tool targets a distinct operation/resource: search, reads, lists, mutations, index maintenance, link analysis, and linting. Even close pairs like wiki_write_page vs wiki_patch_page and wiki_update_index vs wiki_reindex are clearly separated by write-versus-partial-edit and catalogue-versus-search-index semantics.

Naming Consistency4/5

The dominant pattern is prefix + verb_noun (wiki_list_pages, wiki_write_page, wiki_read_page), with raw_list/raw_read forming a consistent raw_* subfamily. Minor deviations like wiki_backlinks (noun instead of verb) and wiki_index_status vs wiki_reindex/update_index break the pattern slightly, but the convention is still predictable.

Tool Count4/5

At 18 tools the server is above the typical 3-15 sweet spot, but the count is justified by the breadth of the wiki lifecycle: search, CRUD, structure listing, index maintenance, backlinks, linting, and logging. A few tools could theoretically be merged, but each has a distinct purpose.

Completeness5/5

The server covers the full wiki lifecycle: search, read, create, overwrite, patch, move, delete, plus supporting functions like backlinks, index generation, lint, and reindexing. The read-only RAW layer is intentionally separate and documented, and no critical workflow appears to be a dead end.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables creation of persistent, compounding knowledge bases using Karpathy's LLM Wiki pattern with LLM-maintained markdown wikis. Supports automated ingestion, cross-referencing, synthesis, and linting of sources as an alternative to traditional RAG systems.
    62
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search, read, and traverse a local knowledge base of Markdown files using full-text search and relationship graph, reducing token usage.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to capture, structure, remember, and retrieve source-backed memory as local Markdown files, with reviewable writes and no cloud dependency.
    181
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RickyKleinhempel/mcp-llm-wiki'

If you have feedback or need assistance with the MCP directory API, please join our Discord server