requarks-wiki-mcp
Provides a built-in resource guide for Wiki.js-specific markdown syntax to assist agents in authoring and updating page content.
Includes a built-in guide for Mermaid diagram syntax to help agents create and manage visual diagrams within the wiki.
Enables comprehensive management of a Wiki.js knowledge base, including tools for page CRUD operations, full-text search, comment management, asset browsing, and site navigation.
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., "@requarks-wiki-mcpsearch the wiki for 'onboarding' and summarize the content of the top result"
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.
requarks-wiki-mcp
MCP server for a Wiki.js instance that lets agents use it like a knowledge base.
Features:
29 tools (19 read + 10 write) covering pages, comments, tags, assets, users, navigation, and system info.
Search, list, and browse pages for retrieval workflows (RAG-like usage).
Fetch page content by path or page ID, view version history and restore previous versions.
Browse site hierarchy with page tree, page links graph, and navigation structure.
Full comment system: list, read, create, update, and delete comments on pages.
Asset and folder browsing for media file discovery.
User context: current user profile and user search.
System diagnostics: version info, site config, and navigation tree.
Tag management: list, search, update, and delete tags.
Optional page create/update/delete/move/restore tools with explicit safety gates.
Built-in resources: markdown syntax guide, Mermaid diagram guide, and API permissions guide.
Typed error taxonomy with LLM-friendly error messages.
GraphQL client with timeout, exponential-backoff retry, and request correlation.
Security hardening: sensitive field filtering, URL validation, input length limits.
Requirements
Node.js 20+
A reachable Wiki.js hostname
Wiki.js API key (JWT) with proper permissions
Related MCP server: WikiJS MCP Server
Setup
cp .env.example .env
npm installConfigure .env:
WIKI_BASE_URL=https://your-wiki-hostname
WIKI_API_TOKEN=your_wikijs_api_key_jwt
WIKI_GRAPHQL_PATH=/graphql
WIKI_DEFAULT_LOCALE=en
WIKI_DEFAULT_EDITOR=markdown
# Mutating operations are disabled by default
WIKI_MUTATIONS_ENABLED=false
# Optional extra safety gate for writes. If set, write tools must pass matching confirm.
WIKI_MUTATION_CONFIRM_TOKEN=
WIKI_MUTATION_DRY_RUN=true
# Comma-separated path prefixes without leading slash (empty = no prefix restriction)
WIKI_ALLOWED_MUTATION_PATH_PREFIXES=
# HTTP resilience
WIKI_HTTP_TIMEOUT_MS=15000
WIKI_HTTP_MAX_RETRIES=2Environment variable reference:
Variable | Required | Default | Description |
| Yes | - | Base Wiki.js URL (for example, |
| Yes | - | Wiki.js API key JWT used in |
| No |
| GraphQL endpoint path appended to |
| No |
| Default locale used when tool input does not provide locale. |
| No |
| Default editor used for page creation when not specified. |
| No |
| Enables all write tools (page, comment, and tag mutations) when set to |
| No | `` (empty) | Optional extra safety gate. When set, write tool calls must provide matching |
| No |
| When |
| No | `` (empty) | Comma-separated path prefixes (without leading slash) allowed for mutations. Empty means no prefix restriction. |
| No |
| HTTP request timeout in milliseconds (including body reads). Minimum 1. |
| No |
| Max retries for transient read failures (408, 502-504). Mutations are never retried. Minimum 0. |
Wiki.js prerequisite (GraphQL + API key):
This MCP uses Wiki.js GraphQL internally.
In Wiki.js admin, go to
Administration -> APIand enable API access.Create an API key and set it as
WIKI_API_TOKEN.
MCP Client Config Example (~/.mcp.json)
{
"mcpServers": {
"requarks-wiki": {
"command": "npx",
"args": ["-y", "@yowu-dev/requarks-wiki-mcp@latest"],
"env": {
"WIKI_BASE_URL": "https://wiki.your-domain.dev",
"WIKI_API_TOKEN": "your_wikijs_api_key_jwt",
"WIKI_GRAPHQL_PATH": "/graphql",
"WIKI_DEFAULT_LOCALE": "en",
"WIKI_DEFAULT_EDITOR": "markdown",
"WIKI_MUTATIONS_ENABLED": "true",
"WIKI_MUTATION_CONFIRM_TOKEN": "CONFIRM_UPDATE",
"WIKI_MUTATION_DRY_RUN": "false",
"WIKI_ALLOWED_MUTATION_PATH_PREFIXES": "",
"WIKI_HTTP_TIMEOUT_MS": "15000",
"WIKI_HTTP_MAX_RETRIES": "2"
}
}
}
}Register MCP Via Local Path (Without npm Publish)
You can register this MCP server directly from your local project path without publishing/installing from npm.
Build in this repository
npm install
npm run buildRegister local absolute path in
~/.mcp.json
{
"mcpServers": {
"requarks-wiki-local": {
"command": "node",
"args": ["/absolute/path/to/requarks-wiki-mcp/dist/index.js"],
"env": {
"WIKI_BASE_URL": "https://wiki.your-domain.dev",
"WIKI_API_TOKEN": "your_wikijs_api_key_jwt",
"WIKI_GRAPHQL_PATH": "/graphql",
"WIKI_DEFAULT_LOCALE": "en",
"WIKI_DEFAULT_EDITOR": "markdown",
"WIKI_MUTATIONS_ENABLED": "true",
"WIKI_MUTATION_CONFIRM_TOKEN": "",
"WIKI_MUTATION_DRY_RUN": "false",
"WIKI_ALLOWED_MUTATION_PATH_PREFIXES": "",
"WIKI_HTTP_TIMEOUT_MS": "15000",
"WIKI_HTTP_MAX_RETRIES": "2"
}
}
}
}Notes:
Always use an absolute path.
Re-run
npm run buildafter code changes sodist/index.jsstays up to date.
Run
Development:
npm run devBuild + run:
npm run build
npm startMCP Tools
Read Tools (19)
Pages:
Tool | Description |
| Full-text search across wiki pages. |
| List pages with optional locale filter and limit. |
| Get full page content by path + locale. |
| Get full page content by numeric ID. |
| Browse site hierarchy (folders, pages, or both). |
| View edit history trail for a page. |
| Get a specific version's full content. |
| Get page link relationships (knowledge graph). |
Tags:
Tool | Description |
| List all tags for content taxonomy discovery. |
| Search for tags matching a query string. |
Comments:
Tool | Description |
| List all comments for a page by path and locale. |
| Get a single comment by ID. |
System & Navigation:
Tool | Description |
| Wiki.js version, database type, and usage statistics. |
| Navigation tree structure. |
| Site configuration (non-sensitive fields). |
Assets:
Tool | Description |
| List assets with optional folder and kind filter. |
| List asset folders. |
Users:
Tool | Description |
| Get the currently authenticated API user's profile. |
| Search users by name or email. |
Write Tools (10, disabled unless WIKI_MUTATIONS_ENABLED=true)
Page Mutations:
Tool | Description |
| Create a new page with content, tags, and metadata. |
| Update an existing page by ID. |
| Delete a page by ID. May need |
| Move/rename a page to a new path or locale. |
| Restore a page to a previous version. |
Comment Mutations:
Tool | Description |
| Create a comment on a page. |
| Update an existing comment by ID. |
| Delete a comment by ID. |
Tag Mutations:
Tool | Description |
| Update a tag's slug and title. |
| Delete a tag from all pages. |
Mutation Safety
When
WIKI_MUTATION_CONFIRM_TOKENis set, mutation tools require a matchingconfirmargument.When
WIKI_MUTATION_DRY_RUN=true, write tools return a preview and do not mutate Wiki.js.If
WIKI_ALLOWED_MUTATION_PATH_PREFIXESis set, page and comment-create mutations are limited to those path prefixes.All mutation attempts write a structured audit line to stderr.
MCP Resources
Resource URI | Description |
| Wiki.js markdown syntax guide (CommonMark/GFM + Wiki.js-specific extensions) intended for page authoring and updates. |
| Mermaid 8.8.2 diagram syntax guide for Wiki.js (9 supported diagram types, unsupported feature warnings, version restrictions). |
| Wiki.js API permission model, error codes, and API key configuration guide for self-diagnosing permission errors. |
Permission Notes (Wiki.js)
Wiki.js permission behavior can be surprising for API keys. In particular:
Some operations may require
manage:pages/delete:pagesrules at page-rule level.Reading
contentmay requireread:sourcedepending on schema/field-level checks.Comment operations require
read:comments,write:comments, ormanage:comments.System info and navigation require admin-level API key permissions.
Common error codes:
Code | Meaning |
6013 |
|
6003 | Page does not exist |
8002 |
|
8003 |
|
8004 |
|
8005 |
|
For more details, read the wikijs://api-permissions-guide resource.
Suggested Minimum API Key Permissions
For read-heavy KB use:
read:pages,read:sourceread:comments(for comment browsing)Page rules allowing those permissions for intended paths/locales
For write workflows:
write:pages(create and update)manage:pagesordelete:pages(for delete/move operations)write:comments,manage:comments(for comment mutations)manage:system(for tag management)
Security Guidance
Keep API token server-side only.
Start with read-only permissions.
Keep
WIKI_MUTATIONS_ENABLED=falseunless updates are needed.Optional hardening: set a strong random
WIKI_MUTATION_CONFIRM_TOKENand pass matchingconfirmfor write calls.Keep
WIKI_MUTATION_DRY_RUN=trueuntil you are ready for real writes.Use
WIKI_ALLOWED_MUTATION_PATH_PREFIXESto constrain write scope.wikijs_get_system_infofilters sensitive infrastructure fields (dbHost, configFile, etc.) by default.scriptJs/scriptCssfields in page create/update are length-limited (10,000 chars) and include browser execution warnings.
Available Tools
29 toolswikijs_create_commentA
Create a new comment on a page. Requires WIKI_MUTATIONS_ENABLED=true and may need comment posting permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| pageId | Yes | Page ID to comment on. | |
| content | Yes | Comment content. | |
| replyTo | No | Optional comment ID to reply to. | |
| guestName | No | Guest name (if posting as guest). | |
| guestEmail | No | Guest email (if posting as guest). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it is a mutation (create), requires WIKI_MUTATIONS_ENABLED=true and permissions, and explains the 'confirm' parameter behavior. 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 main action, then dependencies and special behavior. No unnecessary 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?
Although no output schema exists, the description covers the key aspects: action, prerequisites, and parameter nuance. It does not describe return values, but for a create tool this is acceptable.
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 description adds value by explaining the 'confirm' parameter's dependency on a token. Other parameters are well-described in the schema, so this is a solid addition.
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 a new comment on a page,' with a specific verb and resource. It distinguishes this tool from siblings like wikijs_get_comment, wikijs_update_comment, and wikijs_delete_comment.
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 mentions required environment variable and permissions, providing helpful context for when to use. It lacks explicit when-not-to-use or alternative tool names, but the prerequisites are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_create_pageA
Create a new page. Requires WIKI_MUTATIONS_ENABLED=true. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| path | Yes | Target page path. | |
| title | Yes | Page title. | |
| content | Yes | Page content in Wiki.js-flavored Markdown (when editor is "markdown"). Supports CommonMark + GFM plus Wiki.js extensions: BLOCKQUOTE STYLES — colored callout boxes: > Note text {.is-info} (blue) {.is-success} (green) {.is-warning} (yellow) {.is-danger} (red) CONTENT TABS — {.tabset} on parent heading, child headings become tabs: ## Tabs {.tabset} ### First Tab Content... ### Second Tab Content... IMAGE DIMENSIONS — append =WIDTHxHEIGHT after URL:   DIAGRAMS — mermaid or plantuml fenced code blocks. For Mermaid 8.8.2 syntax details, read the wikijs://mermaid-guide resource. TABLE STYLE — {.dense} after table for compact rendering. LIST STYLES — {.grid-list} or {.links-list} after list. TEXT — ~sub~ ^super^ <kbd>Key</kbd> ~~strike~~ FOOTNOTES — [^1] inline, [^1]: definition at bottom. DECORATE — <!-- {element:.class} --> for ambiguous targets. For the full syntax reference, read the wikijs://markdown-guide resource. | |
| description | No | Short page description. | |
| locale | No | Locale code. | |
| editor | No | Editor key (markdown, asciidoc, html, etc). | |
| tags | No | Optional string tags. | |
| isPublished | No | Defaults true. | |
| isPrivate | No | Defaults false. | |
| publishStartDate | No | Publication start date (ISO 8601 format). | |
| publishEndDate | No | Publication end date (ISO 8601 format). | |
| scriptCss | No | Custom CSS for the page. Max 10,000 chars. | |
| scriptJs | No | Custom JavaScript for the page. WARNING: executes in every visitor's browser. Only use trusted code. Max 10,000 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the burden of behavioral disclosure. It mentions the required environment variable and confirm token behavior but lacks details on success/error responses, side effects, or permissions. This is insufficient for a mutation tool with 14 parameters.
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 extremely concise with two sentences, no redundant wording, and no unnecessary details. Every sentence adds value.
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 14 parameters and no output schema, the description is too sparse. It lacks information about return values, error handling, prerequisites beyond the environment variable, or workflow integration. A more comprehensive description would aid the agent significantly.
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. The description adds context for the confirm parameter's conditional validation but does not elaborate on other parameters, which are already well-documented in the schema. Minimal added value beyond 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 clearly states 'Create a new page,' which is a specific verb and resource. It distinguishes itself from sibling tools like wikijs_delete_page and wikijs_update_page by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key prerequisite: 'Requires WIKI_MUTATIONS_ENABLED=true.' and explains the confirm parameter's dependency on WIKI_MUTATION_CONFIRM_TOKEN. However, it does not explicitly guide when to use this over alternative tools like wikijs_update_page for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_delete_commentA
Delete a comment by ID. Requires WIKI_MUTATIONS_ENABLED=true and comment management permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Comment ID to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It lists prerequisites but does not disclose side effects (e.g., irreversibility) or return values. Adequate but not comprehensive.
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?
Two efficient sentences, no wasted words. Front-loaded with 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 a simple delete operation with no output schema, the description covers requirements and parameter nuance. Could mention deletion effect but not essential.
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 already covers parameters fully. Description adds nuance: confirm is only checked when token is set, providing conditional logic beyond 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 clearly states it deletes a comment by ID, distinguishing it from sibling tools like wikijs_delete_page. It specifies the unique resource and action.
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?
Mentions prerequisites (WIKI_MUTATIONS_ENABLED=true, permissions) and confirm token behavior. Could explicitly contrast with update or get siblings, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_delete_pageA
Delete a page by ID. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages or delete:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Page ID to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially discloses behavior: it explains the conditional nature of the confirm parameter and required permissions. However, it does not describe what happens upon deletion (e.g., irreversibility, cascading effects, or return value).
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 concise sentences, each serving a distinct purpose: purpose, prerequisites, and parameter nuance. No wasted words, 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 a simple two-parameter deletion tool with no output schema, the description covers prerequisites and a parameter behavior, but lacks information about the result or side effects (e.g., success indicator, idempotency). Adequate but not 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?
Schema coverage is 100%, but the description adds value by naming the env var WIKI_MUTATION_CONFIRM_TOKEN and clarifying the confirm parameter's requirement condition, which goes beyond the schema's description.
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 a page by ID', identifying the resource and method. Among sibling tools, it distinguishes itself from delete_comment and delete_tag by specifying 'page'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides prerequisites (WIKI_MUTATIONS_ENABLED and permissions) but does not offer guidance on when to use this tool versus alternatives like move_page or restore_page. No when-not-to-use or contextual comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_delete_tagA
Delete a tag by ID. Removes the tag from all pages and the tag registry. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:system permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Tag ID to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses destructive behavior (removes tag from all pages and registry), required permissions, and conditional confirmation token behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, requirements, parameter detail. 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 no output schema and moderate complexity, the description covers purpose, preconditions, effects, and parameter behavior adequately. No gaps.
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 value by explaining the conditional nature of confirm and that id is the tag ID. 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 action (delete a tag by ID) and the resource (tag), and specifies the scope (removes from all pages and tag registry). It distinguishes itself from sibling tools like wikijs_create_tag and wikijs_update_tag.
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 lists prerequisites (WIKI_MUTATIONS_ENABLED, manage:system permission) and explains the conditional confirm parameter. However, it does not explicitly state when to use this tool versus alternatives, though the delete purpose is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_commentA
Get a single comment by ID. Returns full comment details including content and author information.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description adds that it returns full comment details including content and author, which is useful context beyond schema, but lacks any behavioral traits like idempotency, auth requirements, 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?
Two concise sentences with no wasted words, front-loaded with the action and then return 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?
For a simple get tool with one parameter and no output schema, the description is complete: it states the action, identifier, and return contents.
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% (parameter 'id' described as 'Comment ID.'). Description adds no additional parameter info, so 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?
Description clearly states 'Get a single comment by ID' which is a specific verb+resource, and distinguishes from sibling 'wikijs_list_comments' which would return multiple comments.
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?
Description implies usage when you have a specific comment ID but does not explicitly mention when to use this vs alternatives like wikijs_list_comments. No exclusions or when-not guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_current_userA
Get the profile of the currently authenticated API user. Returns identity, permissions context, and activity info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior. It indicates a read operation returning user data, but it does not explicitly declare that it is non-destructive, cacheable, or safe to call repeatedly. Adding a statement like 'This is a read-only operation with no side effects' would improve transparency.
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, clear sentence that front-loads the purpose. Every word contributes meaning, with no filler 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 simple tool with no parameters and no output schema, the description sufficiently explains what is returned (identity, permissions, activity info). The context is complete for an agent to understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema description coverage is 100%. The description adds no parameter information, which is acceptable given no parameters exist. The baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and clearly identifies the resource as 'profile of the currently authenticated API user.' It distinguishes itself from sibling tools like wikijs_search_users (which searches users) and wikijs_get_page_by_id (which retrieves pages) by focusing on the current user's profile.
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 when the current user's profile is needed, but it does not explicitly state when to use it versus alternatives, such as searching for users, or provide any exclusion criteria. The sibling list is present but no comparative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_by_idA
Get a single page body/content by numeric page ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Wiki page ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses it returns 'body/content', but lacks details on authentication, error conditions, or whether metadata is included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, efficient sentence with no wasted words. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple 1-parameter tool without output schema. Could optionally note output format or return value beyond 'body/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 description covers 100% of parameters with 'Wiki page ID.' Description adds 'by numeric page ID' but does not significantly enhance meaning beyond 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?
Description clearly states the verb 'get', the resource 'page body/content', and the method 'by numeric page ID'. This distinguishes it from sibling tools like wikijs_get_page_by_path which uses a path.
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?
Implicitly suggests using when the numeric ID is available, but does not explicitly mention when to use alternatives like wikijs_get_page_by_path or exclude other retrieval methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_by_pathB
Get a single page body/content using path + locale.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Wiki page path, without leading slash. | |
| locale | No | Locale code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Only states it retrieves content, but lacks details on permissions, error handling, or whether it returns raw content or rendered HTML.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single succinct sentence that front-loads action and resource. No unnecessary 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?
Adequate for a simple retrieval tool with clear parameters, but could benefit from mentioning that locale is optional or describing the return format (e.g., page object with body/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 description adds no value. 'Using path + locale' is already in schema. The phrasing may misleadingly imply locale is always required, whereas schema marks it optional.
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 verb 'Get', resource 'single page body/content', and identification method 'path + locale'. Distinguishes from siblings like wikijs_get_page_by_id and wikijs_get_page_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?
No guidance on when to use this tool versus alternatives (e.g., get_page_by_id, search_pages). Does not specify if path is case-sensitive, required format, or behavior for nonexistent pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_historyA
Get edit history trail for a page by ID. Returns version dates, authors, and change types.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Wiki page ID. | |
| offset | No | Page offset for pagination. Default 0. | |
| limit | No | Number of history entries. Default 25, max 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states that the tool returns version dates, authors, and change types, but does not mention that the operation is read-only, describe pagination behavior, or detail any side effects. The schema covers pagination defaults, but the description adds minimal behavioral context beyond the return 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?
The description is a single concise sentence with no filler. It efficiently conveys the action, resource, and return content. Every part is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description partially compensates by mentioning return fields (version dates, authors, change types), but it is vague about structure, ordering, or error conditions. For a history retrieval tool, more detail about the response format would improve completeness.
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 parameters are well-documented. The description mentions 'by ID' which aligns with the required 'id' parameter, but does not add additional semantic meaning beyond the schema's descriptions for 'offset' and 'limit'. 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?
Clearly states the action 'get', the resource 'edit history trail', and the key 'by ID'. The description also mentions the returned data fields (version dates, authors, change types). This distinguishes it clearly from sibling tools like wikijs_get_page_by_id or wikijs_get_page_version.
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 retrieving edit history, but does not explicitly state when to use this tool over alternatives like wikijs_get_page_version or wikijs_get_page_links. No when-not-to-use or alternative guidance is provided, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_linksB
Get all pages and their outbound links for a locale. Returns an array of pages with their link relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale code. Defaults to configured default locale. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as side effects, permissions required, or rate limits. The description merely states the return type without deeper context.
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 very concise with two short sentences, no redundancy. It efficiently communicates the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description is largely complete. It explains the output structure ('array of pages with their link relationships') which adds value.
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% for the one parameter. The description mentions 'locale' but adds no extra meaning beyond the schema's description of 'Locale code'. 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 'Get' and the resource 'pages and their outbound links for a locale', and distinguishes from sibling tools like wikijs_get_page_by_id or wikijs_list_pages which have different purposes.
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 does not provide any guidance on when to use this tool versus alternatives or when not to use it. It only states the function without context of selection among many similar sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_treeA
Get the page tree hierarchy for site navigation and structure discovery. Returns folders and/or pages with depth info.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional path prefix to scope the tree. | |
| parentId | No | Optional parent page ID to get children of. | |
| mode | No | Tree mode. Default ALL. | |
| locale | No | Locale code. Defaults to WIKI_DEFAULT_LOCALE. | |
| includeAncestors | No | Include ancestor pages. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states return type (folders and/or pages with depth info) but does not disclose auth requirements, performance implications, or side effects. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, zero wasted words, directly states purpose and result.
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 5 optional parameters and no output schema, the description lacks details on the return structure (e.g., depth info format) and how parameters interact. Adequate but leaves room for agent confusion.
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 parameter descriptions, so baseline 3. The description adds no extra meaning beyond the schema; it does not explain how parameters like path, parentId, or mode affect the tree.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (page tree hierarchy), and the purpose (site navigation and structure discovery). It distinguishes from sibling tools like get_page_by_id that fetch a single page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for navigation and structure discovery but does not explicitly state when to use this tool versus alternatives like get_page_by_path or list_pages. No when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_page_versionA
Get a specific version of a page by page ID and version ID. Returns full page content and metadata for that version.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Page ID. | |
| versionId | Yes | Version ID from page history. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states it returns 'full page content and metadata,' but does not disclose error behavior, permission requirements, or side effects. For a simple read operation, this is adequate but not exemplary.
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?
Two concise sentences, no redundant information, and front-loaded with the core purpose. Every word contributes value.
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 simplicity (2 required params, no output schema, no nested objects), the description adequately conveys what the tool does and what it returns. Missing error handling details but sufficient for basic selection.
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% (both parameters have descriptions in the input schema). The description does not add additional semantics beyond 'Page ID' and 'Version ID from page history,' 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 'Get a specific version of a page' and specifies the required inputs (page ID and version ID). It distinguishes itself from siblings like wikijs_get_page_by_id or wikijs_get_page_history by targeting a specific version, not the current page or all versions.
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 explicit guidance on when to use this tool versus alternatives like wikijs_get_page_history for listing versions or wikijs_restore_page for restoration. The description implies basic usage but lacks when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_site_configA
Retrieve safe (non-sensitive) site configuration including title, description, feature flags, and upload limits. Does not expose secrets or authentication keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and effectively discloses the non-sensitive nature and what is excluded. It does not discuss side effects, but as a read-only operation, this is sufficient.
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?
Two sentences: first states action and resource, second adds important exclusions. No filler words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers what the tool does, what it returns, and what it does not return. It is complete for its simplicity.
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?
No parameters exist, so baseline is 4. The description adds value by specifying the content of the configuration (title, description, etc.) beyond what the schema (empty) 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 the verb 'Retrieve' and the resource 'safe site configuration', listing specific fields (title, description, feature flags, upload limits). It distinguishes from sibling tools which focus on CRUD operations on pages, comments, tags, etc.
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 when to use (retrieving non-sensitive config) and explicitly states what it does not do (expose secrets). However, it lacks explicit guidance on alternatives or exclusions, though the simplicity of the tool reduces the need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_get_system_infoA
Retrieve Wiki.js system information including version, database type, and usage statistics. Useful for diagnostics. Sensitive fields (dbHost, configFile, workingDirectory, hostname) are filtered out.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that sensitive fields (dbHost, configFile, workingDirectory, hostname) are filtered out. This adds value beyond the schema. No side effects or authentication needs are mentioned, but for a read-only tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficient and front-loaded. Every sentence provides clear value.
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?
Covers what the tool retrieves and what is filtered. Could mention if authentication is required, but without output schema, it is mostly complete for a simple 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?
No parameters exist, so description does not need to add param detail. Baseline 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?
Clearly states it retrieves system information including specific fields like version, database type, and usage statistics. Distinguishes itself from sibling tools, which are focused on pages, comments, tags, and other entities.
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?
Mentions 'useful for diagnostics' but lacks explicit guidance on when to use or when not to use this tool. However, among siblings, it is the only one for system info, so the context is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_list_asset_foldersB
List asset folders within a parent folder. Returns folder structure for navigating the asset hierarchy.
| Name | Required | Description | Default |
|---|---|---|---|
| parentFolderId | No | Parent folder ID. Default 0 (root level). |
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 only states the purpose but does not disclose behavioral traits such as authentication requirements, rate limits, or whether it is read-only. The description adds minimal behavioral context beyond the obvious.
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 one sentence, front-loaded with key information, and contains no unnecessary words. Every part is valuable.
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 simplicity (one optional parameter, no output schema), the description is complete enough. It states the action and the return (folder structure). Minor improvement could mention that it returns nested hierarchy.
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% (parentFolderId is described). The description adds no additional meaning beyond 'within a parent folder', which aligns with the schema. 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', the resource 'asset folders', and the context 'within a parent folder'. This distinguishes it from sibling tools like wikijs_list_assets.
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 does not provide guidance on when to use this tool versus alternatives like wikijs_list_assets, nor does it mention when not to use it. No explicit when/when-not or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_list_assetsA
List assets (files, images) in a specific folder. Returns asset metadata including filename, type, size, and upload date.
| Name | Required | Description | Default |
|---|---|---|---|
| folderId | No | Folder ID to list assets from. Default 0 (root folder). | |
| kind | No | Asset type filter. Default ALL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read operation but does not disclose any potential limitations, auth requirements, or performance characteristics. Basic and minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information. Front-loaded with the core action and key return fields. Efficient.
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; description lists return fields but omits details like pagination, ordering, or whether results are always a list. Adequate for a simple list tool but could be more 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?
Schema description coverage is 100% (both folderId and kind are described). The description adds context about return fields, which is beyond the schema but not essential for parameter usage. 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 tool lists assets in a specific folder and mentions what metadata is returned (filename, type, size, upload date). It is distinct from sibling tools like wikijs_list_asset_folders.
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 explicit guidance on when or when not to use this tool. It does not mention alternatives for listing all assets across folders or scenarios where other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_list_commentsA
List all comments for a specific page by path and locale. Returns comment details including author info and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Page path to get comments for. | |
| locale | No | Locale code (e.g., "en", "fr"). Defaults to WIKI_DEFAULT_LOCALE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool lists all comments for a page, is non-destructive (implied by 'list'), and returns specific data fields. Missing details like pagination or rate limits, but acceptable for a simple list operation.
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?
Two concise sentences: first states purpose and key parameters, second states return content. No unnecessary words, well-structured.
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 covers return values (comment details, author, timestamps). It specifies required and optional parameters. Could mention ordering or pagination, but not essential for 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 already describes both parameters. The description mentions 'path' and 'locale' but does not add new meaning beyond what the schema provides. 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 action (list all comments), the target resource (for a specific page by path and locale), and what is returned (comment details with author info and timestamps). It distinguishes from siblings like wikijs_get_comment, which retrieves a single comment.
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 the tool is for listing comments, not creating or deleting. However, it does not explicitly state when to use this versus alternatives like wikijs_get_comment or wikijs_create_comment, though the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_list_pagesC
List pages for crawling/indexing with optional locale and limit.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Optional locale code. | |
| limit | No | Optional item limit. Default 50, max 200. | |
| orderBy | No | Field to order by. Default UPDATED. | |
| orderByDirection | No | Sort direction. Default DESC. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose behavioral traits like read-only nature, pagination behavior, or response format. For a list operation, this leaves significant ambiguity.
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 redundant words. However, it could be restructured to front-load core information; currently it is short but misses key 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?
Given the absence of an output schema and the presence of four parameters, the description should cover return value structure and pagination. It does not, resulting in incomplete context 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 the baseline is 3. The description mentions locale and limit but omits orderBy and orderByDirection. It adds minimal value beyond the schema, meeting the baseline without exceeding it.
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' and resource 'pages', with a specific use-case hint ('for crawling/indexing'). This provides immediate context, though it does not explicitly distinguish from sibling tools like wikijs_search_pages.
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 such as wikijs_search_pages or wikijs_get_page_tree. The agent receives no criteria for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_list_tagsA
List all tags used across wiki pages. Useful for discovering content categories and taxonomy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. The operation is a straightforward list with no parameters, and the description accurately reflects that. No hidden behaviors or 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?
Two sentences, front-loaded with action, no fluff. Every word earns its place.
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 parameters, no output schema, and no annotations, the description provides enough information for a simple list operation. It is complete for its simplicity.
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?
No parameters exist, and schema coverage is 100%. Baseline is 4 as description does not need to add parameter info. The description is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all tags' with the resource (tags) and scope (across wiki pages), and provides a use case ('discovering content categories and taxonomy'). This distinguishes it from sibling tools like wikijs_search_tags.
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?
Description provides context for use ('discovering content categories and taxonomy') but does not explicitly contrast with alternatives or state when not to use it. However, the context is clear enough for an agent to infer its utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_move_pageA
Move a page to a new path or locale. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Page ID to move. | |
| destinationPath | Yes | New path for the page. | |
| destinationLocale | No | New locale. Defaults to current locale. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full weight. It discloses mutation behavior and environment requirements, but does not mention whether the original page is removed, return values, or error scenarios.
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?
Two sentences, both essential: first states purpose, second covers conditions. No redundant information, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites and confirm logic, but lacks details on side effects (e.g., broken links), success/failure output, and is missing an output schema reference. Adequate but not thorough.
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 parameters. The description adds extra context for 'confirm' (token condition), but for other parameters it adds no value beyond the schema. 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 action ('move a page') and the scope ('to a new path or locale'), which is specific and distinguishes it from sibling tools like create_page or delete_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists prerequisites (WIKI_MUTATIONS_ENABLED, manage:pages permission) and explains the confirm token behavior. While it does not mention specific alternatives, it provides clear conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_restore_pageA
Restore a page to a previous version. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Page ID to restore. | |
| versionId | Yes | Version ID to restore to (from page history). |
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 discloses important preconditions (mutations enabled, permission) and the conditional behavior of the confirm parameter. However, it does not describe potential side effects (e.g., overwriting current content) or whether the operation is reversible.
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, concise and front-loaded with the core purpose. Every sentence adds value: the first defines the action, the second covers prerequisites and parameter behavior. No unnecessary 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 the tool's simplicity (3 params, no output schema), the description covers prerequisites and conditional behavior. It lacks explicit mention of success/failure outcomes or return values, but overall is quite complete for an agent to understand the tool's functionality.
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 mentions the conditional behavior of confirm, but this is largely redundant with the schema's description. No additional semantic information is provided for id or versionId beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'restore a page to a previous version', specifying the resource and the operation. It distinguishes itself from sibling tools like wikijs_get_page_version or wikijs_update_page by focusing on restoration. The mention of required permissions and configuration adds specificity.
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 clear context: it requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages permission. It also explains when the confirm parameter is enforced. However, it does not explicitly state when not to use this tool or mention alternatives (e.g., using get_page_version for viewing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_search_pagesA
Search pages by keyword and return path/title summary for knowledge lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword. | |
| locale | No | Optional locale code. Defaults to WIKI_DEFAULT_LOCALE. | |
| path | No | Optional path prefix to scope search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It discloses read nature and return format (path/title summary) but lacks detail on auth, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with verb and resource. Every word earns its place.
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?
Covers purpose, input, and return format adequately given the tool's simplicity and full schema coverage. Could mention pagination or result limits for completeness, but not critical.
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 already describes all three parameters with 100% coverage. Description adds value by stating the tool returns a 'path/title summary', which is not in the schema, helping the agent understand output format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'search', resource 'pages', by keyword, and return 'path/title summary'. Distinct from sibling search_tags/search_users and list_pages.
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 explicit when-to-use or when-not-to-use guidance. While the name and context imply this is for keyword-based page search over listing, alternatives are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_search_tagsA
Search for tags matching a query string. Returns an array of matching tag name strings.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for tag names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks details on behavioral traits such as case sensitivity, partial matching, pagination, or handling of empty queries. The bare return type is stated but not further elaborated.
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 uses two short, clear sentences; every word is purposeful. It is front-loaded and easy to scan.
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 simple one-parameter tool without an output schema, the description covers the core functionality and result format. Minor missing details (e.g., behavior on no results) are acceptable at this complexity level.
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 description adds minimal meaning beyond the schema. It reiterates the query parameter's purpose without deeper details like allowed wildcards or format.
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 searches for tags by a query string and returns matching tag names. This distinguishes it from sibling tools like wikijs_list_tags (list all tags) and wikijs_delete_tag, etc.
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 when you have a query to find specific tags, but does not explicitly state when to use versus alternatives like wikijs_list_tags, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_search_usersA
Search for users by name or email. Returns matching user profiles for collaboration context.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for user name or email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Mentions return of 'matching user profiles for collaboration context' but omits details on match behavior, pagination, or safety. Adequate but not comprehensive.
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?
Two sentences, no unnecessary words. Front-loaded with core action and result. Highly efficient.
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?
Simple tool with one parameter and no output schema. Description covers purpose and return value adequately. Lacks details on matching behavior or limits, but complete for a straightforward search.
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 clear description of the 'query' parameter. Description adds no extra semantic value beyond what the schema provides, so baseline 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?
Clearly states action 'Search for users' and resource 'users'. Distinguishes from sibling search tools (pages, tags) by specifying the target entity. No ambiguity.
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?
Implies usage for finding users by name or email. Does not explicitly state when not to use or alternatives, but sibling names make the context clear. Slight lack of explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_update_commentA
Update an existing comment by ID. Requires WIKI_MUTATIONS_ENABLED=true and comment management permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Comment ID to update. | |
| content | Yes | New comment content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses permission and config requirements, but no annotation present; does not cover success/failure responses or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with front-loaded main action; 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?
Lacks return value description and error conditions; adequate for simple update but not comprehensive without 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 coverage is 100%, description does not add new info beyond schema descriptions; 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?
Explicitly states 'Update an existing comment by ID', clearly defining verb and resource, and distinguishes from create and delete siblings.
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 prerequisites (WIKI_MUTATIONS_ENABLED and permissions) and explains conditional confirm token behavior, but no explicit contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_update_pageC
Update an existing page by ID. Requires WIKI_MUTATIONS_ENABLED=true. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Page ID to update. | |
| title | No | ||
| content | No | Page content in Wiki.js-flavored Markdown (when editor is "markdown"). Supports CommonMark + GFM plus Wiki.js extensions: BLOCKQUOTE STYLES — colored callout boxes: > Note text {.is-info} (blue) {.is-success} (green) {.is-warning} (yellow) {.is-danger} (red) CONTENT TABS — {.tabset} on parent heading, child headings become tabs: ## Tabs {.tabset} ### First Tab Content... ### Second Tab Content... IMAGE DIMENSIONS — append =WIDTHxHEIGHT after URL:   DIAGRAMS — mermaid or plantuml fenced code blocks. For Mermaid 8.8.2 syntax details, read the wikijs://mermaid-guide resource. TABLE STYLE — {.dense} after table for compact rendering. LIST STYLES — {.grid-list} or {.links-list} after list. TEXT — ~sub~ ^super^ <kbd>Key</kbd> ~~strike~~ FOOTNOTES — [^1] inline, [^1]: definition at bottom. DECORATE — <!-- {element:.class} --> for ambiguous targets. For the full syntax reference, read the wikijs://markdown-guide resource. | |
| description | No | ||
| path | No | ||
| locale | No | ||
| editor | No | ||
| tags | No | ||
| isPublished | No | ||
| isPrivate | No | ||
| publishStartDate | No | Publication start date (ISO 8601 format). | |
| publishEndDate | No | Publication end date (ISO 8601 format). | |
| scriptCss | No | Custom CSS for the page. Max 10,000 chars. | |
| scriptJs | No | Custom JavaScript for the page. WARNING: executes in every visitor's browser. Only use trusted code. Max 10,000 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only mentions environment variable requirements and the confirm token check. It fails to disclose whether the update is atomic, what happens to previous versions, whether it triggers notifications, authentication requirements, or idempotency. This is insufficient for a mutation 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 very concise, consisting of two short sentences. It front-loads the primary purpose and then adds a key constraint. Every sentence earns its place, but could be slightly improved by separating the prerequisite from the confirm note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 15 parameters and no output schema, the description is too sparse. It does not explain the return value, error handling, validation rules, or the effect of updating the page (e.g., caching, history). The prerequisite and confirm behavior are noted, but much context 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 47%, moderately high. The description adds value by explaining the confirm parameter's behavior but does not elaborate on other parameters beyond what the schema provides. The baseline for this coverage is 3, and the description provides marginal additional semantics.
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 'Update an existing page by ID', specifying the verb (update) and the resource (page by ID). It distinguishes from sibling tools like create_page or delete_page through the resource identifier. However, it does not explicitly differentiate from update_comment, but the resource type is implicit.
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 mentions a prerequisite ('Requires WIKI_MUTATIONS_ENABLED=true') and a conditional behavior for the confirm parameter. It provides no guidance on when to use this tool versus alternatives (e.g., create_page, move_page) or when not to use it. This is minimal usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikijs_update_tagA
Update an existing tag by ID. Changes the tag slug and/or title. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:system permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must match WIKI_MUTATION_CONFIRM_TOKEN if set. Optional when token is not configured. | |
| id | Yes | Tag ID to update. | |
| tag | Yes | New tag slug (e.g., "backend"). | |
| title | Yes | New tag title (e.g., "Backend Development"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses mutation nature, prerequisites, and confirm behavior. Lacks details on side effects or error handling.
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 focused sentences with no fluff. First sentence states purpose, second lists prerequisites, third explains confirm. Efficient.
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 4-parameter tool with no output schema and 100% schema coverage, description covers prerequisites, parameter conditions, and action. Could mention what happens if tag not found, but 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 has 100% coverage. Description adds value by explaining confirm token logic (only checked when set). Reiterates but does not contradict 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?
Clearly states action (update), resource (tag by ID), and what can be changed (slug and/or title). Distinguishes from siblings like delete_tag, search_tags.
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?
Specifies required environment variable and permission. Explains confirm token condition. No explicit alternatives or when-not-to-use, but adequate for context.
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.
29 tool updates
v0.3.1- First observed
wikijs_create_comment - First observed
wikijs_create_page - First observed
wikijs_delete_comment - First observed
wikijs_delete_page - First observed
wikijs_delete_tag - First observed
wikijs_get_comment - First observed
wikijs_get_current_user - First observed
wikijs_get_navigation - First observed
wikijs_get_page_by_id - First observed
wikijs_get_page_by_path - First observed
wikijs_get_page_history - First observed
wikijs_get_page_links - First observed
wikijs_get_page_tree - First observed
wikijs_get_page_version - First observed
wikijs_get_site_config - First observed
wikijs_get_system_info - First observed
wikijs_list_asset_folders - First observed
wikijs_list_assets - First observed
wikijs_list_comments - First observed
wikijs_list_pages - First observed
wikijs_list_tags - First observed
wikijs_move_page - First observed
wikijs_restore_page - First observed
wikijs_search_pages - First observed
wikijs_search_tags - First observed
wikijs_search_users - First observed
wikijs_update_comment - First observed
wikijs_update_page - First observed
wikijs_update_tag
TDQS
Scored across 29 tools
Each tool targets a distinct resource-action pair (e.g., create_page, delete_comment, list_tags). There is no overlap or ambiguity; an agent can clearly differentiate between them.
All tools follow the consistent pattern wikijs_verb_noun in snake_case. The naming is uniform and predictable, making it easy to infer tool functionality.
With 29 tools, the set is slightly large but well-scoped for a full wiki system covering pages, comments, tags, assets, navigation, search, and configuration. It avoids bloat and each tool serves a clear purpose.
The toolset provides comprehensive CRUD for pages, comments, and tags, plus search and system info. However, asset and navigation mutations (create/update/delete) are missing, which represents a minor gap.
Maintenance
Related MCP Connectors
- hiveWikiOAuthai.hivewiki
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Self-hostable team wiki; agents read & write it via MCP; Atlas turns your repo into a cited wiki.
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
MCP server for agentverse documentation, generated by doc2mcp.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server for Wiki.js projects that enables full-text search, page retrieval, and page management capabilities. It allows LLMs to interact with wiki content through specialized tools for searching, listing, and creating pages.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables full management of WikiJS instances, supporting operations like page creation, searching, and updating. It also provides tools for knowledge graph exploration, content summarization, and retrieval of wiki statistics.9 npmMIT
- AlicenseAqualityDmaintenanceAn MCP server for Wiki.js that enables AI agents to create, read, update, search, list, and move wiki pages via the GraphQL API. It supports surgical section updates and structured content management through named sections.6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Wiki.js integration, enabling AI assistants to create, read, update, delete, search, and move wiki pages via natural language.1MIT