Skip to main content
Glama

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 revisions

  • Bot Password Auth: Logs in via Special:BotPasswords with per-wiki credentials

  • Page 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 build

Claude 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-mcp

Multi-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-mcp

Claude 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 -d

Authentication

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

  1. Log in to your MediaWiki wiki as a user with the permissions you want the bot to have

  2. Navigate to Special:BotPasswords (e.g., https://wiki.example.com/wiki/Special:BotPasswords)

  3. Enter a bot name (e.g., mcp) and click Create

  4. Select the grants (permissions) the bot needs:

    • High-volume (bot) access — required for API usage

    • Edit existing pages — for update-page

    • Edit protected pages — if the bot needs to edit protected pages

    • Create, edit, and move pages — for create-page, update-page

    • Delete pages and revisions — for delete-page / undelete-page

    • Upload, replace, and move files — for upload-file / upload-file-from-url

    • Patrol changes to pages — if using activity monitoring

    • Rollback changes to pages — if using rollback features

  5. Click Create to generate the password

MediaWiki will display credentials in this format:

Username: Admin@mcp
Password: your-bot-password-here

You 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-here

Single-Wiki Setup

MEDIAWIKI_BASE_URL=https://wiki.example.com
MEDIAWIKI_USERNAME=Admin@mcp
MEDIAWIKI_PASSWORD=your-bot-password-here

HTTP Transport

MEDIAWIKI_MCP_PORT=8009
MEDIAWIKI_MCP_HOST=0.0.0.0

Usage

Stdio Mode (Local)

npm start

HTTP Mode (Remote / Docker)

npm run start:http

Endpoint: 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-here

2. 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:
      - default

This 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/mcp

If you have allowedDomains configured in LibreChat, add mediawiki-mcp to 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 allowlist

Terminate 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

add-wiki

Register a new named wiki (name, url, username, password)

remove-wiki

Remove a registered wiki

list-wikis

Show all registered wikis

Search (Fan-Out)

Tool

Description

search-pages

Full-text search across wikis

search-pages-by-prefix

Title prefix search across wikis

Parameters: query, wiki?, limit?

Page Operations (Single Wiki)

Tool

Description

get-page

Get page content (wikitext or HTML) and metadata

create-page

Create a new page

update-page

Edit an existing page (requires latest_timestamp from get-page)

delete-page

Delete a page

undelete-page

Restore a deleted page

History (Single Wiki)

Tool

Description

get-page-history

Paginated revision list for a page

get-revision

Get details of a specific revision by ID

Categories

Tool

Description

list-categories

List categories with member counts (fan-out)

get-category-members

List pages in a category (single wiki, paginated)

Files (Single Wiki)

Tool

Description

get-file

Get file metadata, dimensions, and URLs

upload-file

Upload from base64-encoded data

upload-file-from-url

Upload from a remote URL

Activity (Fan-Out)

Tool

Description

get-recent-changes

Recent edits, creations, and deletions across wikis

Tool

Description

get-page-links

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 tests

Architecture

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 changes
Transport 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 tools
add-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesBase URL of the MediaWiki instance
nameYesUnique name for the wiki
passwordNoBot password
usernameNoBot username (e.g. User@BotName)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoName of the person requesting this edit (for attribution in edit summary). Ask the user if not known
wikiNoWiki name (uses default if omitted)
titleYesPage title
contentYesPage content (wikitext)
summaryYesEdit summary

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoName of the person requesting this edit (for attribution in edit summary). Ask the user if not known
wikiNoWiki name (uses default if omitted)
titleYesPage title to delete
reasonNoReason for deletion

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (omit to search all registered wikis)
limitNoMaximum number of ranked results
queryYesPage title, partial title, or topic to locate

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by member type
wikiNoWiki name (uses default if omitted)
limitNoMaximum number of members
categoryYesCategory name (with or without "Category:" prefix)
continue_fromNoContinuation token for pagination

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (uses default if omitted)
titleYesFile title (with or without "File:" prefix)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (uses default if omitted)
titleYesPage title
include_htmlNoInclude rendered HTML

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (uses default if omitted)
limitNoMaximum number of revisions
titleYesPage title
older_thanNoOnly show revisions older than this revision ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by change type
wikiNoWiki name (omit to get changes from all wikis)
limitNoMaximum number of changes
namespaceNoFilter by namespace number
continue_fromNoContinuation token for pagination

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (uses default if omitted)
revision_idYesRevision ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (omit to list from all wikis)
limitNoMaximum number of categories
prefixNoFilter categories by prefix
continue_fromNoContinuation token for pagination

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the wiki to remove

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (omit to search all wikis)
limitNoMaximum number of results
queryYesSearch query

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki name (omit to search all wikis)
limitNoMaximum number of results
queryYesTitle prefix to search for

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the registered wiki to set as default

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoName of the person requesting this edit (for attribution in edit summary). Ask the user if not known
wikiNoWiki name (uses default if omitted)
titleYesPage title to restore
reasonNoReason for restoring the page

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNoUnified 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
userNoName of the person requesting this edit (for attribution in edit summary). Ask the user if not known
wikiNoWiki name (uses default if omitted)
titleYesPage title
appendNoText to append to the end of the page
contentNoFull page content for complete replacement. Avoid for large pages — use diff instead
prependNoText to prepend to the beginning of the page
sectionNoSection number to edit (0 = lead section). Use with content to replace only that section
summaryYesEdit summary

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesBase64-encoded file content
userNoName of the person requesting this upload (for attribution). Ask the user if not known
wikiNoWiki name (uses default if omitted)
commentNoUpload comment
filenameYesTarget filename on the wiki
descriptionYesFile description (wikitext)

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSource URL to fetch the file from
userNoName of the person requesting this upload (for attribution). Ask the user if not known
wikiNoWiki name (uses default if omitted)
commentNoUpload comment
filenameYesTarget filename on the wiki
descriptionYesFile description (wikitext)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 20 tool updatesv2.5.1
    • Changedadd-wiki1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddelete-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfind-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-category-members1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-file1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-page-history1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-page-links1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-recent-changes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-revision1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist-categories1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedremove-wiki1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch-page-by-prefix1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedset-wiki1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedundelete-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedupdate-page1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedupload-file1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedupload-file-from-url1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 21 tool updatesv2.3.2
    • First observedadd-wiki
    • First observedcreate-page
    • First observeddelete-page
    • First observedfind-page
    • First observedget-category-members
    • First observedget-file
    • First observedget-page
    • First observedget-page-history
    • First observedget-page-links
    • First observedget-recent-changes
    • First observedget-revision
    • First observedlist-categories
    • First observedlist-wikis
    • First observedremove-wiki
    • First observedsearch-page
    • First observedsearch-page-by-prefix
    • First observedset-wiki
    • First observedundelete-page
    • First observedupdate-page
    • First observedupload-file
    • First observedupload-file-from-url

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers