Skip to main content
Glama

MediaWiki MCP Server

NPM Version MIT licensed

An MCP (Model Context Protocol) server that enables Large Language Model (LLM) clients to interact with any MediaWiki wiki.

Features

Tools

Every tool that operates on a wiki accepts an optional wiki argument naming the wiki to act on (the wiki-management and OAuth tools do not) — pass a wiki key (e.g. en.wikipedia.org) or the full mcp://wikis/{wikiKey} URI. Omit it to use the configured default wiki (see Configuration). Each tool response reports the wiki the call ran against.

Page reads

Name

Description

compare-pages

Diff two versions of a wiki page by revision, title, or supplied wikitext.

get-category-members

List members of a category (up to 500 per call, paginated via continueFrom).

get-file

Fetch a file page.

get-file-data

Fetch a file's image bytes inline (base64) for visual analysis — for clients that can't reach the wiki host. Returns a scaled rendition (set width); non-renderable types (audio, video, binaries) error. For metadata or a download URL, use get-file.

get-links-here

List pages that reference a wiki page — pages that link to it, embed it as a template, or display it as a file (select via type), including pages that reach it through a redirect. Up to 500 per call, paginated via continueFrom.

get-page

Fetch a wiki page.

get-page-history

List recent revisions of a wiki page.

get-pages

Fetch multiple wiki pages in one call (up to 50).

get-recent-changes

List recent change events across the wiki, filterable by timestamp, namespace, user, tag, type, and hide flags (up to 50 per call, paginated via continue).

get-revision

Fetch a specific revision of a page.

get-site-info

Get a wiki's key settings: MediaWiki version, content language, title-case rules, namespaces, installed extensions, license, and (optionally) statistics.

list-wikis

List every configured wiki — its key, sitename, server, whether it is read-only or the default, whether it is reachable, which extension-gated tools work on it, and, for an OAuth-configured wiki, its authorization server. Disabled when fewer than two wikis are configured.

parse-wikitext

Render wikitext to HTML without saving. Returns parse warnings, wikilinks, templates, and external URLs.

search-page

Search wiki page titles and contents.

search-page-by-prefix

Search page titles by prefix.

whoami

Report the identity the current session is authenticated as on the targeted wiki — username, whether it is anonymous, and group memberships (optionally user rights).

Page writes

Name

Description

Permissions

create-page 🔐

Create a new wiki page.

Create, edit, and move pages

delete-page 🔐

Delete a wiki page.

Delete pages, revisions, and log entries

move-page 🔐

Move (rename) a wiki page.

Create, edit, and move pages

undelete-page 🔐

Undelete a wiki page.

Delete pages, revisions, and log entries

update-file 🔐

Upload a new revision of an existing file from local disk.

Upload, replace, and move files

update-file-from-url 🔐

Upload a new revision of an existing file from a URL.

Upload, replace, and move files

update-page 🔐

Update an existing wiki page.

Edit existing pages

upload-file 🔐

Upload a file to the wiki from local disk.

Upload new files

upload-file-from-url 🔐

Upload a file to the wiki from a URL.

Upload, replace, and move files

Wiki management

Name

Description

add-wiki

Add a wiki as an MCP resource from its URL. Disabled when allowWikiManagement is false.

remove-wiki

Remove a wiki resource. Disabled when allowWikiManagement is false or fewer than two wikis are configured.

OAuth

Name

Description

oauth-logout

Remove stored OAuth tokens. Stdio only.

oauth-status

List stored OAuth tokens with scopes and expiry (no token values). Stdio only.

Extension packs

Each pack's tools register only on wikis where its extension is installed.

NeoWiki

Name

Description

neowiki-list-schemas

List schemas (entity types) and their property counts.

neowiki-get-schema

Get one schema's property definitions, relations, and select options.

neowiki-cypher-query

Run a read-only Cypher query against the knowledge graph.

neowiki-search-subjects

Find subject IDs by label within a schema.

neowiki-get-subject

Fetch one subject's structured data by ID.

neowiki-get-page-subjects

List the subjects attached to a wiki page.

neowiki-create-subject

Create a subject (child or main) on a page. Requires the edit right.

neowiki-update-subject

Replace a subject's label and statements. Requires the edit right.

neowiki-delete-subject

Delete a subject by ID. Requires the edit right.

neowiki-set-main-subject

Set or clear a page's main subject. Requires the edit right.

neowiki-validate-subject

Dry-run validate a proposed subject and return violations.

Semantic MediaWiki

Name

Description

smw-list-properties

List Semantic MediaWiki properties with copy-paste templates for smw-query.

smw-query

Run a Semantic MediaWiki #ask query.

Bucket

Name

Description

bucket-query

Run a Bucket Lua query.

Cargo

Name

Description

cargo-list-tables

List Cargo tables defined on the wiki.

cargo-describe-table

List a Cargo table's fields with their types and list-flags.

cargo-query

Run a Cargo SQL-style query.

Wikibase

Name

Description

wikibase-search-entities

Find items and properties by label or alias.

wikibase-get-entity

Read one entity's terms and statements, with referenced IDs resolved to labels.

wikibase-query

Run a SPARQL query against the wiki's query service. Offered only for a repository whose siteinfo publishes one.

wikibase-edit-entity

Create or change an entity from Wikibase entity JSON. Requires the edit right.

wikibase-add-statement

Add one statement with an item, string, external-id or url value. Requires the edit right.

Resources

mcp://wikis/{wikiKey} — per-wiki resource exposing sitename, server (the wiki's public address), articlepath, scriptpath, and the private and readOnly flags.

  • Those fields are the whole of it: the resource publishes a fixed list, so credentials and server-side settings in your configuration file are never exposed in resource content.

  • After add-wiki or remove-wiki, the server sends notifications/resources/list_changed so clients refresh.

{
  "contents": [
    {
      "uri": "mcp://wikis/en.wikipedia.org",
      "mimeType": "application/json",
      "text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
    }
  ]
}

Environment variables

The variables below are relevant to any setup. Variables that only apply when self-hosting the HTTP transport (ports, timeouts, Host/Origin and SSRF guards) or running the hosted OAuth proxy are in docs/deployment.md — environment variables. Config-file substitution and upload-directory variables are in docs/configuration.md.

Name

Description

Default

CONFIG

Path to your configuration file

config.json

MCP_TRANSPORT

Type of MCP server transport (stdio or http)

stdio

MCP_LOG_LEVEL

Minimum severity for logger output. One of debug, info, notice, warning, error, critical, alert, emergency, or silent.

debug

MCP_CONTENT_MAX_BYTES

Byte cap for the content bodies and result blocks tools return (wikitext, rendered HTML, diffs, statement and row listings). Tune to the target LLM client's tool-response budget.

50000

MCP_FILE_DATA_MAX_BYTES

Hard cap on the base64-encoded size of a get-file-data response. A transport/safety backstop; tune the actual size per call with the tool's width. Over-cap calls error rather than truncate.

1000000

MCP_UPLOAD_MAX_BYTES

Memory cap on the server-side fetch used by upload-file-from-url / update-file-from-url. Files larger than this are handed to the wiki's own copy-upload instead of being buffered by the server. Guards this server's memory, not the wiki's $wgMaxUploadSize.

104857600

MCP_OAUTH_CREDENTIALS_FILE

Override the default credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json (Linux/macOS) or %APPDATA%\mediawiki-mcp\credentials.json (Windows).

unset

MCP_OAUTH_NO_BROWSER

Set to 1 to skip launching a browser during the OAuth flow; the auth URL is logged to stderr instead. Useful in headless environments.

unset

Related MCP server: @profullstack/mcp-server

Configuration

NOTE

Config is only required when interacting with a private wiki or using authenticated tools.

Create a config.json file to configure wiki connections. Use the config.example.json as a starting point.

{
  "defaultWiki": "en.wikipedia.org",
  "wikis": {
    "en.wikipedia.org": {
      "sitename": "Wikipedia",
      "server": "https://en.wikipedia.org",
      "articlepath": "/wiki",
      "scriptpath": "/w"
    }
  }
}

Internal vs public address. The server you configure may be an internal hostname (e.g. http://mediawiki in Docker); URLs handed back to the caller are built from the wiki's public address, so internal hostnames don't leak into links. See docs/configuration.md — per-wiki fields.

For the full field reference, env-var substitution, secret sources, change tags, upload directories, and authentication options, see docs/configuration.md.

Authentication

Tools marked 🔐 require authentication. Write tools (including extension-pack writes) are hidden from tools/list when the configured default wiki has readOnly: true — see Deployment.

The Cargo tools (cargo-query, cargo-list-tables, cargo-describe-table) call API actions gated by the runcargoqueries user right. Most wikis grant this to all users by default; wikis that restrict it require the Create, query and delete data through the Cargo extension grant on the bot password or OAuth consumer. The Cargo extension is also detected on wiki.gg-hosted wikis (Helldivers, Terraria, Ark, etc.), where it ships under the rebranded name LIBRARIAN.

Installation

Pick your client below, or use the standard configuration if it is not listed. CONFIG is optional; without it the server targets English Wikipedia. To point it at your own wiki and set up authentication for writes, see docs/configuration.md.

Claude Code

Add this repository as a plugin marketplace, then install the bundled server:

/plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
/plugin install mediawiki-mcp-server@professional-wiki

The plugin takes an optional configuration file, which points the server at your own wiki. Set it from the prompt when enabling the plugin, or at any time with /plugin configure mediawiki-mcp-server@professional-wiki. A command-line install takes the same value via claude plugin install mediawiki-mcp-server@professional-wiki --config configPath=path/to/config.json.

When installed as a plugin, the tools are namespaced mcp__plugin_mediawiki-mcp-server_mediawiki__<tool>; update any tool allowlists or hooks accordingly.

To configure the server directly instead, see the Claude Code MCP docs. The short version:

claude mcp add mediawiki-mcp-server -- npx -y @professional-wiki/mediawiki-mcp-server@latest
# Environment variables go before the `--`:
claude mcp add mediawiki-mcp-server -e CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest

Codex

Add this repository as a plugin marketplace, then install the bundled server:

codex plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
codex plugin add mediawiki-mcp-server@professional-wiki

To point the plugin at your own wiki, set CONFIG in the shell you launch Codex from, for example export CONFIG=path/to/config.json. Codex has no per-plugin configuration; if you would rather not set an environment variable, codex mcp add mediawiki --env CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest registers the server directly and takes precedence over the plugin's copy.

See the Codex plugins documentation for how to list, update, or remove plugins.

Claude Desktop

Download MediaWiki-MCP-Server.mcpb and double-click it to install the extension, which prompts for a configuration file path so you can point it at your own wiki instead of English Wikipedia.

VS Code and Cursor

Install in VS Code Install in VS Code Insiders Install in Cursor

Or add the standard configuration by hand.

Antigravity

Add the standard configuration to Antigravity's MCP config, either globally in ~/.gemini/config/mcp_config.json or per-workspace in .agents/mcp_config.json.

If you previously installed the Gemini CLI extension, Antigravity's setup wizard offers to import your existing Gemini CLI configuration.

OpenCode

OpenCode uses its own configuration shape rather than mcpServers; add this to opencode.json in your project root, or ~/.config/opencode/opencode.json for a global install.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mediawiki-mcp-server": {
      "type": "local",
      "command": ["npx", "-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "environment": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

Standard configuration

Most clients read the same server block. Paste it into the file listed for your client, replacing mcpServers with that client's root key:

Client

Configuration file

Root key

Cursor

~/.cursor/mcp.json, or .cursor/mcp.json per project

mcpServers

VS Code

.vscode/mcp.json per workspace, or the MCP: Open User Configuration command

servers

Devin Desktop (formerly Windsurf)

~/.codeium/windsurf/mcp_config.json

mcpServers

Zed

~/.config/zed/settings.json

context_servers

LM Studio

~/.lmstudio/mcp.json

mcpServers

{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": ["-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

For any other client, npx add-mcp @professional-wiki/mediawiki-mcp-server may work: add-mcp is a community CLI that writes your client's configuration file for you. It sets the launch command only; add CONFIG yourself to point at your own wiki.

Deployment

Running the server as a remote HTTP endpoint for other users has its own configuration requirements — see docs/deployment.md. A pre-built image is published at ghcr.io/professionalwiki/mediawiki-mcp-server. For day-2 operations (logs, /health//ready, metrics, graceful shutdown), see docs/operations.md.

Security

Defaults are safe for single-user use. Before exposing the HTTP transport to others, lock down three things:

  • Terminate TLS at your reverse proxy. Don't expose the MCP port directly on an untrusted network. See docs/deployment.md — security checklist.

  • Pair MCP_BIND with MCP_ALLOWED_HOSTS and MCP_ALLOWED_ORIGINS. The HTTP transport binds to 127.0.0.1 by default. When you open it up with MCP_BIND=0.0.0.0, set MCP_ALLOWED_HOSTS to the hostnames your proxy forwards and MCP_ALLOWED_ORIGINS to the browser origins allowed to call the server — these block DNS-rebinding and cross-origin attacks respectively.

  • Uploads are opt-in. upload-file is disabled until you list allowed directories in uploadDirs or MCP_UPLOAD_DIRS. See docs/configuration.md — upload directories.

  • Internal destinations need MCP_TRUSTED_HOSTS. Outbound fetches are SSRF-guarded: a destination resolving to a private or loopback address (e.g. a Docker-network alias like mediawiki.svc) is refused until you list its host in MCP_TRUSTED_HOSTS. See docs/deployment.md — outbound SSRF guard.

Report a vulnerability via GitHub's security advisory form — full policy in SECURITY.md.

Contributing

Contributions are welcome — pull requests and issues (bugs, feature requests, suggestions) both work.

  • Working on tool code? Start from AGENTS.md for repo layout, commands, and testing patterns.

  • Adding or modifying a tool? Read docs/tool-conventions.md — it covers description voice, parameter docs, annotation hints, and MediaWiki terminology conventions.

  • Running a release? See docs/releasing.md.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

29 tools
add-wikiA
Idempotent

Registers a new wiki as an MCP resource by fetching its sitename and API configuration from any URL on the wiki (e.g. a page URL). The wiki becomes available at mcp://wikis/ and can be targeted by passing its key as the wiki argument to any wiki tool. Fails if the URL is not a MediaWiki wiki or if a wiki with the same key is already registered.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiUrlYesAny URL from the target wiki (e.g. https://en.wikipedia.org/wiki/Main_Page)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond annotations by explaining the registration process, resource URI pattern, and failure conditions. It does not describe network calls or auth requirements, but annotations already provide read/write and idempotency hints.

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 succinctly convey purpose, mechanism, and failure conditions. No wasted words, front-loaded with the verb 'Registers'.

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 registration tool with one parameter, the description covers key aspects. Lack of output schema is compensated by explaining the resulting resource URI. Minor: no mention of return format or side effects.

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 description does not need to add much. It reinforces the parameter purpose but does not add new meaning beyond the schema's 'Any URL from the target wiki'.

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 specifies the tool's function: registering a new wiki by fetching its sitename and API configuration from any URL. It distinguishes itself from siblings like 'remove-wiki' and 'list-wikis' by focusing on addition.

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 states when to use (register a wiki) and conditions for failure (non-MediaWiki URL, duplicate key). However, it does not explicitly mention when not to use or compare with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare-pagesA
Read-onlyIdempotent

Returns the changes between two versions of a wiki page as a compact text diff. Each side accepts a revision ID, page title (latest revision), or supplied wikitext; text-vs-text is rejected. Only the changes are returned over the wire. For the full text of both sides, fetch with get-page instead. If a title or revision ID does not exist, an error is returned. Set includeDiff=false for a cheap change-detection response that skips diff rendering and returns just the change flag, revision metadata, and size delta. Diff output is truncated at 50000 bytes by default with a trailing marker; a narrower revision range or includeDiff=false avoids truncation.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
toTextNoSupplied wikitext for the "to" side
toTitleNoWiki page title for the "to" side (latest revision is used)
fromTextNoSupplied wikitext for the "from" side
fromTitleNoWiki page title for the "from" side (latest revision is used)
toRevisionNoRevision ID for the "to" side
includeDiffNoInclude the diff body (default true). Set false for a cheap change-detection response.
fromRevisionNoRevision ID for the "from" side

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, non-destructive. The description adds important behavioral details: supported side types (revision ID, title, supplied wikitext), the rejection of text-vs-text, truncation at 50000 bytes with a trailing marker, and error behavior for missing titles/revisions. This is beyond what annotations provide.

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?

The description is well-structured with the main purpose first, followed by detailed usage. It is slightly long but every sentence adds necessary information. No redundancy or fluff.

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 the complexity (8 parameters, no output schema), the description is thorough: it covers parameter semantics, truncation, change-detection mode, and error handling. It does not describe the exact return format, but that is acceptable due to the diff output being standard. The annotations and schema coverage further complete the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds critical semantics: it explains that each side can be a revision ID, page title, or supplied wikitext, and that both sides cannot be supplied wikitext. It also explains the effect of includeDiff=false, which is not fully captured in the schema description.

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 verb ('returns'), the resource ('changes between two versions of a wiki page'), and the output ('compact text diff'). It distinguishes from sibling tools like get-page by explaining that this tool provides a diff, not the full text.

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 tells when to use this tool (to get changes) and when to use an alternative ('For the full text of both sides, fetch with get-page instead'). Also describes the includeDiff=false option for cheap change-detection, and clarifies that text-vs-text is rejected and that nonexistent titles/revisions cause errors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-pageA
Idempotent

Creates a new wiki page with the provided content and returns the new page's title, page ID, and first revision ID. Fails if a page with the given title already exists; for existing pages, use update-page. The optional contentModel parameter selects a non-default content format (e.g. javascript, css); when omitted, MediaWiki picks the default for the title's namespace. For building up a large page across multiple calls, pair create-page with chained update-page(mode='append') calls, each adding a chunk.

ParametersJSON Schema
NameRequiredDescriptionDefault
botNoMarks the edit as a bot edit, which Special:RecentChanges hides by default. Takes effect only when the authenticated account has the `bot` right (granted by the bot group, or by the high-volume grant on a bot password or OAuth consumer); without it the edit saves unflagged and the response reports botMarked: false. Use when performing bulk or automated edit runs, or when the user requests it.
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
sourceYesPage content in the format specified by the contentModel parameter
commentNoReason for creating the page
contentModelNoContent model of the new page. If omitted, MediaWiki picks the default for the title's namespace.

TDQS

A4.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description reveals failure on duplicate and optional contentModel, but contradicts the idempotentHint annotation (true) by stating it fails if page exists. This is a significant inconsistency that reduces 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?

Three concise, well-structured sentences that front-load the core action and return values, with no unnecessary fluff.

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?

Covers purpose, failure conditions, contentModel usage, and chunking strategy. Missing explicit return format structure (but partially described). Good given no output schema, though the annotation contradiction detracts.

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?

Schema covers all 6 parameters with descriptions (100% coverage). Description adds context by explaining contentModel selects non-default formats and suggests pairing with update-page, going slightly beyond 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?

The description clearly states the tool creates a new wiki page and returns specific fields. It distinguishes from update-page for existing pages, providing a specific verb and 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 states when to use (new page) and when not (existing page: use update-page). Also provides guidance on contentModel and pairing with update-page for chunking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-pageA
DestructiveIdempotent

Removes a wiki page from public view and returns the deleted title. This is a soft delete: the page and its revision history remain in the database and can be restored with undelete-page until an administrator purges them. Fails if the page does not exist or the authenticated user lacks the delete permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
commentNoReason for deleting the page

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint, idempotentHint, readOnlyHint), description adds soft delete behavior, retention of history, restoration via undelete-page, and admin purge. It also notes permission requirements and failure conditions.

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 primary action, and every sentence adds value. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given good schema and annotations, description covers soft delete, restoration, failure conditions, and return value. No output schema is needed since the return is simply stated.

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 baseline is 3. Description does not add additional meaning beyond the schema; it only mentions returning the deleted title, which is output behavior.

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?

Clearly states the tool removes a wiki page from public view and returns the deleted title. The verb 'Removes' and resource 'wiki page' are explicit. The description distinguishes from sibling 'undelete-page' by mentioning restoration capability.

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?

Provides clear context that it's a soft delete and indicates failure conditions (page not exist, lacking permission). However, it does not explicitly mention when to use alternatives, such as for deletion vs. moving or updating.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-category-membersA
Read-onlyIdempotent

Lists members of a category, returning each member's page ID, namespace ID, and wiki page title. Optionally filter by member type (page, file, subcat) or by namespace ID — filters apply server-side before the cap. Returns up to 500 members per call; paginate with continueFrom (opaque cursor echoed from the previous response). A member's type is omitted when it is an ordinary page (present only for files and subcategories).

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
limitNoMaximum members to return (1..500)
typesNoTypes of members to include
categoryYesCategory name (with or without the "Category:" prefix)
namespacesNoNamespace IDs to filter by
continueFromNoOpaque continuation token from the previous response; omit on first call

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds value beyond annotations by noting the 500-member cap, pagination with continueFrom, and that member type is omitted for ordinary pages. Annotations already indicate read-only/idempotent.

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?

The description is moderately sized and front-loaded with the main purpose. It packs filtering and pagination info efficiently, though could be slightly more concise.

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, the description adequately covers returned fields, behavior (type omission), filtering, and pagination. Lacks error details, but not a major gap for this tool.

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?

Schema coverage is 100%, so baseline is 3. Description clarifies the types enum (page, file, subcat) and explains the opaque cursor and category prefix handling, adding modest value.

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 it lists members of a category, specifying returned fields (page ID, namespace ID, wiki page title). It distinguishes from sibling tools like get-page, search-page, etc., which operate on pages or search, not category membership.

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?

Provides guidance on optional filters (by member type or namespace ID) and pagination with continueFrom. Does not explicitly mention when not to use or compare to alternatives, but the context of siblings makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-fileA
Read-onlyIdempotent

Returns metadata for a file (uploader, timestamp, size, MIME type) along with download URLs for the thumbnail, preview, and original. The File: prefix is added automatically if omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. Description adds behavioral detail: automatic 'File:' prefix addition. No contradictions. Does not cover rate limits or error behavior, but reasonable given 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 primary functionality. Second sentence adds a useful caveat. 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?

With two parameters, rich annotations, and no output schema, the description adequately covers functionality. It could mention error handling for missing files, but overall sufficient for selection and invocation.

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?

Schema coverage is 100% with descriptions. Description adds extra context: auto-prefix for title parameter and clarification of wiki parameter as a key from mcp://wikis/ resources. This adds value 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?

Description clearly states it returns metadata and download URLs for a file. Specifies the resource (file) and verb (returns). Distinguishes from sibling get-file-data by including download URLs and auto-prefix behavior.

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?

Provides clear context on what the tool does but no explicit guidance on when to use it over alternatives, such as get-file-data. No when-not-to-use or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-file-dataA
Read-onlyIdempotent

Fetches a wiki file server-side and returns the image inline as a content block, for clients that cannot reach the wiki host (sandboxed or network-restricted) and need the image sent to the model for visual analysis. Returns a scaled rendition sized by width. Files MediaWiki can rasterize (images, SVG, PDF, DjVu) come back as an image; other types (audio, video, arbitrary binaries) error — for those, and for metadata or a download URL, use get-file.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)
widthNoPixel width of the scaled rendition. A quality/detail knob: in image mode the model caps image tokens regardless of size, so larger mainly means more detail. Defaults to 1024 (512 when format is "text"); values above 1568 are clamped.
formatNo'image' returns a native image content block the model can view; 'text' returns the base64 as a text block, for hosts that do not forward image content to the model (base64 text costs far more tokens).image

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, non-destructive. The description adds key behavioral details: returns scaled rendition based on width, errors for non-rasterizable file types, clamp on width above 1568, and format option affecting token cost. No contradictions with 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?

The description is concise but comprehensive, front-loading the core purpose, then detailing behavior and alternatives. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema), the description covers purpose, use cases, return format (inline content block), error conditions, and alternatives. No gaps identified.

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?

Schema coverage is 100% with descriptions for all 4 parameters. The description adds extra context for width (quality knob, defaults, clamping) and format (image vs text, token implications), providing value 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?

The description clearly states the tool fetches a wiki file server-side and returns the image inline as a content block, specifically for sandboxed clients needing visual analysis. It also distinguishes from the sibling get-file by noting it errors for non-rasterizable files and directing users to get-file for those cases.

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?

The description explicitly explains when to use this tool (for image delivery to model when client cannot reach wiki host) and when not to (for audio, video, binaries, metadata, or download URL), providing the alternative tool get-file.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-pageA
Read-onlyIdempotent

Returns a single wiki page (wikitext source, rendered HTML, or metadata only). If the title does not exist, an error is returned. Use metadata=true to retrieve the revision ID (for edit-conflict detection), page size, and section outline. Set content="none" to fetch only metadata. Large content is truncated at 50000 bytes by default with a trailing marker listing available sections; a follow-up call with section=N fetches a specific section. For more than one page at a time, use get-pages. For a specific historical revision, use get-revision.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
contentNoType of content to returnsource
sectionNoSection number (0 = lead; 1..N = heading sections). Narrows content to one section.
metadataNoWhether to include metadata (page ID, revision info, size, section outline) in the response

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint), the description details truncation at 50000 bytes with a trailing marker, the need for a follow-up call with section=N, error behavior for non-existent titles, and the metadata fields (revision ID, page size, section outline). This adds significant 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?

The description is a single, well-structured paragraph. It front-loads the core purpose and uses concise sentences to add critical details without redundancy. 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 read-only tool with 5 parameters and no output schema, the description covers purpose, alternatives, truncation, and parameter use. It omits details about the output structure, but the context is largely sufficient for an agent to invoke the tool correctly.

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?

Although schema coverage is 100%, the description enriches the meaning of metadata and content parameters by explaining their real-world use (e.g., edit-conflict detection, section retrieval after truncation). It adds value beyond the schema definitions.

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 returns a wiki page with options for wikitext, HTML, or metadata. It explicitly distinguishes from siblings like get-pages and get-revision, making the purpose unambiguous.

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 provides explicit alternatives for multiple pages (get-pages) and historical revisions (get-revision), and explains when to use metadata and section parameters. However, it does not mention scenarios where this tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-page-historyA
Read-onlyIdempotent

Returns revision metadata (revision ID, timestamp, user, comment, size, minor flag) for a wiki page, in segments of 20 revisions, newest first. Paginate with olderThan or newerThan (mutually exclusive). If the title does not exist, an error is returned. Boolean flags appear only when true.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
filterNoChange tag — return only revisions carrying this tag
newerThanNoRevision ID — return revisions newer than this (exclusive). Mutually exclusive with olderThan.
olderThanNoRevision ID — return revisions older than this (exclusive). Mutually exclusive with newerThan.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive. Description adds pagination details, return format (segments of 20, boolean flags only when true), and error on missing title. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that front-load purpose and key behavior (pagination, error). Every sentence adds value. No extraneous 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?

Given 5 parameters and no output schema, description covers return fields, pagination behavior, and error case. Does not mention rate limits or authentication, but those may be implied by API context. Adequate for agent use.

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 description adds minimal value beyond schema. Mentions mutual exclusivity of newerThan/olderThan, which is already in schema descriptions. Does not elaborate on parameter format or constraints.

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?

Clearly states it returns revision metadata (revision ID, timestamp, user, comment, size, minor flag) for a wiki page. Distinguishes from sibling tools like get-revision (single revision) and get-page (page content) by specifying it returns multiple revisions in segments of 20, newest first.

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 describes pagination with olderThan/newerThan parameters and mutual exclusivity. Mentions error behavior when title does not exist. Does not explicitly mention alternatives like get-revision for single revision, but the pagination description guides usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-pagesA
Read-onlyIdempotent

Returns multiple wiki pages in one call (wikitext source or metadata only). Suited to reading a cluster of related pages, diffing a page family, or syncing pages to local storage. Accepts up to 50 titles; missing pages are reported inline (not as errors). Each page's content is truncated at 50000 bytes by default with a trailing marker listing available sections; get-page with section=N fetches a specific section. For a single page or HTML output, use get-page. requestedTitle is included only when it differs from the resolved title.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titlesYesArray of wiki page titles (1..50)
contentNoType of content to return; "none" returns metadata onlysource
metadataNoWhether to include metadata (page ID, revision info) in the response
followRedirectsNoFollow wiki redirects. When true (default), redirect targets are returned with a "Redirected from:" line in the metadata. Set false to fetch redirect pseudo-pages as-is (sync-fidelity).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds behavioral context: truncation at 50000 bytes, trailing marker with sections, missing pages reported inline, requestedTitle behavior. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with main purpose and use cases, then details on limits and alternatives. Every sentence adds information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all necessary behavioral details despite no output schema: limits, error handling, alternatives. Complete for a read-only batch retrieval tool with good annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage. Description adds meaning beyond schema: explains that missing pages are reported inline, truncation behavior, requestedTitle condition. Adds value to parameter understanding.

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 it returns multiple wiki pages (wikitext or metadata), distinguishes from get-page (single page, HTML output), and specifies use cases like batch reading, diffing, and syncing.

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 states when to use: 'Suited to reading a cluster of related pages, diffing a page family, or syncing pages to local storage.' Also specifies alternative: 'For a single page or HTML output, use get-page.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-recent-changesA
Read-onlyIdempotent

Returns recent change events, newest first, in segments of 50. Defaults to edits and page creations; set types to include log actions, categorizations, or external changes. Each row includes title, timestamp, user, revision IDs, size change, flags (minor/bot/new/anon), tags, and change type. Filter by timestamp window, namespaces, user, change tag, or hide flags (hideBots/hideMinor/hideAnon/hideRedirects/hidePatrolled). Pass showPatrolStatus to include per-row patrol state (requires patrol rights). Paginate with the continue token from the truncation marker. For a single page's revision history, use get-page-history. Boolean flags appear only when true; rows report the size delta, not raw old/new lengths.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoChange tag — return only changes carrying this tag
userNoUsername — return only changes by this user. Mutually exclusive with excludeUser.
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
sinceNoISO 8601 timestamp — only return changes at or after this time
typesNoEvent types to include. Defaults to edit and new (content changes only).
untilNoISO 8601 timestamp — only return changes at or before this time
continueNoContinuation token from a prior call's truncation marker
hideAnonNoOmit edits by anonymous users
hideBotsNoOmit bot-flagged edits
hideMinorNoOmit minor-flagged edits
namespaceNoNamespace IDs to restrict the feed to — e.g. [0, 1] for main and talk
excludeUserNoUsername — exclude changes by this user. Mutually exclusive with user.
hidePatrolledNoOmit patrolled edits. Requires patrol rights.
hideRedirectsNoOmit changes whose target is a redirect
showPatrolStatusNoInclude per-row patrol status; adds an "Unpatrolled: yes" line to unpatrolled rows. Requires patrol rights.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds transparency by explaining pagination, filtering, boolean flag behavior, and patrol rights requirements, going beyond annotation-only information.

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 description is a single paragraph that is clear but could be more structured. It is front-loaded with the main purpose, but the length and density may reduce readability.

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, the description explains row contents, filtering, pagination, and rights requirements. It is complete for the tool's complexity and provides necessary context for effective use.

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?

With 100% schema coverage, baseline is 3. The description adds meaning by explaining defaults for types, boolean flag behavior (appear only when true), mutual exclusivity of user/excludeUser, and the effect of showPatrolStatus.

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 returns recent change events, newest first, in segments of 50. It specifies what each row includes and distinguishes from the sibling tool get-page-history for single page revision history.

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 explains defaults, filtering options, and pagination. It explicitly directs users to get-page-history for single page history, providing clear context for when to use this tool vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-revisionA
Read-onlyIdempotent

Returns a specific historical revision of a wiki page by revision ID (wikitext source, rendered HTML, or metadata only). If the revision ID does not exist, an error is returned. For the latest revision plus metadata, use get-page with metadata=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
contentNoType of content to returnsource
metadataNoWhether to include metadata (revision ID, page ID, page title, user ID, user name, timestamp, comment, size, minor, HTML URL) in the response
revisionIdYesRevision ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so no contradiction. The description adds value by specifying the returned content types (source, html, metadata only) and the error case when revision ID does not exist. It does not describe the full response structure, but the behavioral traits are adequately disclosed.

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?

The description is concise with three sentences, front-loading the main action and options. Every sentence adds value: purpose, error behavior, and alternative tool. No redundant or verbose content.

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 covers the main functionality (get revision, content types, error handling) and includes a pointer to an alternative for latest revisions. However, without an output schema, it does not fully describe the return format (e.g., what fields are present for each content type). It mentions metadata fields but not the full response structure, leaving some 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 baseline is 3. The description does not add parameter-specific details beyond what the schema already provides. It mentions revision ID and content type but does not elaborate on the meaning or constraints of the parameters.

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 explicitly states it returns a specific historical revision of a wiki page by revision ID, and clarifies it can return wikitext source, rendered HTML, or metadata only. It also distinguishes from the sibling tool get-page by noting that get-page with metadata=true is for the latest revision plus metadata, making the purpose unique and clear.

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?

The description provides clear when-to-use guidance: for retrieving a specific historical revision by ID. It explicitly gives an alternative: 'For the latest revision plus metadata, use get-page with metadata=true.' This helps the agent choose the correct tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-site-infoA
Read-onlyIdempotent

Returns key facts about the targeted wiki from its MediaWiki siteinfo: general settings (sitename, MediaWiki version, content language, page-title case-sensitivity, live read-only state, and maxarticlesize in bytes), the namespace map with localized names and aliases, the list of installed extension names, and the content license. Set includeStatistics to also return page, article, edit, image, user, active-user, and admin counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
includeStatisticsNoAlso return live wiki statistics (page, article, edit, image, user, active-user, and admin counts). Defaults to false.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to restate safety. It adds that includeStatistics toggles additional data, but does not disclose any other behavioral traits like potential response size or error conditions for missing wikis. With good annotation coverage, the description is adequate but not exceptional.

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?

The description is a single paragraph that is front-loaded with the main purpose ('Returns key facts about the targeted wiki'). It lists the returned categories concisely and provides a clear action for the boolean parameter. Every sentence earns its place with no redundancy or fluff.

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 the tool complexity (simple read-only info retrieval), the description covers what is returned, including the effect of the optional parameter. No output schema is present, but the list of returned items is sufficiently detailed. It might benefit from noting that the response could be large if many extensions are installed, but overall it is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the schema (100% coverage). The description adds specific examples of what includeStatistics returns (page, article, edit counts, etc.), which provides extra context. However, it does not explain the wiki parameter beyond what the schema says, so overall the description adds marginal value over 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?

The description clearly states that the tool returns key facts about a wiki, listing specific categories: general settings, namespace map, extensions, license. It also mentions the optional includeStatistics parameter to get counts. This distinguishes it from sibling tools like get-page or get-pages, which focus on page content rather than site metadata.

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 explains when to set includeStatistics, but does not explicitly state when to use this tool versus alternatives like get-page or list-wikis. The usage context is implied (for wiki metadata), but lack of explicit guidance on when not to use it or what distinguishes it from similar read tools reduces clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-wikisA
Read-onlyIdempotent

Lists every configured wiki: its key (pass as the wiki argument to other tools), sitename, server URL, whether it is read-only or the default, whether it is currently reachable, and which extension-gated tools (cargo-, smw-, bucket-query) work on it. Use to discover the configured wikis, their keys, and which extension tools each supports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnlyHint, idempotentHint, and non-destructive. The description adds behavioral context by stating what information is returned (reachability, extension-gated tool support), which goes beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and every sentence adds value. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description completely explains the output fields and usage purpose. No output schema is provided, but the description explicitly lists the returned fields, which is sufficient.

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?

The input schema has no parameters, so schema description coverage is trivially 100%. The description does not add parameter semantics, but none are needed. Baseline 3 applies as per high coverage rule.

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 every configured wiki with specific details like key, sitename, server URL, read-only status, default status, reachability, and extension-gated tool support. It distinguishes itself from sibling tools by being the only list/discovery tool, while siblings like add-wiki or remove-wiki perform mutations.

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 explicitly says 'Use to discover the configured wikis, their keys, and which extension tools each supports.' This provides clear usage context. It does not explicitly mention when not to use it, but the purpose is straightforward and well-defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move-pageA
DestructiveIdempotent

Renames a wiki page, moving it — and by default its talk page — to a new title, and returns the old and new titles plus whether a redirect was left behind. By default leaves a redirect at the old title; set leaveRedirect=false to suppress it (requires the suppressredirect right, otherwise the redirect is left regardless). Fails if the source page does not exist, if the target title already exists (unless it is a redirect and ignoreWarnings is set), or if the authenticated user lacks the move permission. Moving a File page additionally requires the file-move permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
commentNoReason for the move
toTitleYesNew title to move the page to
moveTalkNoAlso move the associated talk page
fromTitleYesCurrent title of the wiki page to move
moveSubpagesNoAlso move subpages, where the namespace allows subpages
leaveRedirectNoLeave a redirect at the old title. Suppressing it requires the suppressredirect right; without that right MediaWiki leaves the redirect regardless.
ignoreWarningsNoProceed past move warnings, e.g. when the target is an existing redirect. Moving over a non-redirect page still fails.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint, readOnlyHint), the description discloses return values, default redirect creation with a right requirement for suppression, and additional permissions for File pages. It provides rich behavioral context without contradicting 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?

The description is a single, well-structured paragraph. The first sentence summarizes the core action and return values, followed by details on redirect behavior, failure conditions, and permissions. Every sentence adds necessary information without 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?

Given the complexity (8 parameters, no output schema), the description covers key failure modes, return values, and permission constraints. It could explicitly state the response structure, but it adequately supports tool invocation.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the implications of 'leaveRedirect' (suppressredirect right) and 'ignoreWarnings' (target redirects), and mentions the file-move permission for File pages, which is not in 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?

The description clearly states the tool's action ('Renames a wiki page, moving it') and distinguishes it from other page manipulation tools like create-page, update-page, and delete-page. It specifies the resource (wiki page) and the default handling of talk 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 explains when the tool fails (source not found, target exists, permission issues) and details the redirect behavior with permission requirements. It does not explicitly compare against sibling tools, but the purpose is distinct enough for an agent to decide when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oauth-logoutA
DestructiveIdempotent

Removes stored OAuth tokens. With no argument, removes all stored tokens; with wiki, removes only that wiki. Stdio only.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki key to log out from. Omit to log out from all wikis.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the 'Stdio only' constraint beyond annotations. Annotations already mark destructiveHint=true, and description aligns. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences covering purpose, argument behavior, and transport restriction. No extraneous text.

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 logout tool with one optional parameter, the description adequately covers behavior and constraints. No output schema is needed for this action.

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 parameter description is clear. The tool description echoes the schema content without adding new semantic depth, meeting the baseline.

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 'Removes stored OAuth tokens.' It specifies behavior with and without the `wiki` argument, clearly distinguishing the two modes.

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 mentions 'Stdio only', which is a critical usage constraint. It also explains when to use the optional parameter, though it doesn't compare to sibling tools like `oauth-status`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oauth-statusA
Read-onlyIdempotent

Lists wikis with stored OAuth tokens, their scopes, and expiry. Stdio only. Never returns token values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses critical behavior beyond annotations: 'Never returns token values' and specifies return content (wikis, scopes, expiry). Annotations already indicate read-only, idempotent, non-destructive; description adds key detail about secrecy.

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-load purpose and key traits. No wasted words; every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description sufficiently covers purpose, return format, and a behavioral constraint (token secrecy). No gaps for expected agent usage.

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?

No parameters exist, so baseline 4 applies. Description does not need to add parameter meaning.

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?

Description uses specific verb 'Lists' and identifies resource 'wikis with stored OAuth tokens, their scopes, and expiry'. It distinguishes from sibling 'oauth-logout' by focusing on status rather than logout action.

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?

Provides a transport constraint ('Stdio only') but does not explicitly state when to use this tool versus alternatives like oauth-logout. Implicit context from sibling names helps but could be more directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse-wikitextA
Read-onlyIdempotent

Renders wikitext through the live wiki without saving. Returns HTML, parse warnings, categories, wikilinks, templates, external URLs, and display title. Suited to dry-running a planned edit before create-page or update-page, or previewing standalone wikitext (template combinations, sanitizer checks) with no target page. HTML output is truncated at 50000 bytes by default with a trailing marker; a smaller wikitext fragment in a follow-up call returns the rest.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleNoWiki page title providing context for magic words like {{PAGENAME}}. Defaults to "API".
wikitextYesWikitext to render
applyPreSaveTransformNoApply pre-save transform (expand ~~~~ signatures, {{subst:}}, normalize whitespace). Matches editor "Show preview" behavior.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, destructiveHint=false. The description adds critical behavioral details: HTML truncation at 50000 bytes with a trailing marker and how to retrieve the rest via smaller fragment, enhancing transparency beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, followed by key behavioral details. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description enumerates return values (HTML, warnings, categories, etc.) and addresses truncation. For a tool with 4 parameters and no output schema, this is a complete and helpful description.

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?

Schema covers all 4 parameters (100% coverage). Description adds context: default value for title ('API'), and that applyPreSaveTransform matches editor 'Show preview' behavior. This adds meaningful nuance 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?

The description clearly states the tool renders wikitext without saving, and distinguishes it from sibling tools like create-page and update-page by positioning it as a dry-run mechanism.

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 provides use cases: dry-running edits before create/update, and previewing standalone wikitext. Implicitly excludes when you want to save, but lacks an explicit 'when not to use' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove-wikiA
DestructiveIdempotent

Removes a wiki from the MCP resources. Clears any cached credentials and license metadata for the wiki. Fails if the specified wiki is the configured default wiki.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesMCP resource URI of the wiki to remove (e.g. mcp://wikis/en.wikipedia.org)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. The description adds valuable context: clearing cached credentials and license metadata, and failure on default wiki. This expands on what annotations provide.

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 sentences, each providing essential information (main action, side effects, failure condition). No redundancy or filler.

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 tool with one parameter and no output schema, the description covers purpose, behavioral side effects, and a key constraint. It is mostly complete, though it does not describe the return value or success 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 coverage is 100% for the single parameter 'uri'. The description does not add new meaning beyond the schema's description of the URI format. 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?

The description uses a specific verb 'removes' and clearly identifies the resource 'wiki from the MCP resources'. It adds unique behaviors like clearing cached credentials and license metadata, and specifies a failure condition for the default wiki, distinguishing it from sibling tools such as 'add-wiki'.

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 implicitly states when to use (when removing a wiki) and provides a precondition (fails if default wiki). However, it lacks explicit guidance on when not to use or comparisons to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-pageA
Read-onlyIdempotent

Searches wiki page titles and page content (full-text) for the provided terms. Returns matching pages with a snippet, size, and timestamp. Accepts up to 100 matches per call (default 10); additional matches beyond the cap are flagged in the response — narrow the query to surface more. For title-prefix lookup (e.g. autocomplete), use search-page-by-prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
limitNoMaximum number of search results to return
queryYesSearch terms

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnly, openWorld, idempotent hints, and non-destructive. Description adds behavior beyond annotations: accepts up to 100 matches (default 10), flags additional matches in response, and suggests narrowing queries. No contradiction.

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 with zero waste. First sentence states purpose and return fields. Second sentence adds usage nuance (cap, default, flag, suggestion). Front-loaded with key 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?

No output schema, but description enumerates return fields (snippet, size, timestamp) and behavioral details (cap, flag). Parameter coverage is complete. Sufficient for an agent to understand usage, though could mention pagination or response structure more explicitly.

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?

Schema coverage is 100%, so baseline 3. Description adds value by specifying the limit default (10), the maximum cap (100), and explaining that extra matches are flagged and query narrowing is needed—details beyond the schema's simple min/max constraints.

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 searches wiki page titles and content (full-text) and returns matching pages with snippet, size, timestamp. It distinguishes from the sibling tool 'search-page-by-prefix' by explicitly mentioning its full-text scope versus title prefix lookup.

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 advises when to use this tool (full-text search) and when to use the alternative (title-prefix lookup via search-page-by-prefix). It also mentions the match cap and strategy to narrow queries for more results. Lacks explicit 'when not to use' but provides sufficient 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
Read-onlyIdempotent

Returns wiki page titles beginning with a given prefix (suited to autocomplete and title lookup). Only titles are returned — no snippets, sizes, or IDs. Accepts up to 500 titles per call (default 10); additional matches beyond the cap are flagged in the response. For full-text content search, use search-page.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
limitNoMaximum number of results to return
prefixYesWiki page title prefix
namespaceNoNamespace ID to restrict the search to

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by specifying that only titles are returned (no snippets/IDs), the limit cap of 500, and that excess matches are flagged. Does not contradict 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?

Three concise sentences: purpose, limit detail, alternative tool. No superfluous words, front-loaded with key 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?

With no output schema, the description hints at the response (flags for excess matches) but doesn't fully detail the return format. However, given the simplicity of the tool (returning titles), it is reasonably complete along with annotations.

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?

Schema coverage is 100% (baseline 3). The description adds the default limit value (10) and indicates that wiki can be given as a key or full URI, providing extra context 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?

The description clearly states it returns wiki page titles by prefix, distinguishes from full-text search (search-page) by specifying only titles are returned, and notes it's suited for autocomplete. This effectively differentiates it from sibling tools like get-page and search-page.

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 directs to search-page for full-text content, implies autocomplete use case. Could mention when to use get-page for exact titles, but current guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undelete-pageA
Idempotent

Restores a previously deleted wiki page, including its full revision history, and returns the restored title. The page must currently be in a deleted state (from delete-page); fails if no deleted revisions exist for the title or the authenticated user lacks the undelete permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
commentNoReason for undeleting the page

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotentHint=true and destructiveHint=false. The description adds context about full revision history restoration and failure conditions, disclosing behavior beyond annotations without contradiction.

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 concise sentences with no wasted words, front-loading the main action and immediately providing key constraints.

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 tool with 3 parameters and no output schema, the description covers purpose, prerequisites, failure modes, and return value. Could mention output structure, but overall 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 baseline is 3. The description does not add additional parameter details beyond what the schema provides, offering no extra semantic value.

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 uses specific verb 'restores' and identifies the resource as a 'previously deleted wiki page', clearly distinguishing it from siblings like delete-page, create-page, and update-page.

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 states prerequisite (page must be in deleted state from delete-page) and failure conditions (no deleted revisions or insufficient permissions). Does not mention alternatives, but context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-fileA
Destructive

Uploads a new revision of an existing file from the local disk, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. The operator restricts which directories are readable; filepath must be an absolute path inside a configured upload directory, or the call fails before contacting the wiki. Fails if no file exists at the target title; for the initial upload, use upload-file. To upload a new revision from a remote web address instead of a local path, use update-file-from-url.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)
commentNoReason for uploading the new revision
filepathYesFile path on the local disk

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it replaces file content (destructive), preserves prior revisions, appears in upload log, and fails if file doesn't exist. This adds valuable behavioral context beyond the annotations (readOnlyHint=false, destructiveHint=true) without contradiction.

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 well-structured paragraphs front-load the core action and return values, then add context, restrictions, and alternatives. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description covers purpose, usage, parameters, behavioral traits, error conditions, and sibling distinctions comprehensively. It is complete for a file revision update tool.

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?

