llm-wiki-mcp
This MCP server provides a governed, candidate-first wiki management system for AI agents, enforcing human approval before any formal wiki content is updated.
Initialize & Inspect: Set up a new wiki structure or verify an existing directory has a valid layout.
Search: Perform scope-aware searches across formal pages and/or raw sources using keyword, semantic, or hybrid modes, with domain filtering and ranked results with
next_actionhints.Read: Access formal wiki pages (with parsed frontmatter and link analysis) and immutable raw source files, both with pagination support.
Create Raw Sources: Add new raw source files — existing files are never overwritten, preserving source material integrity.
Candidate-First Writes: Propose changes as candidate bundles (new pages, updates, public drafts) — nothing is written to the formal wiki until explicitly approved.
Apply Approved Candidates: Atomically apply a reviewed and approved candidate bundle to the formal wiki.
Change Logging: Record structured change-log entries (action, subject, reason, impact, verification) with configurable retention trimming.
Lint & Health Review: Run structured lint checks (errors, warnings, suggestions) and get a comprehensive health summary covering source coverage, orphans, duplicates, stale pages, and confidence levels.
Public Draft Management: Render public-facing draft candidates (with optional redaction) and validate them for sensitive content before publication.
Safety & Governance: Enforces path safety within
wiki_root, validates frontmatter, and requires explicit configuration to allow writes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@llm-wiki-mcpsearch wiki for 'neural networks'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
llm-wiki-mcp
An MCP server that gives your AI agents a governed wiki instead of unrestricted filesystem access. It sits between "full power" and "read-only" by requiring human approval before any formal wiki page gets updated.
Design philosophy draws from Karpathy's LLM Wiki methodology: compile knowledge into a reusable wiki during ingest/maintenance, rather than re-synthesizing from raw sources on every query. Astro-Han/karpathy-llm-wiki and multica-ai/andrej-karpathy-skills served as engineering references.
The project started by hand-crafting ~/llm-wiki to validate the workflow, then abstracting it into an MCP server — the tool design comes from real usage, not theory.
Why this exists
When you use an AI agent to build a knowledge base, it can read and write pages. Without constraints:
It overwrites pages you spent time curating.
Files end up scattered across directories with no consistent structure.
It updates
index.mdwithout recording what changed.There's no audit trail of who changed what and why.
This server forces every write to go through a candidate review cycle. The agent proposes changes, you review and approve them, and only then does the wiki update.
Related MCP server: cortex-brain
What it does
Candidate-first writes — formal pages, index updates, and public exports are proposals. Nothing gets written until you call
apply_candidate.Immutable raw sources —
raw/files can only be created, never overwritten. Your source material stays intact.Path safety — all operations stay within
wiki_root. Parent-traversal attempts are rejected at the path layer.Structured linting —
run_lintreturns parsed results (errors, warnings, suggestions) as data, not a process exit code that breaks the MCP transport.Change log — every mutation is logged with action, impact, and verification, with configurable retention.
Search that tells you what to do next — formal pages and raw sources are ranked separately. Scope-aware search returns a
next_actionhint (read_pagevsread_raw_source).Frontmatter validation — unknown fields, empty directory lists, and invalid retention values are caught before they reach your wiki.
Workflow

