agent-wiki
Provides integration with Atlassian products, enabling import of Confluence pages and Jira issues with full hierarchy, supporting both Atlassian Cloud and self-hosted Server/Data Center.
Allows importing Confluence pages with full hierarchy, supporting both Cloud and self-hosted instances, via a one-command import.
Allows importing Jira issues with full hierarchy, supporting both Cloud and self-hosted instances, via a one-command import.
Click on "Install 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., "@agent-wikisearch the wiki for deployment instructions"
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.
agent-wiki
The knowledge base that makes AI agents smarter over time.
Instead of retrieving raw fragments every query (RAG), your agent compiles, refines, and interlinks knowledge — like a team wiki that writes itself.
Works with Claude Code, Cursor, Windsurf, and any MCP client. Also installable as a native skill for Claude Code. No LLM built in — your agent IS the intelligence.
agent-wiki is also evolving into the reference implementation of Open Knowledge Format (OKF): a Git-native package format for agent-maintained knowledge with immutable source evidence, mutable compiled pages, schemas, indexes, evidence metadata, and machine-checkable governance.
agent-wiki's built-in 3D graph view
Pages as nodes, [[wikilinks]] as edges, edits push live — included in the main package.
Quick Start
Option A: MCP Server (Cursor, Windsurf, Claude Desktop, any MCP client)
Add to your MCP client config:
{
"mcpServers": {
"agent-wiki": {
"command": "npx",
"args": ["-y", "@agent-wiki/mcp", "serve", "--wiki-path", "/path/to/knowledge"]
}
}
}Option B: Native Skill (Claude Code)
npm install -g @agent-wiki/mcp
# Install as Claude Code plugin
agent-wiki install claude-codeOption C: CLI only
npx @agent-wiki/mcp call wiki_search '{"query": "deployment"}'Option D: 3D Graph Viewer
See your wiki as a realtime 3D knowledge graph — edits push live via SSE. Included in the main package, no separate install needed.
npm install -g @agent-wiki/mcp
agent-wiki web --wiki-path ./wiki --openHeavy browser libs (3d-force-graph, three.js) load from a CDN at runtime. See graph-viewer/README.md for the full feature list and interaction guide.
That's it. Your agent now has a persistent, structured knowledge base.
Related MCP server: BENZEMA's Personal Knowledge Card
Why Not RAG?
RAG | agent-wiki | |
Approach | Retrieve fragments at query time | Build and maintain compiled knowledge |
Memory | Stateless — forgets after each query | Persistent — knowledge accumulates |
Quality | Raw chunks, often noisy | Curated, structured, interlinked |
Cost | Embedding + retrieval every query | One-time compilation, free reads |
Contradictions | Invisible — buried in source docs | Flagged automatically by lint |
Source tracking | Lost after retrieval | Full provenance chain (raw -> wiki) |
Features
Feature | Description |
Batch Mode | Generic |
Knowledge Pipelines | Unified |
Structured Extraction | PDF (per-page), DOCX, XLSX (per-sheet), PPTX (per-slide) — segments with source provenance |
Immutable Sources | SHA-256 verified |
Knowledge Compilation | Agent builds structured wiki pages from raw sources — not retrieve-and-forget |
BM25 Search | Field-weighted scoring, synonym expansion, fuzzy matching, CJK tokenization — zero LLM |
Hybrid Search | Optional BM25+vector re-ranking via |
Auto-Classification | Zero-LLM heuristic assigns entity types and tags across 10 categories |
Multi-Level Indexes | Auto-generated |
Self-Checking Lint | Catches contradictions, broken links, orphan pages, stale content |
Coverage Report |
|
Atlassian Import | One-command Confluence pages and Jira issues with full hierarchy. Supports both Atlassian Cloud ( |
File Versioning | Auto-version same-name files, query latest, list all versions |
Language Plugins | Deterministic parsers + cross-file knowledge graphs for legacy code. COBOL shipped with field lineage in three families (shared-copybook reuse, |
Skill Install | One-command install as native skill for Claude Code and compatible clients |
Git-Native | Plain Markdown — diffable, blameable, revertable |
Open Knowledge Format (OKF) | Directional package contract: |
3D Graph Viewer | Built-in — realtime 3D graph of pages and |
Architecture
Three immutability layers, inspired by how compilers work:
Layer | Mutability | Role |
raw/ | Immutable | Source documents — write-once, SHA-256 verified |
wiki/ | Mutable | Compiled knowledge — structured pages that improve over time |
schemas/ | Reference | Entity templates — consistent structure across knowledge types |
Open Knowledge Format (OKF)
The same layers are being formalized as OKF: a portable knowledge package that another agent or tool can inspect without a hosted service.
agent-wiki-package/
agent-wiki.yaml # portable package manifest
raw/ # immutable source evidence
wiki/ # mutable compiled knowledge
schemas/ # page/entity contracts
indexes/ # rebuildable search/graph artifacts
evidence/ # provenance, confidence, coverage, page classes
logs/ # optional operational telemetryImportant distinction: .agent-wiki.yaml remains runtime/operator config; agent-wiki.yaml is the portable OKF manifest. OKF v0.1 now has an executable path: schemas/agent-wiki-okf.schema.json, wiki_admin action: "format-check", and optional persisted package reports at evidence/okf-report.json via wiki_admin action: "rebuild" with okf_report: true.
See Open Knowledge Format for the thesis and OKF Adoption Plan for the implementation plan and feasibility assessment.
Design Principles
Raw is immutable — Source documents are write-once, SHA-256 verified. Ground truth never changes.
Wiki is mutable — Compiled knowledge improves with every interaction.
No LLM dependency — Zero API keys, zero cost per operation. Your agent IS the intelligence.
Self-checking — Lint catches structural issues and flags potential contradictions.
Knowledge compounds — Every write enriches the whole wiki. Synthesis creates higher-order understanding.
Provenance matters — Every wiki claim traces back to raw sources.
Git-native — Plain Markdown. Every change is diffable, blameable, and revertable.
Integration
Method | Best For | Setup |
MCP Server | Cursor, Windsurf, Claude Desktop, any MCP client | Add to |
Native Skill | Claude Code (native plugin) |
|
CLI | Any agent with shell access |
|
3D Graph Viewer | Visual exploration of the whole wiki |
|
Language Plugins
agent-wiki extends to source-code analysis via language plugins —
deterministic parsers + cross-file knowledge graphs, no LLM. Each
plugin emits structured artifacts (raw/parsed/<lang>/) and writes
wiki pages with full provenance back to the source files.
Language | Status | Capabilities |
COBOL | Shipped | AST parser (fixed-format with mainframe alphanumeric sequence areas + free-format). Programs, copybooks, sections, |
JCL | Planned | Job / step / dataset / proc extraction, batch-flow wiki pages, dataset-mediated cross-program lineage. See PRD Phase 2. |
Tier-gate decisions (Phase C precision gates, dynamic-call resolver, DB2 column pairing) are evaluated against ground-truth fixtures via a built-in precision / recall eval harness — each PR runs against a committed NIST CCVS slice as a corpus-level regression anchor.
Hybrid Search Setup
Upgrade from keyword-only to semantic search with two steps:
1. Add to .agent-wiki.yaml:
search:
hybrid: true2. Run wiki_admin once to rebuild and embed all pages:
agent-wiki call wiki_admin '{"action":"rebuild"}'The first run downloads the Xenova/all-MiniLM-L6-v2 model (~90 MB) from HuggingFace Hub and caches it locally. After that, every wiki_write automatically keeps the vector index up to date.
Hybrid mode blends BM25 + cosine similarity scores. If embedding fails for any reason, search falls back to pure BM25 — queries never fail.
See Search configuration for weight tuning.
Documentation
Request Optimization — Batch Digest, Pagination, Context Limits
Open Knowledge Format — Git-native knowledge packages for agents
OKF Adoption Plan — feasibility, current-state audit, and implementation plan
Acknowledgment
Inspired by Andrej Karpathy's LLM Wiki concept — the idea that AI agents should compile and maintain knowledge, not just retrieve raw fragments. This project is an independent, full implementation of that vision.
License
MIT
Available Tools
15 toolsbatchA
Execute multiple tool calls in a single request. Reduces tool-call count for LLM subscriptions that bill per-request (e.g. GitHub Copilot). Supports ANY combination of tools — e.g. read 5 wiki pages, write 3 pages, add 2 raw files, search, all in one call. Wiki index rebuild is automatically deduplicated (runs once at the end, not per-write). Each operation is independent — one failure does not abort the batch. Nested batch calls are not allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | Array of operations to execute sequentially |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses wiki index rebuild deduplication and independence of operations, but does not mention safety aspects (e.g., possibility of destructive writes) or response format. Lacks warnings about auth or rate limits.
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 front-loaded with purpose, includes examples and constraints in a clear, concise manner. Every sentence adds useful information without redundancy.
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's complexity (batch execution) and no output schema, the description covers key behaviors: operation independence, no nesting, deduplication. However, it does not describe the response structure, ordering beyond schema's 'sequentially', or potential limits on operation count.
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% (operations array described), so baseline is 3. The description adds value by providing concrete examples of tool combinations and explicitly forbidding nested batch calls, which is not in 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 explicitly states 'Execute multiple tool calls in a single request,' providing a specific verb and resource. It distinguishes the batch tool from sibling tools by explaining its batching capability and use case for reducing per-request bills.
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 clearly indicates when to use the tool: 'Reduces tool-call count for LLM subscriptions that bill per-request (e.g. GitHub Copilot).' It also specifies supported operations (any combination), exclusion of nested batch calls, and behavior of independent operations with per-failure non-abort.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_parseA
Parse a source file from raw/ into structured code knowledge (AST, normalized model, summary). Currently supports COBOL (.cbl, .cob, .cpy). Persists artifacts under raw/parsed/cobol/. Optionally traces all references to a variable.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to source file in raw/ (e.g. 'PAYROLL.cbl') | |
| trace_variable | No | Optional: variable name to trace (e.g. 'WS-TOTAL-SALARY') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: it persists artifacts under a specific path, optionally traces variable references, and currently supports only COBOL. It does not mention permissions, reversibility, or side effects of overwriting artifacts.
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, no redundancy, front-loaded with the main action. Every sentence adds value: what it does, supported languages, output location, optional parameter.
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 no output schema, the description explains the transformation (AST, model, summary) and artifact persistence. It covers language support and optional tracing, though it does not mention if the tool returns anything or only persists files.
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 adds no new semantics beyond the schema; it restates 'path' and 'trace_variable' without elaboration on format or constraints.
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 it parses a source file into structured code knowledge (AST, normalized model, summary), specifies supported COBOL extensions, and distinguishes from sibling tools like raw_read (read raw) or code_query (query code).
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 implies usage for code analysis but does not explicitly state when to use this tool versus alternatives like raw_read or code_query. No when-not or exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_queryA
Query parsed code knowledge. Select query_type to control behavior:
trace_variable: Trace all references to a variable in a parsed source file — shows where it is read, written, or passed, grouped by section/paragraph.impact: Query the compiled knowledge graph for downstream impact — returns affected programs, copybooks, or datasets grouped by dependency depth, with evidence and uncertainty markers.procedure_flow: Query parsed procedure/section PERFORM flow for one source file — returns section-level and paragraph-level flow, optionally focused on one procedure.field_lineage: Query compiled field-lineage artifacts — returns deterministic and inferred matches for one field, optionally narrowed to a copybook or qualified name.dataflow_edges: Query field-level dataflow edges — MOVE/COMPUTE/ADD assignment, EXEC SQL host-variable, and CALL USING parameter edges. Filter byfrom/to, or setfield+transitive: trueto follow chains across the full graph.
| Name | Required | Description | Default |
|---|---|---|---|
| query_type | Yes | Query type: trace_variable, impact, procedure_flow, field_lineage, or dataflow_edges | |
| path | No | [trace_variable/procedure_flow/dataflow_edges] Path to source file in raw/ (e.g. 'PAYROLL.cbl') | |
| variable | No | [trace_variable] Variable name to trace (e.g. 'WS-TOTAL-SALARY') | |
| node_id | No | [impact] Canonical node ID or logical name (e.g. 'copybook:DATE-UTILS' or 'DATE-UTILS') | |
| kind | No | [impact] Optional node kind: program, copybook, dataset, job, or step | |
| max_depth | No | [impact/dataflow_edges] Maximum traversal depth (default: 10) | |
| language | No | [impact/field_lineage] Compiled language artifact set to read (default: 'cobol') | |
| procedure | No | [procedure_flow] Optional procedure/section/paragraph name to focus traversal from (e.g. 'A100-INIT') | |
| procedure_kind | No | [procedure_flow] Optional procedure kind filter: section or paragraph | |
| field_name | No | [field_lineage] Field name to query (e.g. 'CUSTOMER-ID') | |
| qualified_name | No | [field_lineage] Optional qualified field path (e.g. 'CUSTOMER-REC.CUSTOMER-ID') | |
| copybook | No | [field_lineage] Optional copybook canonical id or logical name (e.g. 'copybook:CUSTOMER-A' or 'CUSTOMER-A') | |
| from | No | [dataflow_edges] Filter: only edges whose source field matches (e.g. 'EMP-SALARY') | |
| to | No | [dataflow_edges] Filter: only edges whose target field matches (e.g. 'WS-TOTAL-SALARY') | |
| field | No | [dataflow_edges] Starting field for transitive traversal (requires transitive: true) | |
| transitive | No | [dataflow_edges] Follow edges transitively from `field` (default: false) | |
| direction | No | [dataflow_edges] Traversal direction when transitive: true — downstream (default), upstream, or both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
For each query type, the description explains what is returned (e.g., reads/writes, affected programs, flow, lineage, edges) and mentions uncertainty markers and transitive chains, providing full behavioral clarity without annotations.
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 well-organized in a bullet list, front-loaded with purpose, and every sentence is informative without redundancy.
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 17 parameters and no output schema, the description compensates by detailing return behaviors per query type, making it sufficiently complete for an 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?
Schema coverage is 100%, so baseline is 3. The description adds value by grouping parameters per query type and explaining their role, which aids selection.
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 queries parsed code knowledge, lists five distinct query types with specific purposes, and differentiates from sibling tools like code_parse and knowledge_ingest.
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 detailed guidance on when to use each query type and which parameters apply, but lacks explicit exclusions or alternatives for sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_ingestA
Knowledge ingestion pipeline. Select mode to control behavior:
batch: Batch import, extract, chunk, and pack source documents into digest packs. Scans a directory (or single file), imports to raw/, extracts text with structural provenance (per-page PDF, per-sheet XLSX, per-slide PPTX), chunks into fixed-line segments, then packs into markdown digest packs under raw/digest-packs/{topic}/. Files already in raw/ are skipped.digest_write: Write LLM-generated digest summaries to wiki with structured provenance. Creates or updates one or more wiki pages from digested content, linking back to source raw files and digest packs. Index is rebuilt once at the end. Each page gets auto-classified, auto-routed, and timestamped.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Ingestion mode: batch (import and pack source documents) or digest_write (write LLM summaries to wiki) | |
| source_path | No | [batch] Absolute path to a directory or single file to ingest | |
| pattern | No | [batch] Glob filter when source_path is a directory (e.g. '*.pdf', '*.{xlsx,docx}') | |
| maxFiles | No | [batch] Maximum files to process (default: 100, max: 1000) | |
| topic | No | [batch] Topic name for organizing digest packs (default: 'general') | |
| chunkLines | No | [batch] Maximum lines per chunk (default: 100) | |
| packLines | No | [batch] Maximum lines per digest pack (default: 500) | |
| continueOnError | No | [batch] Continue processing on individual file errors (default: true) | |
| pages | No | [digest_write] Array of wiki pages to write |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses several behavioral traits: files already in raw/ are skipped, index is rebuilt once after digest_write, auto-classification and auto-routing occur, and timestamps are added. It also details the extraction process (per-page PDF, per-sheet XLSX, etc.). However, it doesn't mention side effects like overwriting existing data or security/auth requirements.
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 well-structured with clear sections for each mode and bullet points for parameters. It is concise, with no extraneous information, and every sentence adds value. However, it could be slightly more condensed without losing clarity.
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 (9 parameters, two modes, no output schema, no annotations), the description is fairly complete. It explains the overall pipeline, each mode's workflow, and key behaviors like file skipping and index rebuilding. It lacks an explanation of the return value or output format, but the absence of an output schema lessens the need.
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 already provides 100% description coverage for all 9 parameters. The tool description adds value by explaining the purpose of the mode parameter and summarizing the role of batch parameters (e.g., 'Scans a directory... imports to raw/'). This contextualizes the parameters beyond their schema definitions.
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 it is a knowledge ingestion pipeline with two distinct modes: batch (import, extract, chunk, pack) and digest_write (write LLM summaries to wiki). It differentiates from sibling tools like raw_ingest (which only imports raw files) and wiki_write (which only writes pages) by covering the full ingestion and summary writing process.
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 explains when to use each mode: batch for importing and packing source documents, digest_write for writing wiki summaries. However, it does not explicitly state when not to use the tool or mention alternative tools like raw_ingest for simpler raw file imports. The context is clear but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_coverageA
Report which raw/ files are not yet referenced by any wiki page. Answers 'what should I compile next?' — returns uncovered files sorted by recency/size, plus overall coverage ratio. Matches frontmatter 'sources' and inline 'raw/...' body references. Parsed artifacts (raw/parsed/) are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max uncovered entries to return. Default: 50. | |
| sort | No | Sort order for uncovered entries. Default: 'newest'. | |
| tag | No | Only consider raw files with this tag. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It describes matching behavior (frontmatter sources and inline raw references), exclusions (parsed artifacts), and output (sorted by recency/size plus coverage ratio). No contradictions.
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 two sentences, front-loaded with the core purpose in the first sentence, and no wasted words.
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 description covers purpose, matching method, exclusions, and output. Although no output schema is provided, it mentions returned items and coverage ratio. For a reporting tool, this is sufficient.
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% with descriptions for all three parameters. The description adds context about sort options (recency/size) aligning with the enum, and implies limit defaults. However, it doesn't add much beyond what the schema already provides, so baseline 3.
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 reports which raw files are not referenced by any wiki page, answering 'what should I compile next?'. It specifies matching frontmatter 'sources' and inline 'raw/...' references, and that parsed artifacts are excluded. This distinctively sets it apart from siblings like raw_list and raw_ingest.
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 explicitly answers 'what should I compile next?', indicating when to use. It clarifies that parsed artifacts are excluded. However, it does not mention when not to use or provide alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_ingestA
Ingest raw source documents into the knowledge base. Select mode to control the ingestion method:
add: Add a local file or content string (immutable, SHA-256 verified). Supports directory imports. Single images (<10MB) returned inline — you MUST immediately call wiki_write to describe them.fetch: Download a file from a URL into raw/ (arXiv abstract URLs auto-converted to PDF). Single images returned inline — you MUST immediately call wiki_write to describe them.import_confluence: Recursively import Confluence pages with attachments and hierarchy. Supports both Cloud (*.atlassian.net/wiki/...) and Server / Data Center ({host}/spaces/...). Defaults to reading the CONFLUENCE_API_TOKEN env var; passauth_envto point at any other variable. Token format accepted:email:api-token(Cloud Basic),Bearer <pat>(explicit), or a bare PAT (Bearer prefix added automatically).import_jira: Import a Jira issue with comments, attachments, and linked issues. Supports both Cloud and Server / Data Center; auto-falls-back to REST API v2 on older Server / DC. Defaults to reading the JIRA_API_TOKEN env var; passauth_envto point at any other variable. Token format accepted:email:api-token(Cloud Basic),Bearer <pat>(explicit), or a bare PAT (Bearer prefix added automatically).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Ingestion mode: add (local file/content), fetch (URL download), import_confluence (Confluence pages), import_jira (Jira issues) | |
| filename | No | [add] Filename in raw/ (e.g. 'paper.pdf'). For directory imports, becomes subdirectory prefix (e.g. 'my-docs'). | |
| content | No | [add] File content as string. Either content or source_path is required. | |
| source_path | No | [add] Absolute path to local file or directory to copy into raw/. If directory, all files imported recursively. Either content or source_path is required. | |
| source_url | No | [add/fetch] Original URL where the document was downloaded from | |
| description | No | [add/fetch] Brief description of what this source contains | |
| tags | No | [add/fetch] Tags for categorization | |
| auto_version | No | [add] If true and file already exists, create a versioned copy (e.g. report_v2.xlsx) instead of failing. Default: false. | |
| pattern | No | [add] File pattern filter for directory imports (e.g. '*.html', '*.{html,css}'). Ignored for single files. | |
| url | No | [fetch] URL to download from. arXiv abs URLs auto-converted to PDF links. [import_confluence] Confluence page URL. [import_jira] Jira issue URL. | |
| recursive | No | [import_confluence] Import child pages recursively (default: false) | |
| depth | No | [import_confluence] Max recursion depth (-1 = unlimited, default: 50 when recursive=true) | |
| auth_env | No | [import_confluence] Auth env var name (default: CONFLUENCE_API_TOKEN). [import_jira] Auth env var name (default: JIRA_API_TOKEN) | |
| include_comments | No | [import_jira] Include issue comments (default: true) | |
| include_attachments | No | [import_jira] Download attachments (default: true) | |
| include_links | No | [import_jira] Import linked issues (default: true) | |
| link_depth | No | [import_jira] Levels of linked issues to follow (default: 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively covers key behaviors: image return and required follow-up action, arXiv URL conversion, directory import behavior, token format acceptance, and fallback to REST API v2 for older Jira Server. While it could mention rate limits or error handling, the level of detail is commendable for a complex tool.
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 structured with a leading sentence followed by a bulleted list for each mode, making it scannable. It front-loads the core purpose. However, it is lengthy (multiple paragraphs), which is justified by the tool's complexity. Every sentence contributes meaningful content, ensuring no redundancy.
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's high complexity (4 modes, 17 parameters, no output schema), the description provides thorough context: token handling for each service, image behavior, directory import patterns, and more. It lacks details about return values or error states, but the description is rich enough for an AI agent to use the tool effectively.
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?
Although the input schema already describes all 17 parameters (100% coverage), the description adds significant value by grouping parameters by mode, explaining token formats, and clarifying behaviors like arXiv URL auto-conversion and auto_version semantics. This contextual information goes beyond mere parameter listing, aiding correct parameter selection.
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's purpose: 'Ingest raw source documents into the knowledge base.' It enumerates four distinct modes with specific verbs ('add', 'fetch', 'import_confluence', 'import_jira'), making it easy for an AI agent to understand the scope. The purpose is well-differentiated from sibling tools like `raw_list`, `raw_read`, and `knowledge_ingest`, which handle different aspects of raw or knowledge management.
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 explicit guidance on when to use each mode, including detailed conditions for image handling ('you MUST immediately call wiki_write'), token format for Confluence/Jira, and auto-versioning. However, it does not explicitly state when NOT to use this tool (e.g., when `knowledge_ingest` would be more appropriate). This minor omission prevents a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_listA
List all raw source documents with metadata (path, source URL, download time, hash, size).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only list operation but does not explicitly state behavioral traits such as idempotency, rate limits, or authentication requirements. Without annotations, the description provides minimal transparency beyond the core action.
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, well-structured sentence that front-loads the purpose. No unnecessary words or redundancy.
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 tool with no parameters and no output schema, the description adequately conveys what the tool does. However, it omits potential details like pagination, sorting, or result limits, which could be useful for an 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?
There are no parameters, so the schema coverage is 100%. The description adds no parameter information, which is acceptable given zero parameters. Baseline score of 4 is appropriate.
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 lists all raw source documents and specifies the metadata fields returned. The verb 'list' and resource 'raw source documents' is specific and unambiguous, and no sibling tool overlaps directly.
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 raw_coverage or raw_versions. The description lacks any context about suitable use cases or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_readA
Read a raw source document's content and metadata. Raw files are immutable — this is read-only. Text/SVG files return content as string; document files (PDF, DOCX, XLSX, PPTX) have text extracted automatically; other binary files (images, etc.) return metadata only.
Pagination by format:
PDF: use 'pages' for page ranges (e.g. '1-5')
PPTX: use 'pages' for slide ranges (e.g. '1-10')
XLSX: use 'sheet' to read a specific sheet; response always includes 'sheet_names'
DOCX / text: use 'offset' + 'limit' for line-based pagination (default limit: 200)
For large documents, paginate rather than reading all at once.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename relative to raw/ (e.g. 'article-yolo.md') | |
| pages | No | Page/slide range (e.g. '1-5', '3', '1-3,7-10'). Applies to PDF and PPTX. Omit to read all. | |
| sheet | No | Sheet name for XLSX files. Omit to read all sheets (response always includes sheet_names list). | |
| offset | No | Line offset for paginating text/DOCX files. Default: 0. | |
| limit | No | Max lines to return for text/DOCX pagination. Default: 200, max: 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: raw files are immutable and read-only. It explains return formats per file type (content string for text/SVG, extracted text for documents, metadata only for binary) and pagination nuances (e.g., XLSX always returns sheet_names). This is highly transparent.
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 well-structured: a concise opening sentence, followed by a clear section on pagination by format, and a final recommendation. Every sentence adds value, and there is no redundancy.
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 no output schema, the description adequately explains what is returned for each file type and how pagination works. It covers all common formats. Missing details on error handling (e.g., missing file) or metadata structure for binary files, but overall it is sufficiently complete for a read 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%, but the description adds significant value by linking parameters to specific formats (e.g., 'pages' for PDF/PPTX, 'sheet' for XLSX) and explaining defaults (limit=200) and behavior when omitted. It provides contextual usage beyond schema 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 starts with 'Read a raw source document's content and metadata', providing a clear verb and resource. It distinguishes from sibling tools like raw_ingest, raw_list, and raw_versions by specifying the read operation.
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 gives detailed pagination guidance per file format (PDF, PPTX, XLSX, DOCX/text), including how to use parameters like 'pages', 'sheet', 'offset', and 'limit'. It also advises pagination for large documents. However, it does not explicitly compare to sibling tools (e.g., when to use raw_read vs wiki_read), but the resource type difference is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_versionsA
List all versions of a raw file, sorted by version number, with the latest version marked. Given a base filename (e.g. 'report.xlsx'), returns all matching versions (report.xlsx as v1, report_v2.xlsx, report_v3.xlsx, etc.) with metadata and a 'latest' field pointing to the newest file.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Base filename to list versions of (e.g. 'report.xlsx') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions returning metadata and a 'latest' field but lacks details on permissions, rate limits, or whether it is read-only. This is adequate but not enhanced.
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 with two sentences that cover all necessary information without any fluff. It is well-structured and front-loaded with the core action.
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 simplicity of the tool (one parameter, no output schema), the description provides adequate context including the return fields (metadata and latest field). It could mention pagination or limits, but for a version listing tool, it is sufficiently complete.
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 single parameter 'filename' has 100% schema coverage with a description. The tool description adds an example but does not introduce new semantics beyond what the schema already provides, so baseline 3 is appropriate.
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 (list), resource (versions of a raw file), and provides specific details like sorting by version number and marking the latest. It distinguishes itself from sibling tools such as raw_list or raw_read by focusing on version history.
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 use for listing versions given a base filename, but does not explicitly state when not to use it or compare with alternatives. However, the context of sibling tools makes the usage clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_adminA
Wiki administration and maintenance. Select action to control behavior:
init: Initialize a new knowledge base — creates wiki/, raw/, schemas/ directories and default templates.config: Show current workspace configuration: directories, lint settings, search settings, entity templates.format-check: Validate the portable OKF package manifest (agent-wiki.yaml), package inventory, and conformance findings against OKF v0.1.rebuild: Rebuild index.md, timeline.md, code knowledge graphs, and optionally the vector index (when search.hybrid is enabled). Set evidence_report=true to also regenerate the evidence report and persist it to wiki/evidence-report.md as part of the rebuild. Set okf_report=true to persist evidence/okf-report.json.lint: Run comprehensive health checks: contradictions, orphan pages, broken links, raw file integrity (SHA-256), synthesis page integrity. Set apply_fixes=true to auto-repair fixable issues.evidence-report: Aggregate evidence-first telemetry into a corpus-level Markdown report (source coverage, lineage diagnostics, 4-week write trend, Phase 2b readiness gates). Set write=true to also persist the report to wiki/evidence-report.md.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Administration action to perform | |
| path | No | [init] Config root — where .agent-wiki.yaml is created (default: current directory) | |
| workspace | No | [init] Separate workspace directory for wiki/, raw/, schemas/. If omitted, data goes in path. | |
| apply_fixes | No | [lint] If true, automatically fix auto-fixable issues (missing frontmatter → inject title/type/tags). Default: false. | |
| write | No | [evidence-report] If true, persist the report to wiki/evidence-report.md in addition to returning it. Default: false. | |
| evidence_report | No | [rebuild] If true, also regenerate the evidence report and persist it to wiki/evidence-report.md as part of the rebuild. Useful for keeping the dashboard fresh without a separate evidence-report call. Default: false. | |
| okf_report | No | [rebuild] If true, regenerate the OKF package inventory/conformance report and persist it to evidence/okf-report.json. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details behaviors for each action, such as creating directories, regenerating files, and auto-fixing issues. While it does not explicitly mention destructive potential or permissions, it gives sufficient context for expected outcomes.
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 organized with a clear introductory sentence and a bullet list of actions. It is relatively concise, though some action descriptions could be slightly trimmed without losing clarity.
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's complexity (multiple actions and parameters), the description covers each action's purpose and relevant parameters adequately. Without an output schema, it still describes expected outputs (e.g., config shows configuration, evidence-report returns a report).
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?
With 100% schema coverage, the description adds significant value by explaining how each parameter modifies behavior (e.g., apply_fixes for lint, write for evidence-report, evidence_report and okf_report for rebuild). This goes beyond the schema's basic 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 clearly states the tool's purpose as 'Wiki administration and maintenance' and enumerates specific actions (init, config, format-check, rebuild, lint, evidence-report), distinguishing it from sibling tools that handle read/write/ingest operations.
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 explicit guidance for each action, including parameters and effects. However, it does not explicitly state when not to use this tool or compare with alternatives, leaving some room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_deleteB
Delete a wiki page. Cannot delete system pages (index.md, log.md, timeline.md).
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Page path relative to wiki/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as irreversibility, permission requirements, or side effects of the deletion. For a destructive action, this is insufficient.
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 two sentences with no wasted words. Every sentence provides value: the action and a key constraint.
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 the simplicity (1 param, no output schema), the description lacks crucial context for a delete tool: irreversibility, safety, or usage conditions. It is incomplete.
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% with a description for the 'page' parameter. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
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 'delete' and the resource 'wiki page,' distinguishing it from siblings like wiki_read, wiki_write, and wiki_list. The action is unambiguous.
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 constraint ('Cannot delete system pages') which implies alternative tools for those pages, but it does not explicitly state when to use this tool versus alternatives or provide positive usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_listA
List all wiki pages, optionally filtered by entity type or tag.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by entity type (person, concept, event, artifact, code, comparison, summary, how-to, note, synthesis) | |
| tag | No | Filter by tag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly indicates the tool lists pages, but does not mention read-only behavior, pagination, or potential performance implications.
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 concise sentence with no wasted words, front-loading the primary action and optional filters.
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 no output schema, but the description does not specify what is returned (e.g., list of page titles or full content). Missing details on pagination or result set size, making it incomplete for an 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?
Schema description coverage is 100%, and the description repeats the filtering options. It adds no additional meaning beyond what the schema already provides.
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 'List all wiki pages' with optional filters, which is specific and distinguishes from siblings like wiki_read (single page) and wiki_search (keyword search).
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 listing pages but does not explicitly state when to use this tool over alternatives like wiki_search or wiki_read. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_readA
Read one or more wiki pages. Single page: pass page. Multiple pages: pass pages array — reads all in one request, saving N-1 round trips. RECOMMENDED WORKFLOW: (1) call without 'section' to get the TOC for large pages, (2) use wiki_search 'section' field to jump directly to the relevant heading, (3) call with 'section' to read only that part. Large pages without 'section' are truncated at 200 lines — check 'truncated' and 'toc' in the response.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page path relative to wiki/ (e.g. 'concept-gil.md'). Use for single-page reads. | |
| pages | No | Array of page paths for multi-page reads. Returns an array of results in one request. | |
| section | No | Heading to read (e.g. '## Installation'). Case-insensitive partial match. Returns that section and its sub-sections only. Use the 'section' field from wiki_search results to navigate directly. | |
| offset | No | First line to return, 0-indexed (default: 0). Fallback for line-based paging when section navigation is insufficient. | |
| limit | No | Max lines to return (default: 200, max: 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully assumes the burden of behavioral disclosure. It discloses truncation at 200 lines without a `section`, the presence of `truncated` and `toc` in the response, and the case-insensitive partial match for `section`. All key traits are transparently communicated.
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 with two well-structured paragraphs. The first paragraph states core functionality and the multi-page option; the second provides the recommended workflow. Every sentence adds value, and the information is 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?
For a read tool with 5 optional parameters and no output schema, the description covers all essential behaviors: single/multi-page reads, section navigation, truncation, and line-based paging fallback. It also mentions response fields (`truncated`, `toc`), making it complete for an agent to use 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 each parameter is described in the schema. The tool description adds meaning beyond the schema by explaining the workflow (e.g., using `pages` to save round trips) and the behavioral context (e.g., truncation, section navigation). This adds significant value, moving beyond the baseline of 3.
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?
Clearly states it reads wiki pages, distinguishes between single and multiple pages via `page` and `pages` parameters, and differentiates from sibling tools like `wiki_search` (search) and `wiki_write` (write). The verb "read" is specific, and the resource "wiki pages" is well-defined.
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?
Provides an explicit recommended workflow (1-2-3) for navigating large pages using `wiki_search` and `section`. It also advises when to use `section` to avoid truncation and mentions the round-trip savings of the `pages` array. This gives clear context for using the tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_searchA
Full-text keyword search across all wiki pages. Returns paths, scores, and snippets sorted by relevance. Uses BM25 by default; switches to hybrid BM25+vector re-ranking when search.hybrid: true is set in .agent-wiki.yaml (requires wiki_admin action:rebuild to build the vector index first). Set include_content=true for simple inline content (with optional inline_budget cap). Set read_top_n to additionally read the top N unique matching pages (deduplicated) — enables combined search+read in one call; returns a pages array with full content and nextReads for unread matches. Use type or tags to narrow results without a separate wiki_list call. When no results are found, returns a knowledge_gap field with a suggested page slug, title, type, and tags — use it to decide what to create with wiki_write.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (keywords) | |
| limit | No | Max results (default: 10) | |
| type | No | Filter results to a specific entity type (person, concept, event, artifact, code, comparison, summary, how-to, note, synthesis). Applied after BM25 ranking. | |
| tags | No | Filter results to pages that have at least one of these tags. Applied after BM25 ranking. | |
| include_content | No | If true, include page content inline in results. When a section matched, returns that section; otherwise returns first 200 lines. Saves a follow-up batch read. Default: false. | |
| inline_budget | No | Max total characters of inlined content across all results (only with include_content=true). Greedy — top-scoring results get content first; lower-scoring ones fall back to snippet-only when budget is exhausted. Omit for no limit. | |
| read_top_n | No | How many unique top-scoring pages to read in full (default: unset). When set, activates combined search+read mode: deduplicates search hits, reads up to N unique pages, and returns a `pages` array alongside `results`. Max: 10. | |
| section | No | Section heading filter applied to all page reads when read_top_n is set (e.g. '## Installation'). Case-insensitive partial match. | |
| per_page_limit | No | Max lines per page when read_top_n is set (default: 200, max: 500). Pages exceeding this are truncated with metadata. | |
| include_toc | No | Include table of contents for truncated pages when read_top_n is set (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: default BM25, hybrid mode conditional on config and rebuild action, greedy inline_budget, deduplication in read_top_n, section case-insensitive partial match, and knowledge_gap return on no results.
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?
Well-structured with core purpose first, then detailed parameter explanations. Slightly long but each sentence adds value. Could be slightly more concise, but no wasted words.
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 10 parameters and no output schema, description covers all parameters and important behaviors (hybrid mode, inline_budget, read_top_n, knowledge_gap). Agent can fully understand tool capabilities and make informed calls.
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% (baseline 3), but description adds value beyond schema: hybrid mode requires config and rebuild, inline_budget is greedy, read_top_n deduplicates and returns pages array, section is case-insensitive partial match, knowledge_gap field for no results.
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 it's a full-text keyword search across all wiki pages, returns paths, scores, snippets sorted by relevance. It distinguishes from siblings like wiki_list, wiki_read, and wiki_write by specifying its search functionality and the ability to combine search+read.
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?
Provides explicit guidance on when to use hybrid search, include_content, read_top_n, and filtering by type/tags. Mentions handling no-results with knowledge_gap. Does not explicitly list when not to use, but context implies its primary role for searching, not listing or reading specific pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wiki_writeA
Create or update a wiki page. Content should include YAML frontmatter (title, type, tags, sources) and Markdown body. Timestamps (created/updated) are auto-managed. Auto-routes root-level pages to matching topic subdirectories (via frontmatter topic field or tag matching). Auto-links: scans body for mentions of existing page titles and injects [[slug|text]] links automatically (skips code blocks, existing links, URLs). Wiki pages are MUTABLE — they represent compiled knowledge that improves over time. Set return_content: true to include the final written content in the response — eliminates the follow-up wiki_read call in write-then-reference workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Page path relative to wiki/ | |
| content | Yes | Full page content including YAML frontmatter and Markdown body | |
| source | No | Provenance — why this write is happening | |
| return_content | No | If true, include the final written content in the response. Eliminates a follow-up wiki_read call. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It discloses auto-management of timestamps, auto-routing of pages based on frontmatter, auto-linking with exceptions (code blocks, existing links, URLs), and states that wiki pages are MUTABLE. No contradictions.
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 well-organized paragraph, front-loaded with the main action, then details. Every sentence is meaningful, no redundancy.
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 description covers auto-routing and auto-linking behaviors thoroughly. It lacks explicit details on overwrite vs merge behavior when updating an existing page, but overall adequate for a write tool with no output schema.
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%, so baseline is 3. The description adds value for the return_content parameter by explaining its purpose (eliminates follow-up call) and default. No additional detail needed for other parameters.
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 'Create or update a wiki page' with specific resource (wiki page). It differentiates from sibling tools like wiki_read, wiki_delete, etc., and provides scope (page path relative to wiki/).
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 gives guidance on when to use return_content to avoid a follow-up wiki_read call, implying efficient workflows. It doesn't explicitly state when not to use this tool, but context from sibling tools is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, with unique names and detailed descriptions that prevent confusion. Overlaps are minimal and well-explained, e.g., raw_ingest vs knowledge_ingest handle different stages of ingestion.
All tool names follow a consistent verb_noun pattern using snake_case, such as wiki_read, raw_ingest, code_query. This makes the API predictable and easy to navigate.
With 15 tools, the set is well-scoped for a comprehensive knowledge base server, covering ingestion, parsing, search, and administration without being excessive.
The tool surface covers the full lifecycle of a wiki/knowledge base: init, config, add/read/update/delete content, search, raw file management, code analysis, and maintenance tasks like linting and rebuilds. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server that enables AI models to retrieve information from Ragie's knowledge base through a simple 'retrieve' tool.13291MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server provides LLMs with a live, curated knowledge base of AI agent research, world models, and source-code reviews, enabling personalized and context-aware responses. Users can either connect to the hosted knowledge or build and host their own vault.
- FlicenseNot gradedqualityCmaintenanceA self-hosted MCP server that gives AI agents persistent, searchable memory with importance scoring, knowledge graphs, and autonomous memory consolidation.1
- AlicenseNot gradedqualityCmaintenanceMCP server for persistent, compounding markdown wikis maintained by LLMs. Enables incremental knowledge base building with interlinked pages, search, and raw source management.331MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xinhuagu/agent-wiki'
If you have feedback or need assistance with the MCP directory API, please join our Discord server