Schema covers all 4 parameters with descriptions (100% coverage), but the description adds important operational detail about filepath: it must be an absolute path inside a configured upload directory. This supplements schema information meaningfully.

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 it uploads a new revision of an existing file, preserving history, and returns file title and URL. It distinguishes from sibling tools like upload-file (initial upload) and update-file-from-url (remote URL), making the purpose unambiguous.

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 provides when to use (updating existing file revision) and when not (initial upload use upload-file, for description page use update-page, for remote URL use update-file-from-url). Also details restrictions on filepath, offering clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-file-from-urlA
Destructive

Fetches a file from a remote web URL and uploads it as a new revision of an existing file, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. Works whether or not the wiki has upload-by-URL enabled: the server retrieves the file and uploads it directly, falling back to wiki-side fetching only when it cannot reach the URL itself. Fails if no file exists at the target title; for the initial upload, use upload-file-from-url.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the file to upload
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)
commentNoReason for uploading the new revision

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and not read-only. The description adds that prior revisions are preserved, the upload appears in the upload log, and it only replaces bytes. It also describes the fallback mechanism and failure condition when the file does not exist.

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?

The description is concise with four sentences, front-loading the core action. Every sentence adds value, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description mentions the return (file title and URL). It covers behavior, failure conditions, and alternatives. Complete for a tool with moderate complexity.

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?

Schema coverage is 100%, so baseline is 3. The description adds context for the 'title' parameter by stating it fails if no file exists, and implies the 'url' parameter is the source. However, it does not add significant new meaning beyond the schema descriptions.

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 that the tool fetches a file from a URL and uploads it as a new revision of an existing file, preserving history. It distinguishes from sibling tools by specifying it is for updating an existing file (not initial upload) and only replaces file content, not the description page.

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?

The description explicitly tells when to use (updating an existing file from URL) and when not to (initial upload use upload-file-from-url, editing description page use update-page). It also explains the fallback behavior for wiki-side fetching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-pageA
DestructiveIdempotent

Replaces the existing content of a wiki page and returns the new revision ID. Fails if the page does not exist; for new pages, use create-page. Pass latestId (obtained from get-page with metadata=true) to enable edit-conflict detection: if the page has been edited since that revision, the update is rejected rather than silently clobbering concurrent changes. For large pages, three modifiers avoid shipping the full source: section=N edits one section (pairs with get-page section=N for reads), section='new' adds a new heading section, and mode='append' or 'prepend' sends a delta. Each call is a separate revision; for chains of mode='append' calls, re-fetching latestId between calls confirms the previous chunk landed before the next.

ParametersJSON Schema
NameRequiredDescriptionDefault
botNoMarks the edit as a bot edit, which Special:RecentChanges hides by default. Takes effect only when the authenticated account has the `bot` right (granted by the bot group, or by the high-volume grant on a bot password or OAuth consumer); without it the edit saves unflagged and the response reports botMarked: false. Use when performing bulk or automated edit runs, or when the user requests it.
modeNoAdds source to the existing content instead of replacing it: 'append' to the end, 'prepend' to the start.
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesWiki page title
sourceYesThe content to write, in the existing page's content model. Interpreted as the full page by default; as the given section's content when section is set; or as a delta (appended or prepended) when mode is set.
commentNoSummary of the edit
sectionNoSection to edit: 0 (lead), 1..N (existing heading sections), or 'new' to append a new heading section.
latestIdNoBase revision ID for edit-conflict detection; obtain from get-page with metadata=true. If omitted, the update is applied without conflict detection.
sectionTitleNoHeading for a new section; required when section='new', rejected otherwise.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important behaviors beyond annotations: failure on non-existent page, conflict detection with latestId, each call creates a new revision, and chaining mode='append' requires re-fetching latestId. Bot flag behavior is also detailed. No contradiction with annotations.

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?

The description is a dense single paragraph but front-loads the main purpose. It is relatively concise given the detail, though could benefit from minor structuring. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description mentions return value (new revision ID). It covers failure conditions, conflict detection, and all parameter use cases. For a tool with 9 parameters and 2 required, it is fully complete.

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?

Schema coverage is 100%, so baseline is 3. The description adds valuable context: latestId origin, section numbering/indexing, mode direction. This enhances understanding without being necessary, pushing score to 4.

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 replaces existing page content and returns the new revision ID. It distinguishes from create-page for new pages, and mentions modifiers like section and mode. The verb 'replaces' and resource 'content of a wiki page' are specific.

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 instructs to use create-page for new pages, explains edit-conflict detection with latestId, and provides guidance on when to use section and mode. It also describes when not to use (page must exist). Alternatives like create-page are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload-fileA
Idempotent

Uploads a file from the local disk into the wiki's File namespace and returns the resulting file title and URL. The upload appears in the wiki's upload log. The operator restricts which directories are readable; filepath must be an absolute path inside a configured upload directory, or the call fails before contacting the wiki. Fails if a file with the target title already exists (the wiki does not silently overwrite existing files). To upload directly from a remote web address instead of a local path, use upload-file-from-url. To replace an existing file with a new revision, use update-file.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesWikitext on the file page
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)
commentNoReason for uploading the file
filepathYesFile path on the local disk

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While description discloses upload log entry and failure conditions, it contradicts the annotation 'idempotentHint=true' because uploading a file that already exists fails, making it non-idempotent. This reduces 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?

Description is concise with no extraneous words. First sentence states purpose and return, then restrictions, then alternatives. Optimal length.

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?

Covers return values, failure conditions, and alternatives. Missing details on default wiki and comment parameter behavior, but overall adequate. Annotation contradiction detracts.

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 covers all 5 parameters, so baseline is 3. Description adds minor value: clarifies filepath must be absolute and title accepts 'File:' prefix or not, but mostly restates 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?

The description clearly states the verb 'uploads', specifies the resource 'file from local disk into wiki's File namespace', and distinguishes from siblings like 'upload-file-from-url' and 'update-file'. It also mentions returns file title and URL.

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 tells when to use (upload local file) and provides alternatives for remote upload or replacement. Also describes restrictions: filepath must be absolute in configured dir, fails if title exists.

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
Idempotent

Fetches a file from a remote web URL and uploads it into the wiki's File namespace, returning the resulting file title and URL. The upload appears in the wiki's upload log. Works whether or not the wiki has upload-by-URL enabled: the server retrieves the file and uploads it directly, falling back to wiki-side fetching only when it cannot reach the URL itself. Fails if a file with the target title already exists. To replace an existing file with a new revision, use update-file-from-url.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the file to upload
textYesWikitext on the file page
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
titleYesFile title (with or without the "File:" prefix)
commentNoReason for uploading the file

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent, non-destructive, non-read-only behavior. The description adds value by disclosing the fallback mechanism, logging appearance, and failure condition on existing titles, providing rich behavioral context beyond the 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?

The description is concise with four sentences, each serving a specific purpose: main action, logging, behavior detail, and alternative guidance. Information is front-loaded and no words are wasted.

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, the description mentions the return value (file title and URL). It covers failure mode, fallback behavior, and provides an alternative tool. It could mention authentication or rate limits but is largely complete for an AI to use.

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% with all parameters described in the schema. The description does not add additional semantics or usage details for individual parameters, so it meets the baseline but does not exceed it.

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 fetches a file from a remote URL and uploads it to the wiki's File namespace, returning the title and URL. It distinguishes itself from the sibling tool 'update-file-from-url' by noting the failure condition for existing files and pointing to the alternative for replacement.

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?

The description explicitly tells when to use this tool (new uploads) and when not to (if file already exists, use update-file-from-url). It also clarifies it works regardless of wiki upload-by-URL settings, providing clear context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiA
Read-onlyIdempotent

Returns the identity the current session is authenticated as on the targeted wiki: the username, whether the session is anonymous (no user is logged in), and the user groups it belongs to. Set includeRights to also return the full list of user rights. Use to confirm who edits and uploads will be attributed to before writing — for example, to resolve your own username before building a title under your own user namespace (User:/…). Reports anonymous access rather than failing when the session has no credentials. For which wikis have stored OAuth tokens and their scopes, use oauth-status instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiNoWiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.
includeRightsNoAlso return the full list of user rights granted on this wiki (a long list). Defaults to false.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds valuable detail: 'Reports anonymous access rather than failing when the session has no credentials', which is beyond annotations.

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?

