sessionwiki
This MCP server lets agents search, read, audit, export, and (with confirmation) sync a local sessionwiki knowledge base.
Ask natural-language questions and get ranked wiki page snippets.
Search exact text across wiki pages, optionally including raw session transcripts.
List session transcripts by project and read full allowed wiki/raw/docs/site files.
Inspect wiki health with dashboard, confidence, lifecycle, entity search, and tag browsing.
Check wiki link structure for orphan pages and broken wikilinks.
Export the whole wiki as llms.txt, full text, JSON-LD, sitemap, RSS, manifest, or file list.
Import new agent sessions with a dry-run-first sync that writes only after explicit confirmation.
Adds Obsidian notes as a source, bringing them into the same tagged, searchable wiki alongside coding-agent sessions.
Uses Ollama as a local LLM synthesis backend to turn redacted session transcripts into summary and project wiki pages.
Connects to OpenAI-compatible LLM APIs for synthesizing session summaries and project wiki pages.
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., "@sessionwikisearch past sessions for how I fixed the flaky auth test"
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.
sessionwiki
Your AI coding sessions, compiled into a searchable, interlinked wiki β from Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode. Local-first, with LLM synthesis, a session graph, and an MCP server so your agents can look up what you already solved.
π Live demo: necroz.github.io/sessionwiki
27 synthetic sessions across five projects and seven agents (AugβNov 2026) β no personal data. Rebuilt from examples/demo-sessions/ on every push to master.

Why
Every agent you work with writes a full transcript to disk: the plan, the dead ends, the fix, the reasoning behind it. Hundreds of them, in five different formats, and you never look at them again.
sessionwiki turns that history into a knowledge base:
One place for every agent. Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode sessions land in the same wiki, tagged by agent, project, model and date.
Always current. Hooks, an OpenCode plugin and nightly timers keep it in sync without you running anything.
Readable. LLM synthesis writes a summary page per session; low-signal sessions are folded into cluster pages instead of cluttering the wiki.
Usable by your agents. A built-in MCP server lets Claude Code, ZCode or any MCP client search past decisions before redoing them.
Yours. Everything runs locally; transcripts are redacted on the way in, and
sessionwiki auditchecks the output before you publish anything.
Related MCP server: mnemo
Highlights
8 sources | Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot Chat / CLI, ZCode, OpenCode, Obsidian β each with its own agent badge |
Autosync | Claude Code |
Synthesis backends | Ollama, any OpenAI-compatible server (vLLM, SGLang, LM Studio, LiteLLM, hosted), agent-delegate, offline dummy |
Signal over noise | Low-signal session coalescing, wikilink cleanup, concurrency control, cost |
Static site | 365-day heatmap, token and cache stats, filterable sessions table, session pages with highlighted code, project pages with topics, session β project graph, βK search, dark mode |
MCP server | 12 tools: query, search, read, list sources, lint, sync, exports, dashboard⦠|
AI exports |
|
Safe by default | Redaction of usernames and 17 secret patterns, read-only database exports, OS file locks and atomic state writes, |
Screenshots
All screenshots come from the live demo and are regenerated with scripts/regen_docs_screenshots.py.
Every session, every agent β filter by project, model and date; each row carries its agent badge.

Session pages β the summary, the conversation, highlighted code and the tools that ran, plus token and cache usage.

Projects β topics, description, activity and tool usage per project, with freshness badges on the index.
|
|
Graph and search β sessions grouped around their projects; βK searches every page instantly.
|
|
Quick start
git clone https://github.com/necroz/sessionwiki.git
cd sessionwiki
./setup.sh # Windows: setup.bat β creates .venv, detects your agents
./sync.sh # convert new sessions into raw/
./build.sh && ./serve.sh # build the site and open http://127.0.0.1:8765setup creates a checkout-local .venv, installs the package, scaffolds raw/, wiki/, site/, enables the adapters for the agents it finds and runs sessionwiki doctor. The wrapper scripts use the venv automatically; for the CLI, activate it (source .venv/bin/activate) or call .venv/bin/sessionwiki.
Or install the published package β pick one:
uv tool install sessionwiki # uv: CLI in its own isolated environment
uvx sessionwiki --help # uv: run without installing
pip install sessionwiki # pip, inside a virtualenv
pip install 'sessionwiki[graph]' # + graphify graph engine (also works with uv tool install)Docker β serve a site you have built (image ghcr.io/necroz/sessionwiki, see Docker deployment for docker compose and running CLI commands in the container):
docker run --rm -p 8765:8765 -v "$PWD/site:/wiki/site:ro" ghcr.io/necroz/sessionwikiA step-by-step walkthrough with screenshots lives in the setup guide.
Connect your agents
Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot β read straight from their session folders on sessionwiki sync. To sync after every Claude Code reply, add a Stop hook to ~/.claude/settings.json:
{
"hooks": {
"Stop": [{ "hooks": [{ "type": "command",
"command": "cd /path/to/sessionwiki && .venv/bin/python -m sessionwiki sync --no-auto-build >/dev/null 2>&1 &" }] }]
}
}Parallel hook runs are safe: sync and synthesize take an OS file lock and write their state atomically.
ZCode keeps sessions in SQLite. sessionwiki exports them read-only and installs the hook and a nightly job for you:
sessionwiki zcode install --dry-run # show what will be written
sessionwiki zcode install # Stop + SessionStart hooks, systemd / launchd / Task SchedulerOpenCode (V2, opencode.db) gets a server plugin that runs autosync when a session goes idle:
sessionwiki opencode install --dry-run
sessionwiki opencode install # honours $XDG_CONFIG_HOMEHook-triggered runs skip instead of queueing when a cycle is already running; scheduled runs wait and catch up. Details: ZCODE.md, docs/adapters/opencode.md, and sessionwiki adapters for the full list.
LLM synthesis
sync fills raw/ with redacted transcripts. synthesize turns them into wiki pages: a summary per session, project pages, cross-links. Point it at any backend in config.local.json:
{
"synthesis": {
"backend": "openai",
"base_url": "http://127.0.0.1:8000/v1",
"model": "qwen3-coder",
"max_concurrency": 8,
"coalesce_low_signal": true
}
}sessionwiki synthesize --estimate # what it will cost before you run it
sessionwiki synthesize # new sessions only; idempotent
sessionwiki all --with-synth # synthesize β build β graph β export β lintBackends: ollama (local), openai (any OpenAI-compatible /v1: vLLM, SGLang, LM Studio, LiteLLM, hosted APIs), agent-delegate (let your coding agent write the pages), dummy (offline stubs). sessionwiki warns when a non-loopback base_url would send transcripts off your machine. See docs/modes/api/.
Ask your wiki from your agents (MCP)
Claude Code plugin β the MCP server, a skill that tells the agent when to search the wiki, and a SessionStart hook that puts the project's recent sessions into context. It asks for your sessionwiki folder on install:
/plugin marketplace add necroz/sessionwiki
/plugin install sessionwiki@sessionwikiAny MCP client β run the published package with uvx, and point SESSIONWIKI_HOME at the folder that holds raw/ and wiki/ (run sessionwiki sync there first):
{
"mcpServers": {
"sessionwiki": {
"command": "uvx",
"args": ["sessionwiki", "mcp"],
"env": { "SESSIONWIKI_HOME": "/path/to/your/sessionwiki" }
}
}
}From a source checkout, use "command": "/path/to/sessionwiki/.venv/bin/sessionwiki" with "args": ["mcp"]; the checkout is the data root, so no env is needed.
Add it to Claude Code, Claude Desktop, ZCode or any MCP client. Tools include wiki_query (ranked search over wiki pages in any language, falling back to raw transcripts), wiki_search (exact text, optionally over raw transcripts), wiki_read_page, wiki_list_sources, wiki_lint, wiki_sync, wiki_export, wiki_dashboard and more β 12 in total, stdio transport, no SDK dependency, path-traversal guarded.
CLI reference
sessionwiki init # scaffold raw/ wiki/ site/
sessionwiki sync # export ZCode/OpenCode + convert transcripts to markdown
sessionwiki synthesize # LLM summaries into wiki/ (--estimate, --coalesce-only, --force)
sessionwiki build # static site + AI exports
sessionwiki serve # local server on 127.0.0.1:8765
sessionwiki all # build β graph β export β lint (add --with-synth)
sessionwiki query "<question>" # ask the wiki a question from the terminal
sessionwiki graph # session/project and wikilink graph
sessionwiki lint # wiki lint rules
sessionwiki export # llms.txt, JSON-LD, sitemap, RSS, β¦
sessionwiki candidates # review candidate pages
sessionwiki adapters # available adapters and their state
sessionwiki doctor # check Python, deps, config, agent paths
sessionwiki audit # scan raw/ wiki/ site/ for usernames and secrets
sessionwiki zcode # export Β· autosync Β· install
sessionwiki opencode # export Β· autosync Β· install
sessionwiki mcp # MCP server on stdio
sessionwiki recall # a project's recent sessions, for a SessionStart hook
sessionwiki versionEvery subcommand has --help. Full reference: docs/reference/cli.md.
Configuration
Settings are layered; later files win:
examples/sessions_config.json β config.json β config.local.json
(shared defaults) (gitignored) (gitignored, machine-local)Put machine-specific values β synthesis backend and keys, redaction patterns, project roots, adapter toggles β in config.local.json. Reference: docs/configuration-reference.md. Use .llmwikiignore to exclude projects or sessions.
How it works
Claude Code Β· Codex Β· Cursor Β· Gemini Β· Copilot ZCode Β· OpenCode (SQLite)
β JSONL β read-only export
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
βΌ
sync β raw/sessions/*.md redacted, immutable
β
synthesize βΌ
wiki/ sources Β· projects Β· entities Β· concepts
β
ββββββββββββββββββΌβββββββββββββββββββ
βΌ βΌ βΌ
build β site/ MCP server exports (llms.txt, JSON-LD)Three layers, following Karpathy's LLM Wiki pattern: raw/ is the immutable source of truth, wiki/ is maintained by the LLM, site/ is generated. Your raw/ and wiki/ are gitignored β your data never enters the repository.
Privacy
Transcripts are redacted on conversion: your username, home paths and 17 kinds of keys and tokens, plus your own patterns.
ZCode and OpenCode databases are opened read-only.
Nothing leaves your machine unless you configure a remote synthesis backend β and sessionwiki warns when you do.
sessionwiki auditscansraw/,wiki/andsite/before you publish a site.
See docs/privacy.md and SECURITY.md.
Documentation
Documentation hub β start here
Setup guide Β· Installation Β· Use with Claude Code Β· Windows
CLI Β· Configuration Β· Architecture
Based on llmwiki
sessionwiki started as a fork of llmwiki by Pratiyush (MIT) at v1.3.82 and keeps its full history. Most of the converter, site, lint and MCP foundations are his work. sessionwiki adds the ZCode and OpenCode sources with autosync, the OpenAI-compatible synthesis backend, session coalescing, locking and atomic state, doctor and audit, the session graph, and a long list of fixes β see what's different and how to migrate.
Thanks also to Andrej Karpathy for the LLM Wiki idea, Python Markdown, highlight.js and vis-network.
Contributing
Read CONTRIBUTING.md. Keep PRs to one concern, use feat: / fix: / docs: / chore: / test: titles, add a CHANGELOG entry for feat and fix, and never commit real session data. CI must be green.
License
MIT Β© 2026 Igor Lashkevich (sessionwiki) Β· Β© 2026 Pratiyush (original llmwiki). See NOTICE.
Available Tools
12 toolswiki_category_browseBrowse by tagARead-onlyIdempotent
Browse the wiki by tag (the 'tags' frontmatter field; 'category' here means tag). Without tag: lists tags used by at least min_count pages, most used first, up to 100. With tag: lists up to 50 pages with that tag as 'path - title' (min_count is ignored). Returns plain text. Read-only. Use wiki_entity_search for named things and wiki_query for free-text questions.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional tag to drill into. If omitted, returns counts for all tags. | |
| min_count | No | Only include tags with >= this many pages (default 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive, yet the description adds real behavior: 100-tag cap, 50-page cap, most-used-first ordering, min_count being ignored in tag mode, and plain-text output format. The only thing missing is how the min_count threshold interacts with the 100-tag cap when many tags qualify.
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?
Front-loaded with the resource and its terminological caveat, then mode-by-mode behavior, then sibling routing. Dense but every clause carries information; nothing is redundant.
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?
For a two-optional-parameter read tool with no output schema, the description supplies result format ('path - title'), size caps, ordering, and sibling alternatives. An agent can call it correctly and predict the response without further information.
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 100%, so the baseline is 3, but the description goes further by documenting the cross-parameter interaction (min_count is ignored when tag is supplied) and the ordering of the untagged listing. That is genuine meaning beyond the schema, though tag format/normalization (case, matching rules) is unstated.
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?
States a specific verb and resource ('Browse the wiki by tag') and immediately disambiguates terminology ('tags' frontmatter field; 'category' here means tag). It then defines the two distinct modes of operation, so an agent knows exactly what the tool returns in each case.
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?
Gives explicit routing guidance: use wiki_entity_search for named things and wiki_query for free-text questions, implicitly reserving this tool for tag-based exploration. The two modes (no tag vs. tag) are each tied to their own output shape.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_confidenceList pages by confidenceARead-onlyIdempotent
List wiki pages whose frontmatter confidence (0.0-1.0) is between min_confidence and max_confidence; pages without a confidence value are left out. Returns plain text: the match count, then up to 50 lines of 'score path - title', lowest score first. Read-only. Use max_confidence=0.5 to find weak pages to recheck; use wiki_dashboard for the overall distribution.
| Name | Required | Description | Default |
|---|---|---|---|
| max_confidence | No | Only return pages with confidence <= this (0.0-1.0). Default 1.0. | |
| min_confidence | No | Only return pages with confidence >= this (0.0-1.0). Default 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare readOnly, idempotent, non-destructive, closed-world), the description discloses the return format ('plain text: the match count, then up to 50 lines of score path - title'), the ordering ('lowest score first'), and the silent 50-line cap plus omission of unscored pages. Those are exactly the behavioral traits the agent needs and cannot get from structured fields.
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?
One tightly packed passage: purpose and filter first, return shape second, safety flag third, usage routing last. Every clause (range, exclusion, truncation, ordering, alternative tool) carries information; nothing is redundant filler.
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?
There is no output schema, but the description fully compensates by describing the exact return structure, ordering, and truncation limit. Combined with zero required parameters and complete annotation coverage, an agent has everything needed to invoke and interpret this 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 coverage is 100% and both parameters already document their inclusive bounds and defaults, so the schema does the heavy lifting. The description only restates the range semantics ('between min_confidence and max_confidence') without adding format, edge-case, or interaction details beyond the schema, making 3 the correct baseline.
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 opens with a specific verb and resource ('List wiki pages') plus the exact filtering dimension (frontmatter confidence 0.0-1.0 between min_confidence and max_confidence). It also states the exclusion rule for pages without a confidence value, so an agent knows precisely what the result set is and how it differs from siblings like wiki_dashboard or wiki_query.
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?
It gives an explicit concrete call pattern ('use max_confidence=0.5 to find weak pages to recheck') and names the alternative tool for a different need ('use wiki_dashboard for the overall distribution'). When-to-use and when-to-use-something-else are both covered without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_dashboardWiki overviewARead-onlyIdempotent
Overview of the whole wiki in one call: total page count, pages per type (source, entity, concept, ...), pages per lifecycle state, and how many pages have high (>=0.8), medium, low (<0.5) or no confidence. Returns plain-text Markdown. Read-only, no parameters. Call it first to see the wiki's size and health, then use wiki_lifecycle or wiki_confidence for the page lists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered; the description adds the return format (plain-text Markdown) and the concrete confidence thresholds (>=0.8 high, <0.5 low) that the agent could not infer elsewhere. It stops short of noting whether results are cached or how large a wiki is practically handled, but for a zero-parameter aggregate read the disclosure is strong.
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?
Three sentences, front-loaded with the payload contents, then the return format and safety profile, then the routing advice. Every clause carries distinct information and none repeats the title verbatim.
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?
No output schema exists, but the description compensates by enumerating the metrics returned and the Markdown format. For a parameterless read-only aggregate, nothing an agent needs to select or invoke it correctly is missing.
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 tool takes no parameters, so per the baseline this starts at 4. The description correctly reinforces "no parameters," preventing an agent from inventing filtering arguments, though there is nothing further to document.
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?
Opens with a specific verb+resource+scope ("Overview of the whole wiki in one call") and enumerates exactly what the overview contains: total page count, pages per type, per lifecycle state, and confidence buckets. This is clearly distinguishable from siblings like wiki_confidence and wiki_lifecycle, which it names as the drill-down tools.
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?
States both when to call it ("Call it first to see the wiki's size and health") and which alternatives to use for follow-up detail (wiki_lifecycle, wiki_confidence for page lists). Ordering guidance is explicit rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_entity_searchFind entitiesARead-onlyIdempotent
Find entity pages (people, orgs, tools, libraries, APIs, projects, concepts): wiki pages with type: entity. name matches a case-insensitive substring of the title or path; entity_type matches exactly; when both are given both must match; with neither, every entity is listed. Returns plain text: the count, then up to 50 lines of '[type] path - title', sorted by title. Read-only. Use wiki_query for free-text questions and wiki_category_browse for tags.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Entity name substring (case-insensitive). | |
| entity_type | No | Filter by entity type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, but the description goes further and discloses the output shape ('plain text: the count, then up to 50 lines of [type] path - title, sorted by title') including a hard 50-line cap and sort order that appear nowhere in structured fields. That cap is exactly the kind of behavioral trait an agent needs in order to decide whether to narrow the query.
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 dense paragraph that is front-loaded with the resource definition, then matching rules, then return format, then routing. Parenthetical enumerations and separators keep it scannable and no sentence is redundant.
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?
There is no output schema, so the description carries the burden of describing return values, and it does so fully: count line, per-line format, cap, and sort order. Combined with zero required parameters and full schema coverage, an agent has everything needed to call and interpret this tool.
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 100%, so the schema baseline would be 3, but the description adds meaning the schema does not: it clarifies that name matches against the title OR path (the schema only says 'Entity name substring'), and it spells out the boolean combination and the list-everything default. Those are non-obvious semantics beyond the per-parameter descriptions.
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 names a specific verb and resource ('Find entity pages') and enumerates the entity family (people, orgs, tools, libraries, APIs, projects, concepts). It also defines the underlying selection precisely as 'wiki pages with type: entity', which distinguishes it from the generic wiki_search sibling without needing its schema.
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 final sentence explicitly routes the agent elsewhere: 'Use wiki_query for free-text questions and wiki_category_browse for tags', naming both alternatives and the condition that selects each. The matching rules ('when both are given both must match; with neither, every entity is listed') further tell the agent how to compose a call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_exportExport the whole wikiARead-onlyIdempotent
Return one generated export file from site/ as text, to load the whole wiki at once: 'llms-txt' (short llms.txt index), 'llms-full-txt' (all pages flattened), 'jsonld' (schema.org graph), 'sitemap' (sitemap.xml), 'rss' (feed of recent pages), 'manifest' (build manifest.json), or 'list' (JSON list of the export files that exist, with sizes). Output is cut at 200 KB. Read-only. Fails if the file is missing; run sessionwiki build first. For specific facts wiki_query is cheaper.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Which export format to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, so the description is not obligated to restate safety; it does add real behavior beyond them: output is truncated at 200 KB, the call fails when the file is missing, and the build prerequisite must be satisfied. The only gap is what an agent should do after hitting the 200 KB cutoff, which is not addressed.
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?
One front-loaded paragraph: purpose, format menu, truncation limit, failure mode, prerequisite, then the sibling routing. Every sentence carries information, with only the redundant 'Read-only.' clause duplicating the annotations.
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?
For a one-parameter tool with no output schema, the description must explain the return shape and it does: text output, 200 KB cap, and the special 'list' variant returning JSON with sizes. Combined with the failure and prerequisite notes, an agent has everything needed to invoke it 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 coverage is 100%, so 3 would be the baseline, but the description goes further by defining what each enum value actually yields (short index vs. flattened pages vs. schema.org graph vs. JSON file list with sizes). That meaning is absent from the schema, which only says 'Which export format to return.'
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?
States a concrete verb and resource (return one generated export file from site/) and enumerates every accepted format with a short gloss of each, so the agent knows exactly what the tool produces. It also distinguishes itself from wiki_query by noting that tool is cheaper for specific facts.
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?
Explicitly frames the use case (load the whole wiki at once) and names the alternative with the condition that selects it (wiki_query for specific facts). It also supplies the prerequisite that the build must have been run first, which an agent cannot infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_lifecycleList pages by lifecycle stateARead-onlyIdempotent
List wiki pages whose frontmatter lifecycle equals state (draft, reviewed, verified, stale or archived). Returns plain text: the match count, then up to 50 lines of 'last_updated path - title', newest first. Read-only. Use 'stale' or 'draft' to find pages to update; use wiki_dashboard to see how many pages are in each state.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Which lifecycle state to filter by. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still adds real behavior beyond that: it discloses the return shape (plain text, match count first), a hard cap of 50 lines, the 'last_updated path - title' line format, and newest-first ordering. Only the on-disk pagination escape hatch (how to see beyond 50) is left unstated.
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?
Four short sentences with zero filler: purpose, return format, safety, then routing to siblings. Each sentence carries distinct information, and the core purpose is front-loaded before the operational details.
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?
There is no output schema, and the description compensates by describing the return text, its fields, ordering, and truncation limit. Combined with annotations covering read-only behavior and a single fully-documented enum parameter, nothing an agent needs to call this correctly is missing.
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 100% and the enum already lists all five states, so the baseline is 3. The description goes further by tying states to intent β 'stale' or 'draft' are the ones that surface pages needing updates β which is meaning not present in the schema's 'Which lifecycle state to filter by.'
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?
States a specific verb and resource ('List wiki pages whose frontmatter lifecycle equals state') plus the exact filter dimension, which distinguishes it from wiki_search (content search), wiki_query, and wiki_category_browse. An agent can tell immediately what universe of results to expect.
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?
Gives explicit positive guidance ('use stale or draft to find pages to update') and names a concrete alternative with its distinct purpose ('use wiki_dashboard to see how many pages are in each state'). The when-to-use boundary is fully resolvable without opening another schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_lintCheck wiki linksARead-onlyIdempotent
Check the link structure of wiki/: find orphan pages (no inbound [[wikilinks]]; index, overview and log are exempt) and broken [[wikilinks]] that point to no page. Returns JSON {total_pages, orphan_count, orphans, broken_link_count, broken_links}, listing at most 50 of each. Read-only: it reports and changes nothing. Use it after wiki_sync or before publishing; use wiki_lifecycle or wiki_confidence to review page quality.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, and the description reinforces that with "reports and changes nothing." It adds genuinely non-obvious behavior beyond the annotations: the exact result keys and, critically, that orphans and broken_links are capped at 50 each, which tells an agent the output may be truncated rather than exhaustive.
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?
Front-loaded with the operation and findings, then the return shape, then the safety note, then routing to alternatives. Every sentence carries distinct information with no restatement of the title or name.
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?
There is no output schema, but the description enumerates the return JSON fields and the 50-item cap, so an agent knows what it will get back. Combined with read-only annotations, nothing needed to call this correctly is missing.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. It does implicitly confirm the scope is the whole wiki/ tree with no filtering options, which is the only parameter-adjacent fact an agent would need.
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?
Names a specific verb and resource ("Check the link structure of wiki/") and then defines both findings precisely: orphan pages as those with no inbound [[wikilinks]] (with index/overview/log explicitly exempt) and broken [[wikilinks]] pointing to no page. This is far more specific than the title and lets an agent distinguish it from sibling review tools like wiki_confidence or wiki_lifecycle.
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?
Gives explicit timing triggers ("after wiki_sync or before publishing") and names the alternative tools for a different job ("wiki_lifecycle or wiki_confidence to review page quality"). Both when-to-use and when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_list_sourcesList session transcriptsARead-onlyIdempotent
List raw session transcripts in raw/sessions/ (one markdown file per agent session), sorted by path, oldest first. Returns a JSON array of {path, project, date, filename, size_bytes}; project and date come from each file's frontmatter. Read-only. Use it to see which sessions exist for a project, then open one with wiki_read_page.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional substring of the project name, usually the workspace folder name (e.g. 'llm-wiki'). Omit to list every session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces "Read-only." Beyond that it adds genuinely new behavioral context: the exact directory, one-file-per-session granularity, deterministic oldest-first ordering, and the fact that project/date are derived from each file's frontmatter, which signals metadata can be missing or inconsistent.
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?
Three sentences, front-loaded with the action and scope, then the return shape, then the usage workflow. Every sentence carries distinct information: location, output fields, provenance, safety, and next step. No repetition of the title or filler.
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?
There is no output schema, and the description compensates by enumerating the returned object fields (path, project, date, filename, size_bytes) and explaining where project and date originate. For a single-optional-parameter listing tool, nothing an agent needs to call it correctly or interpret results is missing.
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 100%, and the single optional `project` parameter is documented in the schema as a substring match with the meaning of omitting it. The description adds no parameter-level detail beyond that, so the schema is doing the work and the baseline 3 applies.
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 names a specific verb and resource ("List raw session transcripts") and pins down scope ("in raw/sessions/"), granularity (one markdown file per agent session), and ordering ("sorted by path, oldest first"). An agent can distinguish this listing tool from content-oriented siblings like wiki_search and wiki_query without opening any schema.
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?
It gives an explicit usage path: "Use it to see which sessions exist for a project, then open one with wiki_read_page," naming the follow-up sibling directly. It lacks an explicit when-not statement (e.g. use wiki_search instead to find sessions by content), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_queryAsk the wikiARead-onlyIdempotent
Start here for questions about the user's past work ('what did I decide about X', 'how did I fix Y'), in any language: session pages keep the user's original request. Ranks wiki/ pages by keyword matches, rare words weighted higher (no LLM, no embeddings); service pages are skipped and project overview pages rank below sessions. Sessions that name the same tool or topic as two or more top hits rank too, marked 'via '. If no wiki page matches, it falls back to raw transcripts (see include_raw). Returns up to max_pages paths with a ~400-character snippet each, plus the start of wiki/overview.md; with no match, the start of wiki/index.md. Read-only. Open a full page with wiki_read_page; use wiki_search for exact wording.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | Natural-language question or keyword(s) to search for. | |
| max_pages | No | Maximum pages to return (default 5). | |
| include_raw | No | Raw session transcripts: true = always rank them too, false = never. Omit it to read them only when no wiki page matches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: keyword ranking with rare-word weighting, no LLM or embeddings, service pages skipped, project overviews ranked below sessions, 'via <name>' expansion for tool/topic co-occurrence, and raw-transcript fallback. The only small gap is that it doesn't say what happens when both wiki and raw produce nothing beyond the index.md fallback.
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?
Front-loaded and dense with no filler sentences, but the middle sentences are long and clause-stacked (ranking rules, via-marking, fallback), which makes the ranking paragraph harder to scan quickly. Slight tightening into bullets would improve it.
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?
There is no output schema, and the description compensates fully by describing the return shape (up to max_pages paths, ~400-char snippets, overview.md or index.md appendix). For a three-parameter read-only search tool whose annotations are already complete, nothing an agent needs is missing.
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 100% so the baseline is 3, but the description adds real meaning: include_raw's tri-state behavior is restated as a fallback policy tied to matching, max_pages is tied to the ~400-character snippet output, and the question parameter's language-independence and use of stored original requests are explained.
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?
Opens with a concrete verb-plus-resource framing ('Start here for questions about the user's past work') and gives example queries that pin down the intent. It explicitly contrasts itself with wiki_read_page (open a full page) and wiki_search (exact wording), so an agent can distinguish it from siblings without opening any schema.
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?
Says exactly when to use it (natural-language questions about past work, any language), when to use alternatives (wiki_search for exact wording, wiki_read_page for full content), and states the no-match fallback path. Both the selection condition and the exclusions are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_read_pageRead a pageARead-onlyIdempotent
Return the full text of one file, unmodified and not truncated. path is relative to the sessionwiki folder and must be under wiki/, raw/, docs/, examples/ or site/ (or README.md, CHANGELOG.md, CONTRIBUTING.md, LICENSE). Returns an error if the path is outside that set, escapes the folder, or does not exist. Read-only. Get paths from wiki_query, wiki_search or wiki_list_sources.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the sessionwiki folder, e.g. 'wiki/sources/clever-munching-parnas.md'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered elsewhere. The description still adds real behavior beyond that: no truncation, the path allowlist, and the three error conditions (outside the set, path escape, nonexistent). That is useful but it is largely a restatement of the access contract rather than deeper operational context such as size limits or encoding.
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?
Front-loaded with the return guarantee, then the path constraint, then errors, then sibling routing β a sensible order with no filler. The standalone "Read-only." sentence is mildly redundant against readOnlyHint but cheap enough to keep.
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 one parameter, no output schema and full annotation coverage, the description covers what an agent must know: what comes back, what paths are legal, and what happens on failure. Only minor gaps remain, such as behavior on very large files or binary content.
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 100%, so the schema already documents the sole path parameter with an example. The description adds the allowed-directory constraint and the requirement that the path be relative to the sessionwiki folder, which is genuinely beyond the schema, but it does not add format or edge-case detail beyond that single constraint.
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?
States a specific verb and resource ("Return the full text of one file") plus two distinguishing properties: unmodified and not truncated. That clearly separates it from the snippet-returning siblings wiki_query and wiki_search without opening their schemas.
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?
Explicitly routes path discovery to wiki_query, wiki_search or wiki_list_sources, making the division of labor between discovery tools and this single-file reader unambiguous. An agent knows to search first and read second.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_searchSearch exact textARead-onlyIdempotent
Find exact text: case-insensitive substring match, line by line, over wiki/ pages, plus raw session transcripts in raw/sessions/ when include_raw=true. Returns JSON {term, matches: [{path, line, text}], truncated, scan_incomplete, files_scanned, files_total, skipped_oversize_files}; stops at 200 matches (truncated), skips files over 4 MiB and reads at most 256 MiB per call (scan_incomplete). Read-only. Use wiki_query instead for ranked, question-style lookup; open a hit with wiki_read_page.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term (literal substring match). | |
| include_raw | No | Also search raw/sessions/ (default false β only wiki/). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds operationally important behavior: 200-match truncation, skipping files over 4 MiB, a 256 MiB per-call read cap, and a scan_incomplete signal for incomplete scans. Those limits directly affect result interpretation and are not available from the annotations or schema.
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?
Front-loaded with the core matching rule, then return shape, then limits, then alternatives β a sound ordering with no filler. The middle section is a semicolon-dense run-on that could be split into bullets, which costs it the top score.
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 no output schema, the description supplies the full return contract ({term, matches, truncated, scan_incomplete, files_scanned, files_total, skipped_oversize_files}) and explains which fields indicate partial results. Nothing essential for correct invocation or result interpretation is missing.
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 100%, so baseline is 3; the description nonetheless adds meaning beyond the schema by specifying case-insensitivity and line-by-line matching semantics for term, and by tying include_raw to the raw/sessions/ path. It stops short of elaborating further edge cases for term syntax, so not a 5.
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?
States a specific verb and resource plus the exact matching mechanism: 'case-insensitive substring match, line by line, over wiki/ pages'. It also scopes the raw/ extension to include_raw=true, so an agent can distinguish it from ranked-search siblings immediately.
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?
Explicitly routes the agent: 'Use wiki_query instead for ranked, question-style lookup' and 'open a hit with wiki_read_page'. This is a clear when-to-use plus named alternatives, the strongest form of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_syncImport new sessionsAIdempotent
Convert new agent sessions (Claude Code, Codex, Cursor, ZCode, OpenCode, ...) from their local session stores into markdown under raw/sessions/. Dry run by default: it only reports what would change. It writes only with dry_run=false and confirm=true; ask the user before that. A real run adds new files and never overwrites existing ones, so repeating it is safe; it may also rebuild site/. Returns the converter's output (last 256 KB) and fails after 120 s. Use it when wiki_list_sources lacks recent sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Required to actually write. Without confirm=true the call always runs as a dry-run regardless of dry_run. | |
| dry_run | No | If true (default), preview without writing. Set false ONLY together with confirm=true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the write and safety profile is partly covered. The description still adds real value beyond them: default dry-run behavior, the confirm gate, the no-overwrite guarantee that makes repetition safe, a possible site/ rebuild side effect, a 256 KB output cap and a 120 s timeout. The only shortfall is that the return payload is described in size, not in structure.
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?
Four sentences, each doing distinct work: what it converts, the safe default, the confirm requirement with the user-ask, and the operational envelope (idempotency, site rebuild, output size, timeout). It is front-loaded with purpose and scope. It is dense and slightly run-on, but no sentence is filler.
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?
There is no output schema, so the description correctly compensates by describing the return (converter output, last 256 KB) and a failure condition (120 s). Safety, idempotency, side effects, and prerequisites are all covered for a mutating import tool. The only gap is that the shape of the returned converter output is unspecified beyond its size.
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 100% and each parameter already documents its own interaction ('Without confirm=true the call always runs as a dry-run regardless of dry_run'), so the schema does the heavy lifting. The description's 'writes only with dry_run=false and confirm=true' restates the same rule rather than adding syntax or format detail. This is the baseline case where the schema, not the prose, carries parameter meaning.
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 gives a specific verb and resource β convert local agent session stores (Claude Code, Codex, Cursor, ZCode, OpenCode) into markdown under raw/sessions/ β and names the boundary against a sibling by pointing at wiki_list_sources for the coverage question. An agent can distinguish this from list/query/search siblings without opening the schema.
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?
It states the triggering condition explicitly ('Use it when wiki_list_sources lacks recent sessions'), the safe default (dry run), the exact gate for writing (dry_run=false plus confirm=true), and a human-in-the-loop prerequisite ('ask the user before that'). Nothing about when to call versus when not to call is left to inference.
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.
1 tool update
v2.0.5- Changed
wiki_query1 field changed- added
Input schema / properties / include_rawAdded value: +{ + "description": "Raw session transcripts: true = always rank them too, false = never. Omit it to read them only when no wiki page matches.", + "type": "boolean" +}
2 tool updates
v2.0.3- Changed
wiki_list_sources1 field changed- changed
Input schema / properties / project / descriptionPrevious value: -"Optional project slug to filter by."New value: +"Optional substring of the project name, usually the workspace folder name (e.g. 'llm-wiki'). Omit to list every session."
- Changed
wiki_read_page1 field changed- changed
Input schema / properties / path / descriptionPrevious value: -"Page path relative to the repo root."New value: +"File path relative to the sessionwiki folder, e.g. 'wiki/sources/clever-munching-parnas.md'."
12 tool updates
v2.0.2- First observed
wiki_category_browse - First observed
wiki_confidence - First observed
wiki_dashboard - First observed
wiki_entity_search - First observed
wiki_export - First observed
wiki_lifecycle - First observed
wiki_lint - First observed
wiki_list_sources - First observed
wiki_query - First observed
wiki_read_page - First observed
wiki_search - First observed
wiki_sync
TDQS
Scored across 12 tools
The four search-ish tools (wiki_query, wiki_search, wiki_entity_search, wiki_category_browse) overlap in intent, but each description explicitly states its niche and points to the others ('use wiki_query for free-text questions', 'use wiki_search for exact wording'). The three listing tools (wiki_dashboard, wiki_lifecycle, wiki_confidence) are similarly delineated: dashboard is the aggregate, the other two filter on a single frontmatter field. Only minor residual ambiguity remains for an agent choosing between ranked query and tag/entity browsing.
All 12 tools share the wiki_ prefix, which makes the set immediately recognizable. Most follow verb_noun (wiki_read_page, wiki_list_sources, wiki_entity_search, wiki_category_browse, wiki_search, wiki_query), but wiki_confidence, wiki_lifecycle and wiki_dashboard are noun-only names and wiki_lint has no object, a small deviation from the pattern.
12 tools is well within a reasonable scope for a wiki/knowledge-base server and each maps to a real operation (retrieval, listing, health checks, sync, export). There is mild redundancy in having three separate page-listing tools (lifecycle, confidence, dashboard) that could conceivably be one parameterized tool, but nothing feels padded.
The read/retrieve/inspect side is thorough (ranked query, exact search, read, lint, dashboard, filters, export), but the surface is essentially read-only: there is no tool to create, edit, or delete a wiki page, and no way to add tags or frontmatter, so an agent that needs to correct or author content hits a dead end. Sync only ingests raw session files, which partially compensates but does not cover page authoring.
Maintenance
Related MCP Connectors
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Shared memory for coding agents. Stop re-explaining your codebase every session.
A cited wiki of your GitHub repo: search, read pages, find symbols and ask, with line citations.
Project memory, documentation and controlled secret access for AI coding agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceExposes a living systems memory vault to autonomous agents, letting them search notes with BM25 ranking, read sections within token budgets, extract API/port/schema contracts, compute dependency blast radius, and run machine-verifiable invariant assertions before mutating code. It also supports surgical frontmatter edits, schema linting, wikilink integrity checks, and worklog recording, over stdio MCP.MIT
- AlicenseNot gradedqualityCmaintenanceServes local-first project memory over stdio, exposing tools to inspect project state, search and retrieve context, report memory, and create Git-aware checkpoints for coding agents.1Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI coding agents to consult a project's Git-versioned Markdown knowledge base over local stdio β checking knowledge health, listing the catalog, searching topics, and reading guides before acting. Access stays read-only, so project guidance, decisions, and lessons learned remain shared with human teammates and traceable beside the code.41MIT
- FlicenseNot gradedqualityAmaintenanceGives MCP-capable coding agents a single ask tool that returns cited Markdown answers grounded in a compiled wiki of the user's notes, docs, and transcripts. Runs locally over stdio or remotely as a streamable-HTTP endpoint at /mcp with optional bearer-token auth.-



