mediawiki-mcp
The server is an MCP integration that lets AI agents read and edit MediaWiki wikis through a standard API.
Multi-wiki management: register/unregister/list named wikis, set a default wiki, and fan out searches across all wikis.
Search: full-text search, title-prefix search, and a unified page locator (
find-page) that tries exact titles, prefixes, then full-text.Page operations: read page wikitext/HTML, create, update (diff/section/append/prepend/full replacement), delete, and undelete pages.
History & revisions: list page history, view individual revision details, paginate with continuation tokens.
Category browsing: list categories with counts and retrieve category members (pages/subcategories/files).
Link analysis: get outgoing links or backlinks for a page.
File operations: get file metadata, upload files from base64 data or a remote URL.
Activity monitoring: get recent changes across wikis (edits, new pages, log events).
Authentication: uses MediaWiki bot passwords with per-wiki credentials; supports anonymous read-only access when no credentials are provided.
Transport modes: works via stdio (local) or HTTP/streamable HTTP (remote/Docker), including LibreChat integration.
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., "@mediawiki-mcpsearch for 'MCP' on the Main wiki"
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.
MediaWiki MCP Server
A Model Context Protocol (MCP) server for MediaWiki instances with multi-wiki support. Uses the modern REST API (MediaWiki 1.42+) and Action API for full read/write access across multiple named wikis.
Field notes: MediaWiki MCP: reads worked after login expired covers the expired bot-password session and loopback-only container listener failures behind the current authentication and deployment checks.
Features
Multi-Wiki Support: Register named wikis, fan-out searches across all of them
REST API: Uses the modern
/rest.php/v1/endpoints for page CRUD, search, and revisionsBot Password Auth: Logs in via
Special:BotPasswordswith per-wiki credentialsPage Operations: Read, create, update, delete, and undelete pages
Search: Full-text and prefix search across all registered wikis
File Operations: Get file metadata, upload files from data or URL
Category Browsing: List categories and their members with pagination
History & Revisions: Access revision history, view individual revisions
Recent Changes: Track wiki activity across all wikis
Link Analysis: Explore outgoing links and backlinks
Pagination: All list endpoints support continuation tokens
Retry Logic: Exponential backoff on 429/5xx errors
Related MCP server: mediawiki-mcp-server
Installation
Prerequisites
Node.js 18 or higher
MediaWiki 1.42 or higher
Local Installation
git clone https://github.com/ttpears/mediawiki-mcp.git
cd mediawiki-mcp
npm install
npm run buildClaude Code Installation
Register the published npm package directly with claude mcp add. Repeat --env for each variable, put all flags before the server name, and use -- to mark the start of the spawned command. --scope picks where the entry lives: local (default, current project), user (every project), or project (.mcp.json for team check-in).
Single-wiki:
claude mcp add mediawiki \
--scope user \
--env MEDIAWIKI_BASE_URL=https://wiki.example.com \
--env MEDIAWIKI_USERNAME=Admin@mcp \
--env MEDIAWIKI_PASSWORD=your-bot-password \
-- npx -y mediawiki-mcpMulti-wiki — register wikis as Name:URL pairs in MEDIAWIKI_WIKIS, then provide MEDIAWIKI_USERNAME_<NAME> and MEDIAWIKI_PASSWORD_<NAME> per wiki (uppercase). MEDIAWIKI_DEFAULT_WIKI picks the wiki used when a tool call doesn't specify one:
claude mcp add mediawiki \
--scope user \
--env MEDIAWIKI_WIKIS=Main:https://wiki.example.com,Dev:https://dev.wiki.example.com \
--env MEDIAWIKI_DEFAULT_WIKI=Main \
--env MEDIAWIKI_USERNAME_MAIN=Admin@mcp \
--env MEDIAWIKI_PASSWORD_MAIN=your-bot-password \
--env MEDIAWIKI_USERNAME_DEV=Admin@mcp \
--env MEDIAWIKI_PASSWORD_DEV=your-bot-password \
-- npx -y mediawiki-mcpClaude Desktop (MCPB bundle)
Each release attaches a one-click mediawiki-mcp-<version>.mcpb bundle. Download it
from the latest release
and open it with Claude Desktop (Settings → Extensions → install from file, or
double-click). Claude Desktop prompts for the configuration:
Wiki API Base URL — e.g.
https://wiki.example.com(single-wiki setup).Bot Username / Bot Password — optional; from
Special:BotPasswords. Leave blank for anonymous read-only access. Credentials are stored in your OS keychain.Wikis / Default Wiki Name — optional advanced fields for multi-wiki use. Note: per-wiki credentials can't be entered through the bundle UI, so authenticated multi-wiki still needs the Docker/env setup below.
To build the bundle locally: npm run build:mcpb.
Docker Installation
cp .env.example .env
# Edit .env with your wiki URLs and credentials
docker compose up -dAuthentication
This server uses MediaWiki bot passwords for API authentication. Bot passwords are scoped credentials that limit what the bot can do, separate from your real account password.
Creating a Bot Password
Log in to your MediaWiki wiki as a user with the permissions you want the bot to have
Navigate to Special:BotPasswords (e.g.,
https://wiki.example.com/wiki/Special:BotPasswords)Enter a bot name (e.g.,
mcp) and click CreateSelect the grants (permissions) the bot needs:
High-volume (bot) access — required for API usage
Edit existing pages — for
update-pageEdit protected pages — if the bot needs to edit protected pages
Create, edit, and move pages — for
create-page,update-pageDelete pages and revisions — for
delete-page/undelete-pageUpload, replace, and move files — for
upload-file/upload-file-from-urlPatrol changes to pages — if using activity monitoring
Rollback changes to pages — if using rollback features
Click Create to generate the password
MediaWiki will display credentials in this format:
Username: Admin@mcp
Password: your-bot-password-hereYou need both values. The username (Admin@mcp) goes in MEDIAWIKI_USERNAME_* and the password goes in MEDIAWIKI_PASSWORD_*. The server uses these to log in via the Action API (action=login) and maintains a cookie-based session for all subsequent requests.
Repeat for Each Wiki
If you have multiple wikis, create a bot password on each one. You'll have a username/password pair per wiki.
Configuration
Multi-Wiki Setup
Create a .env file (see .env.example):
# Register multiple wikis (Name:URL pairs, comma-separated)
MEDIAWIKI_WIKIS=Main:https://wiki.example.com,Dev:https://dev.wiki.example.com
# Default wiki when none is specified
MEDIAWIKI_DEFAULT_WIKI=Main
# Per-wiki bot password credentials (uppercase wiki name)
MEDIAWIKI_USERNAME_MAIN=Admin@mcp
MEDIAWIKI_PASSWORD_MAIN=your-bot-password-here
MEDIAWIKI_USERNAME_DEV=Admin@mcp
MEDIAWIKI_PASSWORD_DEV=your-bot-password-hereSingle-Wiki Setup
MEDIAWIKI_BASE_URL=https://wiki.example.com
MEDIAWIKI_USERNAME=Admin@mcp
MEDIAWIKI_PASSWORD=your-bot-password-hereHTTP Transport
MEDIAWIKI_MCP_PORT=8009
MEDIAWIKI_MCP_HOST=0.0.0.0Usage
Stdio Mode (Local)
npm startHTTP Mode (Remote / Docker)
npm run start:httpEndpoint: http://localhost:8009/mcp
LibreChat Integration
1. Add wiki credentials to the LibreChat .env
Add the MEDIAWIKI_* variables to your LibreChat host's .env file:
# MediaWiki MCP
MEDIAWIKI_WIKIS=Main:https://wiki.example.com,Dev:https://dev.wiki.example.com
MEDIAWIKI_DEFAULT_WIKI=Main
MEDIAWIKI_USERNAME_MAIN=Admin@mcp
MEDIAWIKI_PASSWORD_MAIN=your-bot-password-here
MEDIAWIKI_USERNAME_DEV=Admin@mcp
MEDIAWIKI_PASSWORD_DEV=your-bot-password-here2. Add to docker-compose.override.yml
services:
mediawiki-mcp:
build: ./mediawiki-mcp
container_name: mediawiki-mcp
env_file:
- .env
environment:
- MEDIAWIKI_MCP_HOST=0.0.0.0
restart: unless-stopped
networks:
- defaultThis builds the container from source and starts it alongside LibreChat. No need to install Node.js on the host — Docker handles the build.
3. Configure in librechat.yaml
mcpServers:
mediawiki:
type: streamable-http
url: http://mediawiki-mcp:8009/mcpIf you have
allowedDomainsconfigured in LibreChat, addmediawiki-mcpto the list.
Use as a Claude.ai Connector (OAuth)
The HTTP transport can run as a public remote connector for claude.ai,
authenticated with Microsoft Entra (OIDC) — no MediaWiki extensions required.
The server is an OAuth 2.1 broker: it presents authorization-server metadata and
Dynamic Client Registration to Claude, runs the Entra sign-in flow, and issues its
own audience-bound access tokens. Entra decides who can connect; wiki reads and
edits run on the existing per-wiki bot accounts (MEDIAWIKI_USERNAME_<WIKI> /
MEDIAWIKI_PASSWORD_<WIKI>), attributed to the Entra user in edit summaries. Only
broker session state lives in Redis (namespaced by host); no wiki credentials
or Entra tokens are stored. The stdio and LibreChat header paths are unaffected.
The connector serves the whole farm in MEDIAWIKI_WIKIS (cross-wiki fan-out). Any
tenant member can read; write tools (create/update/delete/upload) are gated
by an Entra app role (OAUTH_WRITE_ROLE, default Writer) — members without
it get read-only.
1. Register / reuse an Entra app
Reuse an existing Entra app (e.g. the bookstack connector's) or register a new one.
Add the redirect URI
https://<your-public-url>/callback.Define an app role for write access (e.g.
Writer) and assign it to the users who should be able to edit. (Reading needs no role.)
2. Configure the connector environment
MEDIAWIKI_MCP_AUTH=oauth
MEDIAWIKI_MCP_PUBLIC_URL=https://wiki-mcp.example.com # public HTTPS base URL
# the farm to serve, and per-wiki bot credentials for the actual API calls:
MEDIAWIKI_WIKIS=itops:https://itops.wiki.example.com,tech:https://tech.wiki.example.com
MEDIAWIKI_DEFAULT_WIKI=itops
MEDIAWIKI_USERNAME_ITOPS=Bot@mcp
MEDIAWIKI_PASSWORD_ITOPS=<bot password>
MEDIAWIKI_USERNAME_TECH=Bot@mcp
MEDIAWIKI_PASSWORD_TECH=<bot password>
# Entra app (OIDC):
OAUTH_TENANT_ID=<entra tenant id>
OAUTH_CLIENT_ID=<entra app client id>
OAUTH_CLIENT_SECRET=<entra app client secret>
OAUTH_WRITE_ROLE=Writer # app role granting write
# broker infra:
REDIS_URL=redis://:<password>@redis:6379 # shared broker state
MEDIAWIKI_MCP_JWT_SECRET=<random secret>
MEDIAWIKI_MCP_HOST=0.0.0.0
MEDIAWIKI_MCP_TRUST_PROXY=1 # behind a reverse proxy
# MEDIAWIKI_MCP_ALLOWED_HOSTS=wiki-mcp.example.com # optional Host allowlistTerminate TLS at your reverse proxy and forward to the server; it must be reachable
at MEDIAWIKI_MCP_PUBLIC_URL. Run the published image ghcr.io/ttpears/mediawiki-mcp
(the npm run start:http entrypoint) or locally with npm run start:http.
3. Add the connector in claude.ai
Add a custom connector pointing at https://<your-public-url>/mcp. Claude discovers
the auth server via /.well-known/oauth-protected-resource/mcp, registers itself
via DCR, and signs the user in through Entra. One sign-in covers the whole farm.
Tools
All tools that accept a wiki parameter will use the default wiki when omitted. Search and listing tools fan out across all registered wikis when wiki is not specified.
Wiki Management
Tool | Description |
| Register a new named wiki (name, url, username, password) |
| Remove a registered wiki |
| Show all registered wikis |
Search (Fan-Out)
Tool | Description |
| Full-text search across wikis |
| Title prefix search across wikis |
Parameters: query, wiki?, limit?
Page Operations (Single Wiki)
Tool | Description |
| Get page content (wikitext or HTML) and metadata |
| Create a new page |
| Edit an existing page (requires |
| Delete a page |
| Restore a deleted page |
History (Single Wiki)
Tool | Description |
| Paginated revision list for a page |
| Get details of a specific revision by ID |
Categories
Tool | Description |
| List categories with member counts (fan-out) |
| List pages in a category (single wiki, paginated) |
Files (Single Wiki)
Tool | Description |
| Get file metadata, dimensions, and URLs |
| Upload from base64-encoded data |
| Upload from a remote URL |
Activity (Fan-Out)
Tool | Description |
| Recent edits, creations, and deletions across wikis |
Links (Single Wiki)
Tool | Description |
| Get outgoing links or backlinks for a page |
Development
npm run dev # Watch mode
npm run type-check # Type checking
npm run build # Build
npm test # Run tests (85 tests)
npm run test:watch # Watch mode testsArchitecture
src/
├── index.ts # Entry point (stdio)
├── stdio.ts # Stdio transport
├── http-transport.ts # Streamable HTTP transport
├── wiki-registry.ts # Named wiki storage and env parsing
├── wiki-orchestrator.ts # Fan-out routing and client management
├── types.ts # TypeScript types
├── clients/
│ ├── rest-client.ts # REST API (/rest.php/v1/)
│ └── action-client.ts # Action API (/api.php) + bot password login
└── tools/
├── index.ts # Tool registration barrel
├── wiki-tools.ts # Wiki management
├── search-tools.ts # Search (fan-out)
├── page-tools.ts # Page CRUD
├── history-tools.ts # Revision history
├── category-tools.ts # Categories
├── link-tools.ts # Links and backlinks
├── file-tools.ts # File operations
└── activity-tools.ts # Recent changesTransport Layer (stdio.ts, http-transport.ts)
↓
WikiOrchestrator (fan-out / routing)
↓ ↓
RestClient ActionClient
(/rest.php/v1) (/api.php)
↑ ↑
└── shared session cookies (bot password login)License
MIT
Contributing
Contributions welcome! Please open issues or pull requests.
Available Tools
21 toolsadd-wikiA
Register a new MediaWiki instance so you can read and edit its pages. Provide the wiki base URL and optional bot credentials. After adding, use the wiki name in other tools' "wiki" parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Base URL of the MediaWiki instance | |
| name | Yes | Unique name for the wiki | |
| password | No | Bot password | |
| username | No | Bot username (e.g. User@BotName) |
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 that bot credentials are optional and how the new name is consumed downstream, but it omits whether the registration persists, whether names must be unique, and what happens on failure.
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 tight sentences with zero filler, front-loaded with the action and ending on the downstream usage of the result. Every sentence 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?
With no annotations and no output schema, the description is adequate for a simple registration call but leaves notable gaps around persistence, uniqueness enforcement, and error behavior. It is minimum-viable rather than 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%, so the schema already documents name, url, username and password. The description only restates that the URL is the base URL and credentials are optional, adding no syntax or format detail beyond the schema. 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?
States a specific verb+resource ('Register a new MediaWiki instance') and adds the payoff ('so you can read and edit its pages'). Clear on what it does, but does not differentiate from the sibling set-wiki, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives only post-add guidance ('use the wiki name in other tools' "wiki" parameter'), which is helpful but forward-looking rather than selection guidance. It never says when to call add-wiki versus set-wiki, or what happens on duplicate registration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-pageA
Create a new wiki page with wikitext content. The page must not already exist — use update-page to modify existing pages.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Name of the person requesting this edit (for attribution in edit summary). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | Page title | |
| content | Yes | Page content (wikitext) | |
| summary | Yes | Edit summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the key precondition that the target must not already exist, but says nothing about what happens on violation (error vs. overwrite), permission/auth requirements, or whether the created page is returned.
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 tight sentences with zero waste; the core action is front-loaded and the constraint plus alternative follow immediately. Every clause 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?
For a mutation tool with no annotations and no output schema, the description covers the action, the precondition, and the alternative well. It stops short of describing failure behavior when the page exists or the return value, which an agent would benefit from given the absence of annotations.
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 all five parameters are already documented in the schema (including the 'ask the user if not known' guidance for user). The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (wiki page) plus the content format (wikitext). It explicitly contrasts itself with the sibling update-page, so an agent can distinguish the two without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition (the page must not already exist) and routes the agent to the named alternative (update-page) for the modify case. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-pageA
Delete a wiki page permanently. This requires admin/sysop rights on the wiki.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Name of the person requesting this edit (for attribution in edit summary). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | Page title to delete | |
| reason | No | Reason for deletion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses two key traits: the operation is permanent/irreversible, and it requires admin/sysop rights. It doesn't mention rate limits, edit summaries, or what the response contains, but the two disclosed traits are the most safety-critical ones for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, front-loaded with the destructive action first, then the permission requirement. Ideal density for a simple tool.
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 destructive mutation tool with no annotations and no output schema, the description covers the essential facts an agent needs: what it does, that it's permanent, and that elevated permissions are required. It doesn't mention failure modes or return values, but the core call-critical information is present.
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 all four parameters (user, wiki, title, reason) are already documented in the schema. The description adds no parameter detail beyond what the schema provides. 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?
States a specific verb (delete) and resource (wiki page), plus the critical qualifier 'permanently' which distinguishes it from the sibling undelete-page. An agent can immediately tell what this does and how it differs from the restore tool.
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 it (permanent page removal requiring admin rights) versus undelete-page, but doesn't explicitly name the alternative or spell out the when/when-not condition. The permanence qualifier gives clear context that this is irreversible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-pageA
Unified page locator. Tries exact title (following redirects), then title-prefix match, then full-text search, across all registered wikis by default. Returns a single ranked list where exact/redirect hits come before prefix hits, which come before full-text hits. Use this as the first step whenever you need to locate a specific page — it succeeds regardless of whether the user gave you the exact title, a partial title, or a topic description.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (omit to search all registered wikis) | |
| limit | No | Maximum number of ranked results | |
| query | Yes | Page title, partial title, or topic to locate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the triage order of matching strategies, redirect following, default cross-wiki scope, and the ranked-result ordering. It omits auth requirements, rate limits, or error behavior, but covers the read-only operational semantics thoroughly.
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?
Purpose is front-loaded in the first sentence, followed by mechanism and ranking, then usage. Four sentences with little waste, though the final sentence is slightly long. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the returned ranked list and its ordering, so an agent knows what to expect. Combined with full schema coverage, it is complete enough to call correctly, missing only minor operational caveats.
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 all three parameters are already documented in the schema. The description restates the cross-wiki default (matching the wiki param) and the single ranked list (relating to limit) but adds no format or syntax detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific noun-and-verb framing ('Unified page locator') and details its three-stage matching strategy (exact/redirect, prefix, full-text). It clearly positions itself as the combined superset of the narrower search-page and search-page-by-prefix siblings, so an agent can tell it apart without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Use this as the first step whenever you need to locate a specific page') and explains it works for exact, partial, or topical input. It doesn't name specific alternative tools or state when NOT to use it, so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-category-membersA
List all pages, subcategories, or files within a specific category. Returns member titles and IDs. Use type to filter (page/subcat/file).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by member type | |
| wiki | No | Wiki name (uses default if omitted) | |
| limit | No | Maximum number of members | |
| category | Yes | Category name (with or without "Category:" prefix) | |
| continue_from | No | Continuation token for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the return shape (titles and IDs) and the aggregation nature, which is useful, but it says nothing about pagination behavior (limit default 50, continue_from), read-only safety, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no obvious padding. The type-filter sentence slightly repeats the enum already in the schema, but the size is appropriate for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with full schema coverage and no output schema, the description covers purpose, filter, and return content adequately. The main omission is pagination behavior, which an agent might want when results are truncated.
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 every parameter is already documented in the schema, and the type enumeration is duplicated rather than extended. The description adds no syntax or format detail beyond what the schema provides, 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?
States a specific verb (list) and resource (members of a category), enumerating the member kinds (pages, subcategories, files). This clearly distinguishes it from list-categories and get-page, though it doesn't name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use type to filter (page/subcat/file)" gives implied usage for one parameter, but there is no guidance on when to prefer this tool over list-categories, search-page, or get-page, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-fileB
Get metadata and download URLs for an uploaded file (image, PDF, etc). Returns dimensions, file size, media type, and both original and preferred-format URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | File title (with or without "File:" prefix) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load; it discloses the read-only nature implicitly via 'Get' and enumerates what is returned (dimensions, size, media type, original/preferred URLs), which is genuinely useful. It omits permissions/auth requirements and any behavior for missing or non-file titles.
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 tight sentences, front-loaded with the core action and followed by the return contents. 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?
With no output schema, the description correctly compensates by listing the return fields, and the input schema fully documents the two parameters. It lacks usage/alternative guidance and auth notes, but for a simple read tool this is close to 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% and the schema already documents both 'wiki' and 'title' (including the 'File:' prefix tolerance), so the description adds no parameter meaning beyond it. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get metadata and download URLs for an uploaded file') plus the resource types handled (image, PDF, etc), which is clear and actionable. It does not explicitly differentiate itself from retrieval siblings like get-page or get-revision, so it falls short of a 5.
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 never says when to use this tool versus alternatives, nor any prerequisites (e.g., that the file must already be uploaded via upload-file/upload-file-from-url). Nothing routes the agent among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-pageA
Retrieve a wiki page's full wikitext source and metadata. Returns the page title, ID, content model, latest revision ID/timestamp, and the raw wikitext source. Call this BEFORE update-page to read the current content you want to edit.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | Page title | |
| include_html | No | Include rendered HTML |
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 returned fields (title, ID, content model, revision info, wikitext), which is the main behavioral context. It doesn't state whether the operation is read-only (implicit from 'Retrieve' and 'get'), whether it requires authentication, or error behavior for missing pages – gaps for a read tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and return contents, second sentence provides a critical usage directive. 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 a simple read operation, the description adequately covers what is returned and when to use it. Minor gaps remain around permissions and error handling, but for a 3-param getter with full schema coverage, it is nearly 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%, so parameter documentation is fully handled by the schema. The description adds no parameter-specific details (e.g., title format, wiki name default behavior), but baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (wiki page's full wikitext source and metadata) and enumerates exactly what is returned. Clearly distinguishes from siblings like get-revision and get-page-history by emphasizing 'full source' and 'metadata'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call before update-page to read current content, giving a clear workflow context. It doesn't mention when not to use it or name alternatives like get-revision for just a revision, but the primary usage is well-articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-page-historyA
Get the revision history of a wiki page. Returns a list of revisions with IDs, timestamps, authors, size changes, and edit summaries. Use older_than to paginate through long histories.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (uses default if omitted) | |
| limit | No | Maximum number of revisions | |
| title | Yes | Page title | |
| older_than | No | Only show revisions older than this revision ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the return contents (IDs, timestamps, authors, size changes, edit summaries) and the pagination mechanism, but says nothing about permission requirements, default limits, or whether an empty/nonexistent page errors.
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 tight sentences with the purpose front-loaded, followed by return content and the pagination hint. No wasted wording, though it could be marginally denser.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately covers return fields and pagination. For a simple read tool this is largely sufficient, with only minor gaps around limits and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented. The description only reiterates older_than as the pagination key, adding no syntax or format detail beyond the schema. 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?
States a specific verb (Get) and resource (revision history of a wiki page), which is clearly distinct from sibling get-revision (single revision) and get-page (current content). It does not explicitly name those siblings, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one concrete usage hint — use older_than to paginate long histories — which is genuinely helpful. However, it offers no guidance on when to prefer this over get-revision or get-page, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-page-linksA
Get outgoing links from a page (direction="from") or find all pages that link to it (direction="to", i.e. backlinks). Returns link titles and namespaces.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (uses default if omitted) | |
| limit | No | Maximum number of links | |
| title | Yes | Page title | |
| direction | No | Link direction: "from" for outgoing links, "to" for backlinks | from |
| continue_from | No | Continuation token for pagination |
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 the return shape (link titles and namespaces) and direction semantics, but says nothing about read-only nature, permissions, rate limits, or pagination behavior despite a continue_from param existing. Some context, but incomplete for a query 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?
Two tight sentences with no waste, front-loading the two-mode behavior and return format. Efficient, though it could be more concise about the namespace detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description does enough to orient an agent on the core query and return shape, but omits pagination semantics (continue_from) and safety profile. Adequate but with clear gaps for a 5-param, no-annotation 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 documents all five parameters including the direction enum. The description restates the direction semantics already in the schema but adds no new syntax, format, or constraint details. 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?
States a specific verb (get) and resource (page links), and explicitly distinguishes the two modes via direction=from vs direction=to. No sibling tool covers page links, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains what each direction value means, which is implied usage guidance, but offers no when-to-use vs alternatives, no prerequisites, and no routing to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-recent-changesA
Get a feed of recent edits, page creations, and log events across wikis. Returns timestamps, change types, page titles, authors, size deltas, and edit summaries. Useful for monitoring wiki activity.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by change type | |
| wiki | No | Wiki name (omit to get changes from all wikis) | |
| limit | No | Maximum number of changes | |
| namespace | No | Filter by namespace number | |
| continue_from | No | Continuation token for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden. It usefully lists return fields (timestamps, change types, page titles, authors, size deltas, edit summaries) in place of an output schema, but omits operational details like auth needs, rate limits, pagination behavior, or the time window covered.
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 front-loaded sentences with no wasted text: purpose, return fields, then usage context. Each sentence contributes distinct 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?
The description adequately covers a read-only feed tool with fully documented parameters and no output schema by summarizing return fields. It leaves minor gaps around ordering and time-window behavior, but these are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter semantics are fully documented in the schema. The description only implies cross-wiki scope via 'across wikis' and adds no syntax, defaults, or filtering guidance 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?
States a specific verb and resource: 'Get a feed of recent edits, page creations, and log events across wikis.' The cross-wiki scope and feed framing distinguish it from page-specific siblings like 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?
Says it is 'Useful for monitoring wiki activity,' which implies a use case but does not specify when to choose this over get-page-history, search-page, or other siblings. No alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-revisionB
Get details for a specific revision by ID. Returns the page title, timestamp, author, size, byte delta, and edit comment.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (uses default if omitted) | |
| revision_id | Yes | Revision ID |
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. 'Get' implies a safe read, and the description does disclose the returned fields (title, timestamp, author, size, byte delta, edit comment), which is genuinely useful. However it says nothing about error behavior for an invalid/missing revision ID, wiki defaulting, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, and the return-value list is compact and informative. 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?
For a simple two-parameter read tool with no output schema, the description covers what the tool does and enumerates the returned fields, which compensates for the missing output schema. Minor gap: nothing about the wiki defaulting behavior or failure modes.
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 both parameters (wiki, revision_id) are already documented in the schema; baseline 3 applies. The description's 'by ID' adds only a marginal restatement of the revision_id parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: get details for a single revision identified by ID. This is distinguishable from get-page-history (which lists revisions) and get-page, but the description never explicitly contrasts with those siblings, so it falls just short of a 5.
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 phrase 'by ID' implies the caller must already have a revision ID, which is useful context, but there is no explicit when-to-use guidance, no mention of get-page-history as the alternative for listing revisions, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-categoriesB
List all categories on the wiki with page/subcat/file counts. Use prefix to filter by name prefix. Useful for discovering how content is organized.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (omit to list from all wikis) | |
| limit | No | Maximum number of categories | |
| prefix | No | Filter categories by prefix | |
| continue_from | No | Continuation token for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It does disclose the return content (page/subcat/file counts), which is helpful, but says nothing about pagination behavior despite the limit and continue_from parameters, nor about permissions or read-only nature.
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 short sentences, front-loaded with the core action and return shape, then the filter hint. No filler, though the third sentence is soft utility framing rather than essential 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?
For a four-parameter list tool with no output schema, the description covers the action, the filter, and the return shape, which is adequate. It omits pagination behavior and multi-wiki scoping semantics that the continue_from and wiki parameters imply.
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 the schema already documents all four parameters; baseline 3 applies. The description's prefix note largely restates the schema's own 'Filter categories by prefix' and adds nothing for wiki, limit, or continue_from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all categories on the wiki') and discloses what is returned (page/subcat/file counts). It implicitly distinguishes itself from the sibling get-category-members by listing categories rather than their members, though it never names that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence ('Useful for discovering how content is organized') implies a discovery use case, and the prefix note hints at narrowing. However, there is no explicit when-to-use vs when-not guidance and no mention of the sibling get-category-members for drilling into a category.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-wikisA
List all registered wikis with their URLs, auth status, and which is the default. Call this first if you're unsure which wikis are available.
| 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 the full burden. It discloses the returned fields and implies a read-only operation via the verb 'List', but does not explicitly state that it has no side effects or describe any potential error conditions or output format beyond the listed attributes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the purpose and immediately provides actionable guidance. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with no annotations or output schema, the description is reasonably complete. It covers what is listed and when to use it, but could optionally mention absence of side effects or whether wikis are sorted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so parameter documentation is not needed. The description adds value by explaining what the output contains (URLs, auth status, default), which is useful for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all registered wikis and specifies the returned attributes (URLs, auth status, default). It is distinct from sibling tools like add-wiki and remove-wiki, which modify wikis, and search tools, which operate on 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?
The description gives explicit when-to-use guidance: 'Call this first if you're unsure which wikis are available.' It does not explicitly name alternatives or when-not scenarios, but the context makes it clear this is the initial discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove-wikiA
Unregister a wiki so it is no longer accessible. Does not affect the wiki itself — only removes it from this session.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the wiki to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the key behavioral trait: it does not affect the underlying wiki, only the session registration. It does not state reversibility (whether re-adding restores access), error behavior for unknown names, or permission requirements, so it falls short of full 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?
Two short sentences, front-loaded with the action and followed by the crucial scoping caveat. Every clause 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?
For a one-parameter tool with no output schema, the description covers the essential behavior (session-scoped removal, non-destructive). Minor gaps remain around reversibility and error cases, but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'name' parameter is documented in the schema. The description adds no format, naming, or resolution semantics beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Unregister') and resource ('a wiki') and immediately clarifies the scope of the effect ('no longer accessible'), which distinguishes it from the destructive delete-page sibling. An agent can tell this apart from add-wiki/list-wikis/set-wiki without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'only removes it from this session' implies the appropriate use case (session-scoped unregistration rather than data deletion), but no alternative tool is named and no when-not guidance is given. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-pageA
Full-text search across wiki pages. Returns matching page titles, IDs, and text excerpts. Use this to find pages when you don't know the exact title.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (omit to search all wikis) | |
| limit | No | Maximum number of results | |
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does add useful behavior by stating the return payload (page titles, IDs, text excerpts) and that the search is read-only in nature, but it says nothing about result ordering, pagination beyond the limit param, or whether searching all wikis has cost implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core operation, then the return shape, then the selection cue. 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 read-only search tool with a fully documented schema, the description covers purpose, output shape, and when to reach for it. It is nearly complete; only ranking/pagination behavior and the query syntax are unaddressed.
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%, with wiki, limit, and query all documented in the schema, so the baseline is 3. The description adds no extra meaning about query syntax (e.g., whether it supports phrases or operators) or the behavior of omitting wiki, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Full-text search across wiki pages') and immediately says what comes back (titles, IDs, text excerpts), which separates it from siblings like find-page or search-page-by-prefix. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection condition: 'Use this to find pages when you don't know the exact title,' which implicitly contrasts with the exact-title lookup sibling. It does not name the alternative tool (find-page) or say when not to use this one, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-page-by-prefixA
Search for pages by title prefix (autocomplete-style). Returns matching page titles and IDs. Faster than full-text search when you know the beginning of the page title.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki | No | Wiki name (omit to search all wikis) | |
| limit | No | Maximum number of results | |
| query | Yes | Title prefix to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but this is an inherently safe read-only lookup and the description discloses the return payload ('matching page titles and IDs') plus a performance characteristic. It does not mention pagination behavior, the cross-wiki default, or rate limits, so it adds moderate rather than rich behavioral 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?
Three short sentences, front-loaded with the core action and scope, and each subsequent sentence (return values, performance trade-off) earns its place. No padding or redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly states what comes back (titles and IDs), and the inputs are fully covered by the schema. Minor gaps remain around the wiki-scoping default and result limits, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (wiki, limit, query) are already documented in the schema. The description's mention of 'title prefix' restates the query semantics without adding format, matching, or case-sensitivity details, so the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search for pages') and narrows it precisely to title-prefix matching with an autocomplete framing. The note about being 'faster than full-text search' implicitly distinguishes it from the sibling search-page, so an agent can pick between them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to choose this tool ('when you know the beginning of the page title') and contrasts it against full-text search. It stops short of naming the sibling tool explicitly (search-page), leaving the alternative to inference, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-wikiA
Set the default wiki. When multiple wikis are registered, this determines which wiki is used when the "wiki" parameter is omitted from other tool calls.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the registered wiki to set as default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does disclose the key global side effect: the chosen wiki becomes the implicit default for other tool calls that omit "wiki". It does not mention persistence scope, permissions, or whether the change is reversible, which leaves some gaps for a state-mutating 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?
Two short sentences: the action first, then the consequence, with zero filler. Every sentence 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?
For a one-parameter setter with a fully documented schema and no output schema, the description gives enough to call it correctly and understand its effect. Only the persistence/permission details are missing, which is a minor gap given the tool's 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?
Schema coverage is 100% and the single "name" parameter is fully documented in the schema as the registered wiki to set as default. The description adds no syntax, format, or constraint detail beyond that, so the 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?
States a specific verb (Set) and resource (default wiki) and explains the concrete outcome: which wiki is used when the "wiki" parameter is omitted. This clearly separates it from siblings like add-wiki, remove-wiki, and list-wikis, which manage the registry rather than the default pointer.
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?
Explains the context in which this matters (multiple wikis registered) and what it affects downstream, so an agent can infer when to call it. It stops short of explicit when-not guidance (e.g., what happens on a single-wiki setup or how to reset the default), so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undelete-pageA
Restore a previously deleted wiki page. This requires admin/sysop rights on the wiki.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Name of the person requesting this edit (for attribution in edit summary). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | Page title to restore | |
| reason | No | Reason for restoring the page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the admin/sysop permission requirement, but it does not explain whether the restore is reversible, what happens if a page with that title already exists, or how conflicts/history are handled.
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 the action and followed by the key permission prerequisite. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and authorization, which is helpful, but with no annotations and no output schema, it leaves key behavioral details unstated, such as return behavior, reversibility, or handling of an already-existing page with the same title.
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 all four parameters are already documented in the input schema. The description adds no parameter-level syntax, formatting, or defaulting details beyond what the schema provides, making the baseline score 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 states a specific verb and resource: 'Restore a previously deleted wiki page.' It clearly distinguishes the operation from sibling tools such as delete-page, create-page, and update-page by specifying that the page is previously deleted.
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?
Usage context is clear: use this when a deleted wiki page needs to be restored, and the caller must have admin/sysop rights. It does not name alternatives or explicitly state when not to use the tool, but the context is sufficient for a simple restore operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-pageA
Update an existing wiki page. WORKFLOW: First call get-page to read the current wikitext source, then call this tool with your changes.
EDIT MODES (use exactly one): • diff: Preferred for targeted edits. Provide a unified diff (with @@ hunk headers and context lines) — the server fetches current content, applies the patch, and saves. Best for surgical changes to large pages. • section + content: Edit a single section by number (0 = lead section). Only that section is replaced. • append: Add text to the end of the page without reading current content first. • prepend: Add text to the beginning of the page without reading current content first. • content: Full page replacement. Avoid for large pages — use diff instead.
WIKITEXT STYLE GUIDE — when writing or updating wikitext, use modern syntax: • Tables: {| class="wikitable" with |- row separators (not |---- or border="1" or HTML ) • Bold/italic: '''bold''' and ''italic'' (not /) • Headings: == Level 2 == through ====== Level 6 ====== (skip level 1) • Lists: * bullets, # numbered, ; and : for definition lists • Links: [URL description] for external (not bare URLs) • Avoid deprecated tags: , , , , , • Avoid deep colon indentation (::), excessive , inline CSS on divs
| Name | Required | Description | Default |
|---|---|---|---|
| diff | No | Unified diff to apply to the page. Server fetches current content, applies the patch, and submits. Use standard unified diff format with @@ hunk headers. Context lines help match the right location | |
| user | No | Name of the person requesting this edit (for attribution in edit summary). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| title | Yes | Page title | |
| append | No | Text to append to the end of the page | |
| content | No | Full page content for complete replacement. Avoid for large pages — use diff instead | |
| prepend | No | Text to prepend to the beginning of the page | |
| section | No | Section number to edit (0 = lead section). Use with content to replace only that section | |
| summary | Yes | Edit summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses the server-side fetch/apply/save flow for diff, the section-replacement semantics, and content-replacement scope. It omits mutation-confirmation, revertability, and auth/permission requirements, but the core behavioral mechanics of each mode are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the workflow and mode guidance, which earns its place. However, the 11-line wikitext style guide is largely tangential to invoking this tool and bloats the definition; it reads as reference material rather than invocation guidance.
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 9-parameter mutation tool with no annotations and no output schema, the description covers workflow, mode selection, and edit semantics well enough to invoke correctly. Missing permission/attribution caveats (the 'user' param notes attribution) and confirmation behavior are the main 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 description coverage is 100%, so the schema already documents all 9 parameters. The description adds mode-selection semantics (e.g., 'append... without reading current content first') beyond the schema, but does not add parameter-level syntax detail beyond what the schema 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?
States a specific verb+resource ('Update an existing wiki page') and immediately differentiates the edit modes, which distinguishes it from siblings like create-page and delete-page that share the page resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the workflow prerequisite (call get-page first) and provides a clear decision framework: 'use exactly one' of diff/section+content/append/prepend/content, with 'Preferred' and 'Avoid for large pages' guidance. This is textbook when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload-fileC
Upload a file to the wiki from base64-encoded data. Provide the file content as a base64 string.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Base64-encoded file content | |
| user | No | Name of the person requesting this upload (for attribution). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| comment | No | Upload comment | |
| filename | Yes | Target filename on the wiki | |
| description | Yes | File description (wikitext) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It states the base64 input requirement but omits authentication or permission needs, overwrite behavior for duplicate filenames, size limits, and what side effects occur on the wiki.
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 definition is short and front-loads the main purpose, but the second sentence repeats the base64 requirement already stated in the first sentence and in the schema. One sentence would have sufficed.
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 six-parameter mutation tool with no annotations and no output schema, the description is too thin. It does not cover permissions, overwrite behavior, attribution expectations, or the default-wiki behavior, leaving important operational context to the schema alone.
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 the schema already documents all six parameters, including the base64 data field. The description adds no meaning beyond what the schema provides; it merely repeats the base64 encoding requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: upload a file to the wiki. It also specifies the input mechanism, base64-encoded data, which implicitly separates it from upload-file-from-url, but it does not explicitly name or contrast with that sibling.
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 the file content is available as base64, but it gives no explicit when-to-use guidance, no prerequisites, and no named alternative such as upload-file-from-url. An agent must infer the selection criteria from the input format alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload-file-from-urlA
Upload a file to the wiki by fetching it from a URL. The wiki server downloads the file directly from the source URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Source URL to fetch the file from | |
| user | No | Name of the person requesting this upload (for attribution). Ask the user if not known | |
| wiki | No | Wiki name (uses default if omitted) | |
| comment | No | Upload comment | |
| filename | Yes | Target filename on the wiki | |
| description | Yes | File description (wikitext) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the server-side fetch model (the wiki server, not the client, downloads the file), but says nothing about authentication or permission requirements, overwrite behavior when the filename already exists, size limits, or failure modes for unreachable URLs.
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 short sentences, front-loaded with the action and resource, with the second sentence adding only the mechanism that distinguishes it from the sibling tool. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations and no output schema, the definition is adequate but thin: it omits conflict/overwrite semantics, permission needs, and any notion of what the call returns (e.g., the created file reference). The schema covers the inputs, so the remaining gap is behavioral rather than structural.
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 all six parameters are already documented in the schema, including the attribution note on 'user' and the wikitext hint on 'description'. The description adds no parameter-level detail beyond that, so the baseline of 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?
States a specific verb and resource ('Upload a file to the wiki') and adds the distinguishing mechanism ('by fetching it from a URL'), which separates it from the sibling upload-file. It never names that sibling explicitly, so an agent must infer the routing, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'fetching it from a URL' clause suggests this is for remote sources rather than local files, but there is no explicit when-to-use statement, no mention of the alternative upload-file, and no prerequisites or exclusions.
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.
20 tool updates
v2.5.1- Changed
add-wiki1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
create-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
delete-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
find-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-category-members1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-file1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-page-history1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-page-links1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-recent-changes1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-revision1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list-categories1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
remove-wiki1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
search-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
search-page-by-prefix1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
set-wiki1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
undelete-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
update-page1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
upload-file1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
upload-file-from-url1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
21 tool updates
v2.3.2- First observed
add-wiki - First observed
create-page - First observed
delete-page - First observed
find-page - First observed
get-category-members - First observed
get-file - First observed
get-page - First observed
get-page-history - First observed
get-page-links - First observed
get-recent-changes - First observed
get-revision - First observed
list-categories - First observed
list-wikis - First observed
remove-wiki - First observed
search-page - First observed
search-page-by-prefix - First observed
set-wiki - First observed
undelete-page - First observed
update-page - First observed
upload-file - First observed
upload-file-from-url
TDQS
Scored across 21 tools
Most tools target distinct resources, but find-page is explicitly a 'unified page locator' that performs exact, prefix, and full-text search, directly overlapping with search-page and search-page-by-prefix. The descriptions do explain the tradeoffs (speed, unified ranking), so selection is recoverable, but the redundancy is real.
All 21 tools use consistent kebab-case with a predictable verb-noun pattern (get-page, create-page, delete-page, list-wikis, add-wiki), with only natural multi-noun extensions like get-page-history and get-category-members. No mixing of conventions.
21 tools is on the heavy side for the 3-15 sweet spot, but each addresses a distinct MediaWiki operation: page CRUD, history, categories, files, search, and wiki registration. Nothing appears redundant enough to cut except possibly the overlapping search trio.
Strong lifecycle coverage: create/read/update/delete/undelete pages, revision history, revisions, links/backlinks, categories and members, file metadata and two upload paths, recent changes, and multi-wiki management. Minor gaps like page move/rename and protection changes exist but are workaroundable via wikitext edits.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Wikidata MCP — wraps Wikidata API (wikidata.org/w/api.php)
Wikimedia Commons MCP — Action API for files.
Related MCP Servers
- AlicenseAqualityAmaintenanceA secure MCP server for interacting with MediaWiki instances, allowing users to search, read, create, and manage wiki content like pages, categories, and files. It supports both public and private wikis with comprehensive authentication for full read and write operations.19AGPL 3.0
- AlicenseAqualityAmaintenanceMCP server for MediaWiki wikis. Search, read, edit, and manage wiki content from AI assistants. Includes formatting, link checking, revision history, and markdown conversion.4319MIT
- 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.26 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Wiki.js with full GraphQL API coverage, fine-grained permissions, multi-user support, and deployable on Vercel.Apache 2.0