Five sentences, front-loaded with purpose. Each sentence adds value. Could be slightly more concise but well-structured overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters, full schema coverage, no output schema, description covers return values and anonymous behavior. Complete for a simple read-only identity tool.

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 baseline is 3. Description restates parameter purposes but adds no significant new meaning beyond schema descriptions.

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?

Description clearly states tool returns identity (username, anonymous status, groups). Verb 'returns' and resource clearly defined. Distinguishes from sibling tools like oauth-status.

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 states when to use: confirm attribution before writing, resolve username. Provides alternative for OAuth scopes: 'use oauth-status instead'. Includes guidance on optional parameter.

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. Dates show when Glama detected each change.

  1. 29 tool updatesv0.15.0
    • Changedadd-wiki1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare-pages1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddelete-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Addedget-category-members
    • Changedget-file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-file-data1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-links-here1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-page-history1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-pages1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-recent-changes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-revision1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget-site-info1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist-wikis1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmove-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoauth-logout1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoauth-status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedparse-wikitext1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedremove-wiki1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch-page-by-prefix1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedundelete-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate-file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate-file-from-url1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate-page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupload-file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupload-file-from-url1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedwhoami1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 1 tool updatev0.14.0
    • Removedget-category-members
  3. 4 tool updatesv0.12.0
    • Changedcreate-page1 field changed
      • addedInput schema / properties / bot
        Added value: +{
        +  "description": "Marks the edit as a bot edit, which Special:RecentChanges hides by default. Takes effect only when the authenticated account has the `bot` right (granted by the bot group, or by the high-volume grant on a bot password or OAuth consumer); without it the edit saves unflagged and the response reports botMarked: false. Use when performing bulk or automated edit runs, or when the user requests it.",
        +  "type": "boolean"
        +}
    • Addedget-file-data
    • Changedupdate-page1 field changed
      • addedInput schema / properties / bot
        Added value: +{
        +  "description": "Marks the edit as a bot edit, which Special:RecentChanges hides by default. Takes effect only when the authenticated account has the `bot` right (granted by the bot group, or by the high-volume grant on a bot password or OAuth consumer); without it the edit saves unflagged and the response reports botMarked: false. Use when performing bulk or automated edit runs, or when the user requests it.",
        +  "type": "boolean"
        +}
    • Addedwhoami
  4. 24 tool updatesv0.10.0
    • Changedcompare-pages1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedcreate-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changeddelete-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-category-members1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-file1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Addedget-links-here
    • Changedget-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-page-history1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-pages1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-recent-changes1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedget-revision1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Addedget-site-info
    • Addedlist-wikis
    • Addedmove-page
    • Changedparse-wikitext1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedsearch-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedsearch-page-by-prefix1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Removedset-wiki
    • Changedundelete-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedupdate-file1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedupdate-file-from-url1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedupdate-page1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedupload-file1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
    • Changedupload-file-from-url1 field changed
      • addedInput schema / properties / wiki
        Added value: +{
        +  "description": "Wiki to target, as a key from the mcp://wikis/ resources (e.g. en.wikipedia.org), or the full mcp://wikis/ URI. Omit to use the default wiki.",
        +  "type": "string"
        +}
  5. 24 tool updatesv1.0.2
    • Addedadd-wiki
    • Addedcompare-pages
    • Addedcreate-page
    • Addeddelete-page
    • Addedget-category-members
    • Addedget-file
    • Addedget-page
    • Addedget-page-history
    • Addedget-pages
    • Addedget-recent-changes
    • Addedget-revision
    • Addedoauth-logout
    • Addedoauth-status
    • Addedparse-wikitext
    • Addedremove-wiki
    • Addedsearch-page
    • Addedsearch-page-by-prefix
    • Addedset-wiki
    • Addedundelete-page
    • Addedupdate-file
    • Addedupdate-file-from-url
    • Addedupdate-page
    • Addedupload-file
    • Addedupload-file-from-url
  6. 16 tool updatesv1.0.1
    • Removedadd-wiki
    • Removedcreate-page
    • Removeddelete-page
    • Removedget-category-members
    • Removedget-file
    • Removedget-page
    • Removedget-page-history
    • Removedget-revision
    • Removedremove-wiki
    • Removedsearch-page
    • Removedsearch-page-by-prefix
    • Removedset-wiki
    • Removedundelete-page
    • Removedupdate-page
    • Removedupload-file
    • Removedupload-file-from-url
  7. 16 tool updatesv1.0.0
    • Addedadd-wiki
    • Changedcreate-page3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / contentModel / default
        Added value: +"wikitext"
      • changedInput schema / properties / contentModel / description
        Previous value: -"Type of content on the page. Defaults to \"wikitext\""New value: +"Type of content on the page"
    • Addeddelete-page
    • Addedget-category-members
    • Changedget-file1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-page5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / content / default
        Previous value: -"noContent"New value: +"source"
      • changedInput schema / properties / content / description
        Previous value: -"Format of the page content to retrieve"New value: +"Type of content to return"
      • changedInput schema / properties / content / enum
        Previous value: -[
        -  "noContent",
        -  "withSource",
        -  "withHtml"
        -]New value: +[
        +  "source",
        +  "html",
        +  "none"
        +]
      • addedInput schema / properties / metadata
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include metadata (page ID, revision info, license) in the response",
        +  "type": "boolean"
        +}
    • Changedget-page-history9 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / newerThan / description
        Previous value: -"The ID of the newest revision to return"New value: +"Revision ID of the newest revision to return"
      • addedInput schema / properties / newerThan / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / newerThan / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / newerThan / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / olderThan / description
        Previous value: -"The ID of the oldest revision to return"New value: +"Revision ID of the oldest revision to return"
      • addedInput schema / properties / olderThan / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / olderThan / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / olderThan / type
        Previous value: -"number"New value: +"integer"
    • Addedget-revision
    • Addedremove-wiki
    • Changedsearch-page3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of search results to return (1-100)"New value: +"Maximum number of search results to return"
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
    • Addedsearch-page-by-prefix
    • Changedset-wiki4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / uri
        Added value: +{
        +  "description": "MCP resource URI of the wiki to use (e.g. mcp://wikis/en.wikipedia.org)",
        +  "type": "string"
        +}
      • removedInput schema / properties / wikiUrl
        Removed value: -{
        -  "description": "Any URL from the target wiki (e.g. https://en.wikipedia.org/wiki/Main_Page).",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "wikiUrl"
        -]New value: +[
        +  "uri"
        +]
    • Addedundelete-page
    • Changedupdate-page5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / latestId / description
        Previous value: -"Identifier for the revision used as the base for the new source"New value: +"Revision ID used as the base for the new source"
      • addedInput schema / properties / latestId / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / latestId / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / latestId / type
        Previous value: -"number"New value: +"integer"
    • Addedupload-file
    • Addedupload-file-from-url
  8. 7 tool updates
    • First observedcreate-page
    • First observedget-file
    • First observedget-page
    • First observedget-page-history
    • First observedsearch-page
    • First observedset-wiki
    • First observedupdate-page

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. For example, get-page vs get-pages, upload-file vs upload-file-from-url, and create-page vs update-page are all well-differentiated. The descriptions reinforce the unique role of each tool.

Naming Consistency5/5

All tool names follow a consistent verb-noun pattern with hyphens (e.g., add-wiki, get-page, upload-file). The only exception is whoami, but it is a standard idiom and does not break consistency. No mixing of conventions.

Tool Count4/5

With 29 tools, the server is comprehensive for MediaWiki management. While slightly on the high side, each tool serves a specific need and the count is justified by the domain's complexity. No unnecessary tools.

Completeness5/5

The tool set covers the full lifecycle of pages (create, read, update, delete, undelete, move), file management (upload, update, retrieve), wiki management (add/remove, list, site info, authentication), and advanced queries (history, recent changes, search, compare, links, categories). No obvious gaps for a typical wiki interaction.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProfessionalWiki/MediaWiki-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server