New / revised source added
↓
compile_page or create_update_candidate
↓
Review Candidate bundle (page, index, public-draft, log, source-manifest)
↓
apply_candidate after explicit approval
↓
run_lintAgents return persisted Candidate bundles first. You (or your agent's human-in-the-loop) review the full change set before anything touches the formal wiki.
Quick Start
git clone https://github.com/jaronlu/llm-wiki-mcp.git
cd llm-wiki-mcp
uv sync --dev
cp config/examples.config.yaml config/config.yaml
uv run llm-wiki-mcpEdit config/config.yaml for your machine. Keep it local and untracked.
wiki_root: ~/llm-wiki
allow_write_raw: false
allow_write_formal: false
allow_update_index: false
allow_modify_schema: false
log_retention_entries: 120
formal_dirs: [domains, entities]
raw_dirs: [raw]
workshop_dirs: [workshop]
non_formal_dirs: [drafts, reading]workshop_dirs enables project packages whose root README.md is a formal
entity page and whose raw/ subtree contains project evidence:
llm-wiki/
├── workshop/
│ ├── agentic-rag-securities/
│ │ ├── README.md
│ │ └── raw/
│ └── wiki-mcp/
│ ├── README.md
│ └── raw/
├── domains/
├── entities/
└── raw/MCP tools
Tool | What it does |
| Creates or completes a wiki root with scaffolding |
| Checks if a directory is a valid wiki and reports status |
| Scope-aware search across formal pages and raw sources |
| Reads a formal page with parsed frontmatter and link analysis |
| Reads raw source files (immutable view) |
| Creates a new raw source (create-only, no overwrite) |
| Appends a structured change-log entry |
| Builds a candidate formal page from raw sources |
| Builds a candidate index update |
| Applies a previously-reviewed candidate bundle |
| Runs structured lint checks and returns parsed results |
| Reviews wiki health (coverage, orphans, stale pages) |
| Creates a public-facing draft (candidate-first) |
| Checks that public exports don't leak sensitive content |
Mutation tools are conservative by default. Raw writes require allow_write_raw: true; applying candidates requires allow_write_formal: true.
Configuration
Config loading order:
Built-in defaults.
Project-local
config/config.yaml, when present.
The server intentionally ignores MCP host config path environment variables and root override environment variables, so the runtime source of truth stays in the repository-local config file.
Config validation rejects unknown top-level fields, nested directory names, empty directory lists, and non-positive log_retention_entries values.
Safety boundaries
All paths must resolve under
wiki_root.init_wikicreates or completeswiki_rootby default when no explicitrootargument is provided.raw/writes are create-only and never overwrite existing files.Formal page writes require
allow_write_formal: true;index.mdupdates, migrations, and public exports are candidate-first..llm-wiki/source-manifest.jsontracks raw source digests without modifying page frontmatter.run_lintreturns structured lint data instead of treating lint failures as MCP transport failures.
MCP Host Config
[mcp_servers.llm_wiki]
command = "uv"
args = ["--directory", "/path/to/llm-wiki-mcp", "run", "llm-wiki-mcp"]
startup_timeout_sec = 120The server always reads configuration from <repo>/config/config.yaml; no MCP host environment variable is needed.
Development
uv run ruff check .
uv run pytestContributing
See CONTRIBUTING.md for development setup and design rules.
License
MIT — see LICENSE.
Available Tools
14 toolsappend_logB
Append a structured entry to log.md and trim old entries to retention.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| action | Yes | ||
| impact | Yes | ||
| reason | Yes | ||
| changes | Yes | ||
| subject | Yes | ||
| request_id | No | ||
| verification | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the trimming of old entries to retention, but does not elaborate on the retention policy or other side effects. With no annotations, the description provides basic behavioral context but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Perfectly concise for the information provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description omits details about the retention behavior frequency, constraints on entry fields, and any error conditions. Leaves significant gaps for a tool with 8 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain any parameters. It mentions a 'structured entry' but gives no details on fields or their semantics, forcing the agent to rely solely on param names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'append' and resource 'log.md', and includes the additional behavior of trimming old entries. This is specific and distinguishes from sibling tools like 'create_raw_source' or 'apply_candidate'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. It does not mention prerequisites, scenarios, or when not to use it, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_candidateC
Apply an approved Candidate bundle atomically.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | No | ||
| approved | Yes | ||
| bundle_id | No | ||
| request_id | No | ||
| base_hashes | No | ||
| candidate_id | Yes | ||
| expected_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions 'atomically' which hints at transactional behavior, but it does not state whether the operation is destructive, idempotent, or what side effects occur (e.g., state changes). The agent is left to guess about safety and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, but at the cost of being under-specified. It lacks critical information that would make it concise yet informative. Ideally, conciseness should not sacrifice completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no schema descriptions, no annotations, and an output schema, the description is woefully incomplete. It does not explain inputs, outputs, or behavior. The output schema exists but is not leveraged. This is far from sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. However, it does not mention any parameter. Required params 'candidate_id' and 'approved' are not described, nor are optional ones like 'ops', 'bundle_id', etc. The description adds zero value to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Apply an approved Candidate bundle atomically' provides a verb and resource, but 'apply' is vague and doesn't specify the outcome (e.g., create, update, delete). Among siblings, 'create_update_candidate' exists, but no differentiation is given. The term 'atomically' adds some context but not enough to fully distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'create_update_candidate'. The description implies a prerequisite state ('approved') but does not explain when the tool should be invoked or what conditions must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compile_pageC
Compile a raw source into a persisted formal page Candidate.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| topic | No | ||
| domain | No | general | |
| source | Yes | ||
| page_type | No | concept | |
| confidence | No | medium | |
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'persisted', implying creation, but lacks details on authorization, side effects, or return value. The description is insufficient for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the verb and object. However, it is too sparse to be effective; every word is necessary but not sufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no annotations, the description fails to provide sufficient context for correct usage. It does not explain what a 'Candidate' is or how parameters influence compilation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no information about any of the 7 parameters beyond the implicit 'source'. Parameters like tags, topic, domain remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Compile a raw source into a persisted formal page Candidate.' It explains the action and result, but does not differentiate from sibling tools like create_update_candidate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as create_raw_source or apply_candidate. The description provides no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_raw_sourceA
Create a new raw source under raw/. Existing files are never overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the non-overwriting behavior, which is a critical safety trait. However, it does not detail permissions, side effects, or return behavior, but for a simple creation tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys purpose and key behavior. No redundant words; front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks explanation of what a raw source is, expected path format, content structure, or usage examples. With 3 parameters and no schema descriptions, the description does not provide enough context for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention any parameters (path, content, request_id). The agent gets no guidance on what each parameter means or how to format them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action 'Create' and the resource 'raw source under raw/', with a clear scope. It distinguishes from siblings like read_raw_source by specifying 'Existing files are never overwritten,' indicating it's for new files only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key guideline: 'Existing files are never overwritten,' which informs when to use this tool (for new files) and implies not to use it for updates. However, it lacks explicit mention of when not to use or direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_update_candidateC
Generate a persisted update Candidate for an existing formal page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| title | Yes | ||
| source | No | ||
| request_id | No | ||
| instruction | No | ||
| new_sources | No | ||
| new_sections | No | ||
| new_wikilinks | No | ||
| reason_for_update | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states that the candidate is 'persisted'. It omits behavioral traits such as whether it modifies the existing page, permissions required, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but insufficiently structured. It communicates the basic purpose but lacks critical details, making it under-specified rather than elegantly succinct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no annotations, and no parameter descriptions, the one-line description is grossly incomplete. It fails to explain what an 'update Candidate' is, how to use the parameters, or what the output schema provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the tool description adds no meaning to the 9 parameters. Only 'page' and 'title' are mentioned but not explained; other parameters like 'source', 'instruction', etc. are completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Generate' and resource 'persisted update Candidate for an existing formal page', clearly indicating the action and object. It distinguishes from sibling 'apply_candidate' by implying creation vs application, but not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'apply_candidate' or 'compile_page'. The description lacks context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_wikiC
Initialize a minimal Karpathy-style LLM Wiki structure without overwriting by default.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| profile | No | personal | |
| language | No | zh | |
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. The phrase 'without overwriting by default' provides some safety insight, but lacks details on side effects, permissions, or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, efficiently stating the core action and a key behavioral trait. It is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero annotations and 0% schema coverage, the description omits critical context about the wiki structure, parameter roles, and invocation outcomes. The existing output schema does not compensate for the lack of behavioral detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description does not explain any of the four parameters (root, profile, language, request_id). The agent receives no additional meaning beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool initializes a minimal Karpathy-style LLM Wiki structure, using a specific verb and resource. However, it does not differentiate from sibling tools like inspect_wiki or create_raw_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as create_raw_source or compile_page. The description only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_wikiC
Inspect whether a directory has the minimal llm-wiki structure.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the tool checks for wiki structure but does not explain what outcome indicates success, what happens if the directory is missing, or whether the operation has 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise. However, it lacks necessary detail for a minimally viable description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description should explain what the return value indicates (e.g., true/false, error). It does not, leaving the agent guessing about the tool's results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning of the 'root' or 'request_id' parameters. The description adds no value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects whether a directory has the minimal llm-wiki structure, using a specific verb and resource. This distinguishes it from sibling tools like init_wiki (which creates) and read_page (which reads content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor does it specify prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_health_reviewC
Summarize wiki health across lint, sources, duplicates, stale pages, and confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavioral traits. It says 'summarize' but does not specify if it modifies state, whether it's read-only, or what the output format is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks important details. It is not overly verbose, but brevity here is detrimental.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of summarizing multiple health metrics, the description is insufficient. It does not explain what the output contains or how to interpret the summary, even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (request_id) with no description in schema (0% coverage) and the description does not mention it at all, providing no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool summarizes wiki health across multiple dimensions (lint, sources, duplicates, stale pages, confidence). It distinguishes from siblings like run_lint which focuses on a single metric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Lacks context like 'use for an overview before specific checks'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pageC
Read a formal llm-wiki page and return wiki metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| limit | No | ||
| offset | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not explicitly confirm that the operation is read-only, idempotent, or free of side effects. The verb 'read' implies safety, but the description does not guarantee it nor disclose any constraints like rate limits or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It conveys the core purpose but omits supplementary details that could be efficiently added, such as parameter roles or behavioral notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description is not required to detail return values. However, the tool has 4 parameters with no schema descriptions and no annotations, so the description should compensate by explaining usage context, which it fails to do. The description feels incomplete for accurate invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with 0% description coverage, and the tool description does not clarify any parameter meanings. The agent must infer from names only (page, limit, offset, request_id), which is insufficient for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read) and the resource (formal llm-wiki page) and indicates the output (wiki metadata). However, it does not explicitly distinguish this tool from siblings like read_raw_source or compile_page, which also involve reading wiki content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions, leaving the agent without direction on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_raw_sourceC
Read an evidence-preserving raw source under raw/.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| offset | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits beyond the basic read operation. The phrase 'evidence-preserving' hints at immutability but is not explicit, and there is no mention of permissions, logging, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no waste, front-loading the core action and resource. Every word contributes to conveying the basic purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters, an output schema, and no annotations, the description is woefully incomplete. It does not explain return values, pagination behavior, or any limitations, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not document any of the four parameters (path, limit, offset, request_id) despite 0% schema coverage. It adds no meaning beyond what the input schema provides, leaving the agent to infer usage from names and types alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Read' and identifies the resource as 'evidence-preserving raw source' with a location 'under raw/', clearly distinguishing it from sibling tools like 'create_raw_source' and 'read_page'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'read_page' or 'inspect_wiki'. The description does not mention prerequisites, exclusions, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_lintC
Run wiki lint and return structured lint results.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | full | |
| request_id | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that lint is run and results are returned, but does not state side effects, permissions needed, or what linting entails. For a tool that likely performs analysis, more context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and single-sentence, with no wasted words. However, it could be slightly expanded to include parameter context. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters and an output schema, but the description omits any details about parameter usage, return structure, or behavioral effects. It is incomplete for an agent to understand how to invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds no information about parameters (mode, request_id, timeout_seconds). It does not explain their roles or defaults, leaving the agent without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Run) and resource (wiki lint) and mentions structured output. It distinguishes from sibling tools by specifying a specific lint operation, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., compile_page, inspect_wiki). The description does not provide context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_wikiC
Search llm-wiki formal pages and/or raw sources with wiki metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto | |
| type | No | any | |
| limit | No | ||
| query | Yes | ||
| scope | No | formal | |
| domain | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior, but it only states it is a search operation without mentioning idempotency, rate limits, result structure, or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure or front-loading of critical details, though it does convey the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters with 0% schema coverage and no annotations, the description is severely incomplete; the agent cannot safely invoke the tool without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no explanation for any of the 7 parameters, leaving the agent unable to understand how to use mode, scope, domain, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Search' and the target resources 'llm-wiki formal pages and/or raw sources' with added context of 'wiki metadata', effectively distinguishing it from sibling tools that read specific items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like read_page or read_raw_source, leaving the agent without explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_public_safetyC
Validate public-site candidate content for sensitive material.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| content | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only vaguely says 'validate' without explaining what happens upon detecting sensitive material or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it is under-informative for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no annotations, and 3 parameters, the description is insufficient. It does not cover parameter usage or output behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to any of the three parameters (page, content, request_id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Validate'), resource ('public-site candidate content'), and specific purpose ('for sensitive material'). It distinguishes from siblings like run_lint and apply_candidate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With 13 sibling tools, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_public_draftC
Render a public-site markdown draft candidate without publishing it.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| title | No | ||
| redact | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It states the tool does not publish, but provides no information about side effects, state changes, authentication needs, or rate limits. For a render-only tool, the lack of detail on potential state changes (e.g., temporary file creation) is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but severely under-specified for a tool with 4 parameters and 13 siblings. It lacks any structure, such as a breakdown of input or output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (1 required), an output schema, and multiple siblings, the description is incomplete. It does not explain what the rendered draft looks like, how to interpret output, or how it relates to other candidate-handling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameters. It fails to explain the purpose of 'page', 'title', 'redact', or 'request_id', leaving the agent without guidance beyond the schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders a public-site markdown draft candidate without publishing, using specific verb 'render' and resource 'public-site markdown draft candidate'. It implicitly distinguishes from publish-oriented siblings like 'apply_candidate', but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for previewing drafts, but provides no explicit guidance on when to use this tool versus siblings like 'apply_candidate' or 'compile_page'. No conditions, prerequisites, or exclusions are mentioned.
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.
14 tool updates
v0.1.0- First observed
append_log - First observed
apply_candidate - First observed
compile_page - First observed
create_raw_source - First observed
create_update_candidate - First observed
init_wiki - First observed
inspect_wiki - First observed
knowledge_health_review - First observed
read_page - First observed
read_raw_source - First observed
run_lint - First observed
search_wiki - First observed
validate_public_safety - First observed
write_public_draft
TDQS
Scored across 14 tools
Each tool targets a distinct action in the wiki lifecycle (init, inspect, read, write, compile, apply, lint, search, log, health review, validate, draft). There is no overlap or ambiguity between tool purposes.
All tools follow a consistent verb_noun pattern in snake_case (e.g., create_raw_source, apply_candidate, knowledge_health_review). No mixing of conventions or vague verbs.
14 tools is well-scoped for a wiki management server. The number covers all necessary operations without being excessive or insufficient.
The tool set covers the full lifecycle from initialization to inspection, raw source management, candidate compilation and application, linting, health review, search, logging, and public draft writing. No obvious gaps for the intended domain.
Maintenance
Related MCP Connectors
- hiveWikiOAuthai.hivewiki
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
Human-in-the-loop for AI agents over MCP: durable approvals with a hosted review page & audit trail
MarkupBase turns AI-generated Markdown and HTML into durable, versioned artifacts that people can review and discuss. Its MCP server lets agents publish new versions, preserve contextual comments, include hosted images, and respond to feedback through secure account-linked identities, creating a clear human review boundary without requiring real-time editing.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that enables AI agents to compile, refine, and interlink knowledge into a persistent wiki, replacing RAG with structured, curated knowledge.15322MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to search, read, and contribute to a structured markdown knowledge base with citations, freshness tracking, and a safe write path, providing a shared, auditable company memory.5MIT
- AlicenseNot gradedqualityAmaintenanceMCP governance server that lets AI agents build and maintain a persistent, versioned wiki of interlinked Markdown files through validated tools, enforcing invariants like linking, immutability, and one git commit per write.21Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server that gives AI coding agents a git-backed markdown wiki to read and update, enabling search, read, write, verify, ingest, promote, and lint operations on versioned knowledge documents with schema validation, staleness tracking, and contradiction detection.4MIT