Skip to main content
Glama

MediaWiki MCP Server

Connect your AI assistant to any MediaWiki wiki, or script it directly from the terminal. Search, read, and edit wiki content using natural language or the wiki CLI.

CI lint CodeScene Average Code Health License: MIT

Three ways to use it:

  1. MCP server — Claude Desktop, Claude Code, Cursor, ChatGPT, n8n, VS Code, Google ADK, or any MCP-compatible tool. See SETUP.md.

  2. wiki CLI — same API client, same auth, no AI needed. For shell pipelines, CI checks, cron jobs. See CLI.md.

  3. Claude Code plugin — /plugin marketplace add olgasafonova/mediawiki-mcp-server adds wiki skills directly to Claude Code. See .claude-plugin/README.md.


Documentation

Document

What it covers

QUICKSTART.md

Get running in 2 minutes

SETUP.md

Per-tool configuration (Claude Desktop, Cursor, ChatGPT, n8n, VS Code, Google ADK)

CLI.md

wiki command-line reference

TOOLS.md

Full tool reference (43 tools by category)

DEPLOYMENT.md

HTTP transport, security, endpoints, env vars

TIETO_SETUP.md

Connect to Tieto's Public 360° Wiki (beginner-friendly)

WIKI_USE_CASES.md

Detailed workflows by persona

ARCHITECTURE.md

System design

CONTRIBUTING.md

How to contribute

SECURITY.md

Security policies

CHANGELOG.md

Version history


Related MCP server: mcp-mediawiki-crunchtools

What Can You Do?

The same operation works from a prompt (via MCP) or directly in your shell (via the wiki CLI):

Goal

Prompt your AI

From your terminal

Search the wiki

"What does our wiki say about onboarding?"

wiki search "onboarding"

Read a page

"Show me the Getting Started page"

wiki page "Getting Started"

Find broken links

"Are there broken links on the Docs page?"

wiki links broken --json

Find stale content

"Which pages haven't been updated in 90 days?"

wiki stale-pages --days 90

Cross-link suggestions

"What pages are similar to the API Reference?"

wiki similar "API Reference"

Audit wiki health

"Run a health check on the wiki"

wiki audit --json

Publish markdown

"Publish this README to the wiki"

wiki publish README.md "Page Title"

Strike a name

"Strike out John Smith on the Team page"

wiki replace "Team" --find "John Smith" --replace "<s>John Smith</s>"

For the full tool list, see TOOLS.md. The CLI returns typed exit codes for CI-friendly branching — see CLI.md.


30-Second Start

  1. Get the binary. Download from Releases or go build -o mediawiki-mcp-server . (requires Go 1.24+).

  2. Find your wiki API URL — usually https://your-wiki.com/api.php. Wikipedia is https://en.wikipedia.org/w/api.php. Visit Special:Version to confirm.

  3. Wire it up to your AI tool — see SETUP.md for the configuration that matches your client.

Reading public wikis works without login. Private/corporate wikis and editing require a bot password — SETUP.md#editing-wiki-pages.


Example Prompts

📖 More examples: see WIKI_USE_CASES.md for detailed workflows by persona (content editors, documentation managers, developers).

Search and read:

  • "What does our wiki say about deployment?"

  • "Give me a quick overview of the Configuration page"

  • "Get the content of Main Page, FAQ, and Setup all at once"

Track changes:

  • "What pages were updated this week?"

  • "Show me the diff between the last two versions"

  • "Who are the most active editors this month?"

Check quality:

  • "Are there broken links on this page?"

  • "Find orphaned pages with no links to them"

  • "Find pages similar to the Installation Guide"

  • "Find pages not updated in the last 90 days"

Page management (requires auth):

  • "Rename 'Old Guide' to 'Updated Guide'"

  • "Strike out John Smith on the Team page"

  • "Replace 'version 2.0' with 'version 3.0' on Release Notes"

File uploads and search (requires auth):

  • "Upload this image from URL to the wiki"

  • "Upload this local file to the wiki" (the agent base64-encodes the bytes; no public URL needed)

  • "Search for 'budget' in File:Annual-Report.pdf"

Convert Markdown:

  • "Convert this README to wiki format"

  • "Convert with Tieto branding and CSS" (use theme="tieto", add_css=true)


PDF Search Setup

PDF search requires the pdftotext tool from poppler-utils. Text file search (TXT, MD, CSV, etc.) works without any dependencies.

Platform

Install Command

macOS

brew install poppler

Ubuntu/Debian

apt install poppler-utils

RHEL/CentOS

yum install poppler-utils

Windows

choco install poppler

Windows alternative: Download binaries from poppler-windows releases and add to PATH.

Verify installation:

pdftotext -v

Compatibility

Platform

Transport

Status

Claude Desktop (Mac/Windows)

stdio

✅ Supported

Claude Code CLI

stdio

✅ Supported

Cursor

stdio

✅ Supported

VS Code

stdio

✅ Supported

ChatGPT

HTTP

✅ Supported

n8n

HTTP

✅ Supported

Google ADK

stdio / HTTP

✅ Supported

Works with any wiki: Wikipedia, Fandom, corporate wikis, or any MediaWiki installation.


Troubleshooting

Common issues and fixes live in SETUP.md#troubleshooting. For deeper diagnostics, the HTTP server exposes /health, /ready, and /status endpoints — see DEPLOYMENT.md.


Development

Build, test, and contribute: see CONTRIBUTING.md. For the system design, package layout, and data flow, see ARCHITECTURE.md.

Run the full check before pushing:

go test -race -failfast ./...
golangci-lint run ./...

Integration tests run against a real MediaWiki instance via docker-compose.test.yml. See CONTRIBUTING.md for the workflow.


Like This Project?

If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.

More MCP Servers

Check out my other MCP servers:

Server

Description

Stars

gleif-mcp-server

Access GLEIF LEI database. Look up company identities, verify legal entities.

GitHub stars

miro-mcp-server

Control Miro whiteboards with AI. Boards, diagrams, mindmaps, and more.

GitHub stars

nordic-registry-mcp-server

Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden.

GitHub stars

productplan-mcp-server

Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches.

GitHub stars

tilbudstrolden-mcp

Nordic grocery deal hunting. Find offers, plan meals, track spending.

GitHub stars

mcp-servercard-go

Go library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers.

GitHub stars


License

MIT License

Credits

Available Tools

43 tools
mediawiki_apply_formattingA
Destructive

BEST for adding formatting markup to specific text.

USE WHEN: User says "strike out X", "cross out the name", "make X bold", "italicize Y", "mark as code".

NOT FOR: Replacing text (use mediawiki_find_replace).

PARAMETERS:

  • title: Page name (required)

  • text: Text to format (required)

  • format: Formatting type (required):

    • "strikethrough": text (for removed/former items)

    • "bold": '''text'''

    • "italic": ''text''

    • "underline": text

    • "code": text

  • all: Format all occurrences (default false)

  • preview: Preview changes without saving. Omit to preview (default true); set preview=false to apply.

  • summary: Edit summary

RETURNS: Preview of formatting applied. Set preview=false to apply. Includes revision ID, diff URL, and undo instructions.

NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoApply to all occurrences (default: first only)
textYesText to find and format
titleYesPage title to edit
formatYesFormat to apply: 'strikethrough', 'bold', 'italic', 'underline', 'code', 'nowiki'
previewNoPreview changes without applying them. Omitted means preview (the safe default): the edit is not saved and the diff is returned. Set false to apply the change.
summaryNoEdit summary (auto-generated if empty)
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoNo
titleYes
changesNo
messageYes
previewYes
successYes
revisionNo
match_countYes
revision_idNo
format_countYes
format_appliedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the blast radius is already flagged structurally. The description usefully adds that preview defaults to true (edit not saved), that authentication with a bot password is required, and that undo instructions are returned — meaningful context beyond the annotations, though it doesn't discuss idempotency or repeated-run effects.

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?

Well front-loaded with a label-per-section layout that is easy to scan. Slightly redundant in restating 'Set preview=false to apply' in both PARAMETERS and RETURNS, but every block earns its place overall.

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

Completeness4/5

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

For a destructive, open-world mutation tool it covers auth requirements, the safe preview default, and apply semantics; an output schema exists, so return details are largely covered elsewhere. The only incompleteness is the missing 'rationale' and 'nowiki' mentions relative to the schema.

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 the baseline is 3, but the description goes further by spelling out the literal markup each format value produces (~~text~~, '''text''', etc.), which the schema's enum-free list does not convey. It omits the schema's 'nowiki' format and the required 'rationale' parameter, a minor gap that keeps this from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('adding formatting markup to specific text') and immediately distinguishes itself from the nearest sibling with a 'NOT FOR' clause pointing at mediawiki_find_replace. An agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit USE WHEN triggers with user-phrasing examples ('strike out X', 'make X bold') and an explicit NOT FOR case with the named alternative. Both the when and the when-not are covered.

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

mediawiki_auditA
Read-only

Run comprehensive wiki health audit with multiple checks.

USE WHEN: User asks "run health check", "audit the wiki", "check wiki quality".

PARAMETERS:

  • checks: Array of checks to run (default all):

    • "links": Broken internal links

    • "terminology": Glossary violations

    • "orphans": Unlinked pages

    • "activity": Recent changes

    • "external": Broken external links (slow)

  • limit: Max items per check (default 20)

RETURNS: Health score (0-100), detailed results per check, and recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax pages to audit (default 20, max 50)
pagesNoSpecific pages to audit
checksNoWhich checks to run: 'links', 'terminology', 'orphans', 'external', 'activity'. Default: all except 'external'
categoryNoCategory to audit (alternative to pages)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNo
summaryYes
wiki_nameYes
audited_atYes
terminologyNo
broken_linksNo
health_scoreYes
pages_auditedYes
external_linksNo
orphaned_pagesNo
recent_activityNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint=false, so safety and mutability are covered. The description adds two genuinely useful behavioral notes: that the 'external' check is slow, and that the response contains a health score plus per-check results and recommendations. It undercuts itself with inaccurate defaults ('default all' vs. the schema's 'all except external', and 'max items per check' vs. the schema's 'max pages to audit'), and never explains the non-idempotent behaviour the annotation flags.

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?

Front-loaded with the one-line purpose, then cleanly sectioned into USE WHEN / PARAMETERS / RETURNS, and every line is scannable. Some redundancy with the schema (restating checks and limit) and a couple of imprecise sentences keep it from a 5.

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

Completeness3/5

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

With an output schema present, the RETURNS line is a bonus rather than a requirement, and the trigger phrases and check list are adequate. The notable gap is scoping: 'pages' and 'category' let an agent audit a subset, yet the description never mentions either, so an agent may launch a full-wiki audit when a targeted one was intended.

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 and the schema carries the detail for all five parameters. The description enumerates the meaning of each check value (a helpful gloss on an enum-less string array) but mischaracterizes 'limit' as items-per-check rather than pages-to-audit, omits the 'max 50' cap, and says nothing about 'pages', 'category' or 'rationale'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run comprehensive wiki health audit') plus the multi-check scope, so the aggregate nature of the tool is clear. It does not, however, explicitly differentiate itself from the many single-check siblings (mediawiki_check_links, mediawiki_check_terminology, mediawiki_find_broken_internal_links, mediawiki_find_orphaned_pages), which is precisely the distinction an agent needs.

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 'USE WHEN' section gives three concrete user phrasings ('run health check', 'audit the wiki', 'check wiki quality') that map cleanly to invocation contexts. It stops short of naming alternatives or exclusions, e.g. 'for a single check, call mediawiki_check_links instead', which would make routing between this tool and the per-check siblings unambiguous.

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

mediawiki_batch_get_pagesA
Read-only

Retrieve content from MULTIPLE pages in a single API call.

USE WHEN: You need content from 2+ pages. Much faster than individual mediawiki_get_page calls.

NOT FOR: Single page (use mediawiki_get_page). Not for metadata only (use mediawiki_batch_get_pages_info).

PARAMETERS:

  • titles: Array of page titles (required, max 50)

  • format: "wikitext" (default) or "html"

RETURNS: Page content for each title, with exists/missing status. Missing pages are reported, not errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: 'wikitext' (default) or 'html'
titlesYesList of page titles to retrieve (max 50)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
found_countYes
total_countYes
missing_countYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine context beyond them: the batch limit of 50, and the important return contract that missing pages are reported as status rather than raised as errors. It does not, however, discuss rate limits or partial-failure semantics for a large batch.

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 one-line summary followed by clearly labeled USE WHEN / NOT FOR / PARAMETERS / RETURNS sections. Every sentence carries selection or invocation value with no filler.

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 batch read tool with an output schema present, the description covers the essentials: when to choose it, the alternatives, the batch cap, and the missing-page behavior. Nothing an agent needs to invoke it correctly is absent.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's parameter block essentially restates the schema (titles array, max 50, format wikitext/html). It adds no format syntax, title normalization, or ordering semantics beyond what the schema already documents, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve content from MULTIPLE pages') and scopes it to a single API call, which distinguishes it immediately from the per-page sibling mediawiki_get_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?

Explicit USE WHEN (2+ pages, faster than individual calls) and NOT FOR clauses route the agent to mediawiki_get_page for single pages and mediawiki_batch_get_pages_info for metadata-only requests. Both alternatives are named with their selecting conditions.

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

mediawiki_batch_get_pages_infoA
Read-only

Get metadata for MULTIPLE pages in a single API call.

USE WHEN: You need info (last edit, size, categories) for 2+ pages without their content.

NOT FOR: Single page (use mediawiki_get_page_info). Not for content (use mediawiki_batch_get_pages).

PARAMETERS:

  • titles: Array of page titles (required, max 50)

RETURNS: Metadata (size, last edit, categories, protection) per page. Missing pages reported with exists=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
titlesYesList of page titles to get info for (max 50)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
total_countYes
exists_countYes
missing_countYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint, so the safety profile is covered. The description adds real behavioral detail beyond them: the 50-item batch ceiling and the exists=false convention for missing pages, which the agent cannot infer from the schema. It does not explain why idempotentHint is false for a read call, but that is a minor omission.

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 the core purpose, then clearly delimited USE WHEN / NOT FOR / PARAMETERS / RETURNS blocks. Every line carries distinct information with no filler.

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 purpose, selection criteria, the batch limit, and the missing-page behavior, and an output schema exists to carry return shape. An agent has everything needed to decide and invoke correctly; the RETURNS line is a helpful summary rather than a redundancy.

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 titles and rationale are already documented; the description only echoes the 'max 50' constraint on titles and says nothing about the rationale audit parameter. Baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get), resource (metadata/pages info), and scope (MULTIPLE pages in a single API call), which immediately distinguishes it from the singular sibling. The parenthetical field list (last edit, size, categories) pins down exactly what 'metadata' means.

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?

Explicit USE WHEN ('info for 2+ pages without their content') and NOT FOR clauses, each naming the correct alternative (mediawiki_get_page_info for single pages, mediawiki_batch_get_pages for content). This is textbook routing guidance.

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

mediawiki_bulk_replaceA
Destructive

Update text across MULTIPLE pages at once.

USE WHEN: User says "update everywhere", "fix on all pages", "change brand name across docs", "update in all documentation".

NOT FOR: Single page changes (use mediawiki_find_replace - more efficient).

PARAMETERS:

  • find: Text to find (required)

  • replace: Replacement text (required)

  • pages: Array of specific pages (optional)

  • category: Update all pages in category (optional)

  • use_regex: Treat find as regex (default false)

  • preview: Preview changes without saving. Omit to preview (default true) — ALWAYS preview a multi-page run first; set preview=false only once the diff looks right.

  • limit: Max pages to update (default 50)

  • summary: Edit summary

WARNING: Always use preview=true first to verify matches before applying.

RETURNS: Changes per page. Set preview=false to apply all changes. Includes revision ID, diff URL, and undo instructions.

NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
findYesText to find
limitNoMax pages to process (default 10, max 50)
pagesNoPage titles to process
previewNoPreview changes without applying them. Omitted means preview (the safe default): no page is saved and the per-page diff is returned. Set false to apply the changes across all matched pages.
replaceYesReplacement text
summaryNoEdit summary
categoryNoCategory to get pages from (alternative to pages)
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.
use_regexNoTreat 'find' as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
previewYes
resultsYes
total_changesYes
pages_modifiedYes
pages_processedYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint, idempotentHint=false, openWorldHint) by disclosing that preview defaults to true and must be run before applying, that applying requires bot-password authentication (anonymous sessions cannot edit), and that results include revision ID, diff URL and undo instructions. This is exactly the operational context annotations cannot convey.

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?

Front-loaded purpose, then clearly labelled USE WHEN / NOT FOR / PARAMETERS / WARNING / RETURNS sections that scan well. Slightly bloated by re-enumerating parameters already fully described in the schema.

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?

An output schema exists so return values need not be spelled out, yet the description still summarises them plus the authentication prerequisite and the mandatory preview workflow. For a destructive, non-idempotent bulk tool, nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter list largely restates the schema. It does clarify preview semantics and that pages/category are alternatives, but it omits the required 'rationale' parameter entirely and states 'limit default 50' while the schema says 'default 10, max 50' — a misleading discrepancy. Baseline 3, not higher.

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?

Starts with a specific verb+resource+scope: 'Update text across MULTIPLE pages at once.' The uppercase MULTIPLE immediately distinguishes it from the single-page sibling mediawiki_find_replace, which is named explicitly.

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?

Contains both a USE WHEN section with example user phrasings ('update everywhere', 'change brand name across docs') and an explicit NOT FOR routing to mediawiki_find_replace for single-page work. The when/when-not/alternative triad is fully present.

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

mediawiki_check_terminologyA
Read-only

Scan pages for terminology violations against a glossary.

USE WHEN: User asks "check brand terminology", "find incorrect terms", "verify consistent naming".

PARAMETERS:

  • pages: Array of pages to check (optional)

  • category: Check all pages in category (optional)

  • glossary_page: Wiki page with term mappings (default "Brand Terminology Glossary")

  • exclude_code_blocks: Skip code blocks (default true)

  • limit: Max pages (default 10)

RETURNS: Violations with page, line, wrong term, and correct term.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax pages to check (default 10, max 50)
pagesNoPage titles to check. If empty, uses pages from category.
categoryNoCategory to get pages from (alternative to pages list)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
glossary_pageNoWiki page containing the glossary table (default: 'Brand Terminology Glossary')
exclude_code_blocksNoSkip code blocks (syntaxhighlight, source, pre, code tags) to avoid false positives on code paths. Default: true

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
issues_foundYes
terms_loadedYes
glossary_pageYes
pages_checkedYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds the glossary-driven scope and the exclude_code_blocks rationale ('avoid false positives on code paths'), but omits anything about the default-limit cap interaction or what happens when neither pages nor category is supplied. 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?

Front-loaded purpose sentence followed by tight USE WHEN, PARAMETERS, and RETURNS blocks — no filler. Minor deduction: the RETURNS line duplicates what the existing output schema already conveys, and the parameter block re-lists schema facts.

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 six optional parameters, an output schema, and read-only annotations, the agent has most of what it needs: trigger phrases, defaults, and a return-shape sketch. The gap is that no parameters are required and the description never states the behavior when both pages and category are empty or when they conflict.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters including defaults, the max-50 limit, and the code-block exclusion rationale. The description's PARAMETERS list largely restates that schema content, adding only the glossary page default value, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Scan pages for terminology violations against a glossary') that is immediately distinguishable from siblings like mediawiki_check_links, mediawiki_check_translations, and mediawiki_find_replace. An agent can tell what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE WHEN' block gives three explicit user-intent triggers ('check brand terminology', 'find incorrect terms', 'verify consistent naming'), which is strong positive routing. It stops short of naming alternatives or stating when not to use it (e.g. vs. bulk_replace or find_replace for actually fixing terms).

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

mediawiki_check_translationsA
Read-only

Find pages missing translations in specified languages.

USE WHEN: User asks "which pages need German translation", "find missing translations", "check language coverage".

PARAMETERS:

  • languages: Array of language codes (required, e.g., ["de", "fr", "es"])

  • base_pages: Specific pages to check (optional)

  • category: Check pages in category (optional)

  • pattern: Naming pattern - "subpages" (Page/de), "suffixes" (Page (de)), or "prefixes" (de:Page)

  • limit: Max pages (default 50)

RETURNS: Missing translations grouped by language.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax base pages to check (default 20, max 100)
patternNoPattern for language pages: 'subpage' (Page/lang), 'suffix' (Page (lang)), or 'prefix' (lang:Page). Default: 'subpage'
categoryNoCategory to get base pages from (alternative to base_pages)
languagesYesLanguage codes to check (e.g., ['en', 'no', 'sv'])
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
base_pagesNoBase page names to check for translations (without language suffix)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
patternYes
missing_countYes
pages_checkedYes
languages_checkedYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is largely covered. The description adds that results are missing translations grouped by language, but it does not discuss live-wiki behavior, idempotency in practice, or rate/performance characteristics 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 front-loaded with the core purpose and organized into USE WHEN, PARAMETERS, and RETURNS sections. It is easy to scan, though the parameter list is somewhat redundant given the 100%-covered input schema and the RETURNS note overlaps with the available output schema.

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 moderate complexity, rich input schema, and available output schema, the description covers the essential calling context: what the tool does, when to use it, key inputs, and the shape of results. The limit default inconsistency is a small completeness gap, but otherwise an agent has enough to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 100%, so the schema already documents the parameters in detail. The description's parameter list largely repeats that schema, but it states a default of 50 for limit while the schema says default 20, and it pluralizes pattern values ('subpages', 'suffixes', 'prefixes') differently from the schema ('subpage', 'suffix', 'prefix'). Those inconsistencies reduce rather than add 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 states a specific verb and resource: find pages missing translations in specified languages. This is readily distinguishable from sibling tools like mediawiki_check_links or mediawiki_check_terminology, which check different properties. No ambiguity about what the tool does.

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 USE WHEN section gives clear example prompts, such as asking which pages need German translation or checking language coverage. It does not name alternatives or state when not to use this tool, so it falls short of the explicit when/when-not/alternatives standard.

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

mediawiki_compare_revisionsA
Read-only

Compare two revisions and show the diff.

USE WHEN: User asks "what changed between versions", "show the diff", "compare old and new".

NOT FOR: Just listing revisions (use mediawiki_get_revisions). Not for comparing a topic across pages (use mediawiki_compare_topic).

PARAMETERS:

  • from_rev: Source revision ID, OR

  • from_title: Source page title (uses latest revision)

  • to_rev: Target revision ID, OR

  • to_title: Target page title

RETURNS: HTML-formatted diff showing additions (green) and deletions (red).

ParametersJSON Schema
NameRequiredDescriptionDefault
to_revNoTarget revision ID
from_revNoSource revision ID
to_titleNoTarget page title (uses latest revision)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
from_titleNoSource page title (uses latest revision)

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
to_userNo
to_revidYes
to_titleYes
from_userNo
from_revidYes
from_titleYes
to_timestampNo
from_timestampNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint, so the safety profile is covered. The description adds value beyond them by disclosing the return format (HTML diff with green additions/red deletions) and the OR-based revision/title resolution, but it doesn't mention the rationale audit-trail behavior or any rate/limit 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?

Header-labeled blocks (USE WHEN, NOT FOR, PARAMETERS, RETURNS) front-load the purpose and the routing decision. Every sentence carries information; no filler.

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?

With an output schema present, the return format need not be spelled out, yet the description still summarizes it briefly. Combined with full schema coverage and annotations, an agent has everything needed to select and 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?

Schema description coverage is 100%, so the baseline is 3. The description adds the OR-combinatorics between from_rev/from_title and to_rev/to_title, which the flat schema does not express as a constraint, giving the agent the either/or selection model not obvious from additionalProperties=false.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+output: 'Compare two revisions and show the diff.' The NOT FOR clause explicitly distinguishes it from mediawiki_get_revisions and mediawiki_compare_topic, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit USE WHEN phrases ('what changed between versions', 'show the diff') and NOT FOR exclusions that name the correct alternative tools for both near-miss cases (listing revisions, cross-page topic comparison). Nothing is left to inference.

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

mediawiki_compare_topicA
Read-only

Compare how a topic is described across multiple pages.

USE WHEN: User asks "how is X described on different pages", "find inconsistencies about timeout", "compare definitions of Y".

NOT FOR: Comparing page revisions (use mediawiki_compare_revisions).

PARAMETERS:

  • topic: Topic or term to compare (required)

  • category: Limit to pages in category (optional)

  • limit: Max pages to check (default 20)

RETURNS: Page mentions with context, detected value mismatches, and inconsistencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum pages to compare (default 20, max 50)
topicYesTopic or term to compare across pages
categoryNoLimit search to pages in this category
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
topicYes
summaryYes
pages_foundYes
page_mentionsYes
inconsistenciesNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety and idempotency profile is already covered. The description adds useful behavioral context by explaining that it returns page mentions with context, detected value mismatches, and inconsistencies. It does not mention rate limits or permission requirements, so it is strong but not fully exhaustive.

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 front-loaded with the core purpose and then uses clear headings for USE WHEN, NOT FOR, PARAMETERS, and RETURNS. Every section earns its place by helping the agent decide whether and how to call the tool.

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?

The tool has an output schema, and the description still summarizes the return shape as page mentions, value mismatches, and inconsistencies. Combined with explicit usage guidance, an alternative-tool exclusion, and annotation coverage, the definition gives the agent everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself documents all four parameters including the optional rationale field. The description repeats the topic, category, and limit parameters with basic meanings but omits rationale entirely, adding little beyond the structured schema. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Compare how a topic is described across multiple pages.' It also explicitly distinguishes this tool from mediawiki_compare_revisions, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The USE WHEN section gives concrete user-intent examples such as 'how is X described on different pages' and 'find inconsistencies about timeout.' The NOT FOR section names the exact alternative tool for revision comparison, making the usage boundary unambiguous.

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

mediawiki_convert_markdownA
Read-only

Convert Markdown text to MediaWiki markup. Use this tool when you need to transform Markdown-formatted content into wiki-compatible format before creating or editing wiki pages.

WHEN TO USE:

  • User provides Markdown content to add to the wiki

  • Converting documentation from GitHub/GitLab to wiki format

  • Transforming README files for wiki publishing

  • Preparing release notes written in Markdown

THEMES:

  • "tieto": Tieto brand colors (Hero Blue #021e57 headings, yellow code highlights)

  • "neutral": Clean output without custom colors (default)

  • "dark": Dark mode optimized colors

OPTIONS:

  • add_css: Include CSS styling block for branded appearance

  • reverse_changelog: Reorder changelog entries newest-first

  • prettify_checks: Replace plain checkmarks with emoji

EXAMPLE: Input: "# Hello\nbold and italic\n- item 1\n- item 2" Output: "= Hello =\n'''bold''' and ''italic''\n* item 1\n* item 2"

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoColor theme: 'tieto' (brand colors), 'neutral' (no styling, default), or 'dark' (dark mode)
add_cssNoInclude CSS styling block for branded appearance
markdownYesThe Markdown text to convert to MediaWiki markup
prettify_checksNoReplace plain checkmarks with emoji ✅
reverse_changelogNoReorder changelog entries with newest first

Output Schema

ParametersJSON Schema
NameRequiredDescription
wikitextYes
theme_usedYes
input_lengthYes
output_lengthYes
available_themesYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds behavioral detail the annotations don't: what each OPTION does to the output (add_css styling block, reverse_changelog ordering, prettify_checks emoji substitution) and how themes change rendered colors. It does not address the non-idempotent hint, but that is a minor gap.

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?

Content is front-loaded with the one-line purpose and organized under labeled sections, and the input/output example earns its space. It is somewhat repetitive, restating the OPTIONS bullets that the schema already documents, which keeps it just short of a 5.

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?

With an output schema present, return values need no prose, and readOnlyHint carries the safety profile. Purpose, triggers, option semantics, theme meanings, and a worked example together give an agent everything needed to call it 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?

Schema coverage is 100%, so the baseline is 3, but the description genuinely extends it: themes are annotated with brand specifics ('Hero Blue #021e57 headings, yellow code highlights') and defaults are called out ('neutral ... default'), beyond the schema's terse enum-like wording. The EXAMPLE also clarifies the expected shape of the required markdown input and the produced markup.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource pair ('Convert Markdown text to MediaWiki markup') and immediately scopes it against siblings by saying it runs 'before creating or editing wiki pages', separating it from mediawiki_edit_page and mediawiki_apply_formatting. An agent can identify the tool's role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated WHEN TO USE block names four concrete trigger scenarios (Markdown content for the wiki, GitHub/GitLab docs, README files, release notes) and implies the alternative workflow (edit/create after conversion). Nothing about when to reach for this tool is left to inference.

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

mediawiki_edit_pageA
Destructive

Create new pages or rewrite entire page content.

USE WHEN: User says "create a new page", "rewrite the entire About page", "replace all content".

NOT FOR: Simple text changes (use mediawiki_find_replace). Not for formatting (use mediawiki_apply_formatting).

PARAMETERS:

  • title: Page name (required)

  • content: New page content (required)

  • section: Edit specific section only (optional)

  • summary: Edit summary (required for good practice)

  • minor: Mark as minor edit (default false)

  • bot: Mark as bot edit (default false)

  • base_timestamp: Revision timestamp from mediawiki_get_page (optional, recommended). When set, the edit fails with 'editconflict' if someone else changed the page since that revision, instead of silently overwriting their edit. On conflict: re-read with mediawiki_get_page and reapply.

  • preview: Preview changes without saving. Omit to preview (default true, for safety): the current revision is fetched, a line diff of what would change is returned, and nothing is written and no token is consumed. Set preview=false to apply the edit.

RETURNS: Preview (default): per-line diff of the planned content against the current revision ('changes' entries: before=removed line, after=added line, a modified line appears as its removal followed by its addition), plus new_page=true when the edit would create the page. With preview=false: revision ID, diff URL, and undo instructions.

NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.

WARNING: This overwrites entire page content unless section is specified. Preview first (omit preview) before applying.

ParametersJSON Schema
NameRequiredDescriptionDefault
botNoMark as bot edit (requires bot flag)
minorNoMark as minor edit
titleYesPage title to edit or create
contentYesNew page content in wikitext format
previewNoPreview changes without saving. Omitted means preview (the safe default): the edit is not saved, no token is consumed, and a line diff against the current revision is returned. Set false to apply the edit.
sectionNoSection to edit ('new' for new section, number for existing)
summaryNoEdit summary explaining the change
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.
captcha_idNoCAPTCHA ID from a previous failed attempt, required when answering a CAPTCHA
captcha_wordNoUser-provided answer to the CAPTCHA challenge
base_timestampNoTimestamp of the revision this edit is based on (from get_page). When set, the wiki rejects the edit with an editconflict error if someone else edited the page in the meantime, instead of silently overwriting their change

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
changesNo
messageYes
page_idYes
previewYes
successYes
new_pageYes
page_urlNo
captcha_idNo
revision_idYes
captcha_typeNo
captcha_questionNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare the write/destructive/openWorld profile, and the description adds substantially beyond it: authentication (bot password) required, anonymous sessions cannot edit, preview defaults to true and consumes no token, base_timestamp triggers an 'editconflict' failure rather than silent overwrite, and a recovery loop (re-read with mediawiki_get_page and reapply). Overwrite scope is also flagged in the WARNING.

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?

Well front-loaded and sectioned (USE WHEN / NOT FOR / PARAMETERS / RETURNS / NOTE / WARNING), so an agent can skim. There is mild repetition: preview is explained in PARAMETERS, again in RETURNS, and implied in the WARNING, and base_timestamp is stated twice in near-identical wording.

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 the full lifecycle an agent needs for a destructive write: prerequisites (auth), safe default (preview), concurrency protection (base_timestamp), failure recovery, and the shape of both preview and applied responses. Output schema exists but the extra prose about diffs and undo instructions is still useful context.

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 the baseline is 3; the description nevertheless adds real meaning, notably the preview null-vs-false semantics and the conflict-avoidance workflow for base_timestamp. It does not, however, cover captcha_id/captcha_word or the 'new'/numeric section convention, so it stops short of fully complementing the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create/rewrite) and resource (page content), and explicitly names the two sibling tools it is not for (mediawiki_find_replace, mediawiki_apply_formatting). An agent can distinguish this from every other mutating sibling without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Uses explicit USE WHEN triggers ('create a new page', 'rewrite the entire About page') and NOT FOR exclusions that route simple edits and formatting to the correct alternatives. Both the affirmative and negative cases are covered.

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

mediawiki_find_orphaned_pagesA
Read-only

Find pages with no incoming links from other pages.

USE WHEN: User asks "find orphan pages", "which pages have no links", "find undiscoverable content".

PARAMETERS:

  • namespace: Filter by namespace (default 0 = main)

  • prefix: Filter by title prefix (optional)

  • limit: Max orphans to return (default 50)

RETURNS: List of orphaned page titles.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax pages to return (default 50, max 200)
prefixNoOnly check pages starting with this prefix
namespaceNoNamespace to check (0=main, default). Use -1 for all namespaces.
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
total_checkedYes
orphaned_countYes
orphaned_pagesYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond that, and notably does not explain the non-idempotent hint or any scan cost/rate consideration; with annotations doing the heavy lifting, 3 is appropriate.

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?

Well-structured and front-loaded: purpose first, then USE WHEN, PARAMETERS, RETURNS. The RETURNS line is redundant given a dedicated output schema exists, which is the only meaningful waste in an otherwise tight block.

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 single-purpose lookup with 100% schema coverage and an output schema, the description carries enough to call correctly. What is present is sufficient; remaining gaps (scan scope, cost) are minor and partly mitigated by annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including rationale) are already documented in the schema. The description's PARAMETERS block largely restates schema text (namespace default 0, limit default 50) without adding format, syntax, or edge-case meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with the defining constraint ('pages with no incoming links from other pages'). This cleanly separates it from siblings like mediawiki_find_broken_internal_links and mediawiki_get_backlinks, so an agent can disambiguate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE WHEN' block gives concrete user phrasings that select this tool, which is clear context for invocation. It stops short of naming an alternative tool or a when-not condition (e.g., distinguishing from stale/broken-link discovery), so it earns a 4 rather than 5.

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

mediawiki_find_replaceA
Destructive

PREFERRED for simple text changes on a single page.

USE WHEN: User says "replace X with Y", "fix the typo", "change the version number", "update the name".

NOT FOR: Creating/rewriting pages (use mediawiki_edit_page). Not for multi-page updates (use mediawiki_bulk_replace). Not for formatting (use mediawiki_apply_formatting).

PARAMETERS:

  • title: Page name (required)

  • find: Text to find (required)

  • replace: Replacement text (required)

  • all: Replace all occurrences (default false = first only)

  • use_regex: Treat find as regex (default false)

  • preview: Preview changes without saving. Omit to preview (default true, for safety); set preview=false to apply.

  • summary: Edit summary

RETURNS: Match count and preview of changes. Set preview=false to apply. Includes revision ID, diff URL, and undo instructions.

NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoReplace all occurrences (default: first only)
findYesText to find (exact match or regex if use_regex=true)
minorNoMark as minor edit
titleYesPage title to edit
previewNoPreview changes without applying them. Omitted means preview (the safe default): the edit is not saved and the diff is returned. Set false to apply the change.
replaceYesReplacement text
summaryNoEdit summary
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.
use_regexNoTreat 'find' as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoNo
titleYes
changesNo
messageYes
previewYes
successYes
revisionNo
match_countYes
revision_idNo
replace_countYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description adds context annotations cannot carry: the safe-by-default preview behavior (omitted preview = no save), the requirement of bot-password authentication, and that anonymous sessions cannot apply edits. It also notes undo instructions and revision IDs on return, which is meaningful for a destructive mutation.

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?

Front-loaded with the routing decision and broken into scannable USE WHEN / NOT FOR / PARAMETERS / RETURNS / NOTE blocks with no filler prose. Minor redundancy: 'Set preview=false to apply' appears in both the parameter entry and the RETURNS line.

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 the routing, the destructive-edit safety model, and the auth prerequisite, and an output schema exists so return details need not be repeated. Slightly incomplete in that its parameter enumeration skips two schema parameters including the required 'rationale', but the 100% schema coverage compensates.

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 every parameter is already documented in the schema; the description's parameter list largely restates it (e.g., 'all: Replace all occurrences (default false = first only)') and adds no syntax or format detail beyond the schema. It also omits the required 'rationale' and the 'minor' flag from its own parameter list. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource plus scope: 'simple text changes on a single page,' and labels itself PREFERRED. It explicitly distinguishes itself from mediawiki_edit_page, mediawiki_bulk_replace, and mediawiki_apply_formatting, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides both a USE WHEN block with concrete trigger phrases ('replace X with Y', 'fix the typo') and a NOT FOR block naming the correct sibling for each excluded case. This is explicit when/when-not/alternative guidance with nothing left to inference.

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

mediawiki_find_similar_pagesA
Read-only

Find pages with similar content (potential duplicates or overlaps).

USE WHEN: User asks "find similar pages", "are there duplicates", "what pages overlap with X".

NOT FOR: Finding related pages by links (use mediawiki_get_related).

PARAMETERS:

  • page: Source page name (required)

  • category: Limit search to category (optional)

  • min_score: Minimum similarity threshold 0-1 (default 0.1)

  • limit: Max similar pages (default 10)

RETURNS: Similar pages with similarity scores and linking recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage title to find similar pages for
limitNoMaximum similar pages to return (default 10, max 50)
categoryNoLimit search to pages in this category
min_scoreNoMinimum similarity score 0-1 (default 0.1)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
source_pageYes
similar_pagesYes
total_comparedYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, covering the safety and determinism profile. The description adds the return shape and parameter defaults but discloses no behavioral traits beyond that, such as computational cost, permissions, or why results are non-idempotent. Adequate but not rich.

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?

Header-delimited sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS) make it skimmable, and the core purpose plus the key sibling distinction are front-loaded in the first two lines. No filler sentences.

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 an output schema present, return values need not be spelled out, yet the description summarizes them anyway. Combined with clear use-case routing, exclusions, and parameter listing, it is nearly complete; only the undocumented rationale parameter is left to the schema alone.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates four of the five parameters with their defaults (page, category, min_score, limit), which duplicates rather than extends the schema; it omits the schema's rationale parameter entirely and adds no new semantics such as what 'similarity' is measured against.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Find pages with similar content') and immediately scopes it with '(potential duplicates or overlaps)'. Explicitly distinguishes itself from the confounding sibling mediawiki_get_related, so an agent can disambiguate without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a USE WHEN section with concrete user phrasings ('find similar pages', 'are there duplicates', 'what pages overlap with X') and a NOT FOR section naming the alternative tool mediawiki_get_related with its distinguishing condition (link-based relatedness vs content similarity). Both routing conditions are explicit.

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

mediawiki_get_category_membersA
Read-only

Get all pages that belong to a specific category.

USE WHEN: User asks "show pages in Documentation category", "list all tutorials", "what's in Category:API".

NOT FOR: Listing categories themselves (use mediawiki_list_categories).

PARAMETERS:

  • category: Category name without "Category:" prefix (required)

  • type: Filter by type - "page", "subcat", "file", or all (default)

  • limit: Max members (default 50)

  • continue_from: Pagination token

RETURNS: Page titles in the category.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by type: 'page', 'subcat', 'file', or empty for all
limitNoMaximum members to return (default 50, max 500)
categoryYesCategory name (with or without 'Category:' prefix)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
continue_fromNoContinue token for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
membersYes
categoryYes
has_moreYes
continue_fromNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, covering the safety profile. The description adds the pagination token concept and a default limit, but says nothing about rate limits, auth requirements, or the fact that results are capped. With annotations carrying the safety burden, this is adequate but not rich.

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?

Sectioned and front-loaded: purpose, then USE WHEN, NOT FOR, parameters, returns. Efficient, though the PARAMETERS and RETURNS blocks partially duplicate the schema and output schema respectively.

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 an output schema exists, the description need not explain return shapes, and it correctly keeps RETURNS to a single line. Usage routing, param constraints, and scoping are all present for a read-only listing 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 description coverage is 100%, so all five params are documented structurally; the description's PARAMETERS list largely restates them. It adds the 'without Category: prefix' guidance, which actually conflicts slightly with the schema's 'with or without prefix' wording, so there is no net value gain over the schema 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?

The first sentence states a specific verb and resource ('Get all pages that belong to a specific category') and is immediately distinguishable from mediawiki_list_categories and mediawiki_get_page. The NOT FOR line explicitly names the sibling it should not be confused with.

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?

Provides a USE WHEN block with three concrete user-phrasing examples plus an explicit NOT FOR clause naming the alternative tool. An agent has everything needed to route correctly without inference.

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

mediawiki_get_imagesA
Read-only

Get all images and files used on a wiki page.

USE WHEN: User asks "what images are on X", "show files used in the article", "list media on this page".

PARAMETERS:

  • title: Page name (required)

  • limit: Max images (default 50)

RETURNS: Image titles, URLs, dimensions, and file sizes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum images to return (default 50, max 500)
titleYesPage title to get images from
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
titleYes
imagesYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds only a RETURNS summary, which is largely redundant given an output schema exists, and says nothing about pagination or the practical effect of the limit cap. Adequate but not additive.

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?

Purpose is front-loaded in one line, followed by tightly labeled USE WHEN, PARAMETERS and RETURNS blocks. Every sentence carries information and the sectioning makes it scannable without padding.

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 read-only, single-resource fetch with an output schema and full annotation coverage, the description supplies purpose, trigger conditions, parameter recap and return summary. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates 'title: Page name (required)' and 'limit: Max images (default 50)', both of which are already fully specified in the schema, and it omits the 'max 500' bound and the rationale parameter entirely. No meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific verb and resource with scope: 'Get all images and files used on a wiki page.' An agent immediately knows what it retrieves. It stops short of a 5 because it never contrasts itself with a sibling (e.g., get_external_links or get_page), so sibling disambiguation is left to the agent.

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 'USE WHEN' block gives three concrete user phrasings ('what images are on X', 'show files used in the article', 'list media on this page'), which clearly anchors the trigger context. It provides no exclusions or named alternatives, so it is clear but not fully routing.

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

mediawiki_get_pageA
Read-only

Retrieve full wiki page content.

USE WHEN: User says "show me the X page", "what's on the Main Page", "read the FAQ".

NOT FOR: Getting page structure/TOC (use mediawiki_get_sections). Not for searching content (use mediawiki_search_in_page). Not for metadata only (use mediawiki_get_page_info). If title not found, use mediawiki_resolve_title to handle typos and case sensitivity.

PARAMETERS:

  • title: Page name (required)

  • format: "wikitext" (default) or "html"

RETURNS: Page content in requested format. Large pages truncated at 25KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesPage title to retrieve
formatNoOutput format: 'wikitext' (default) or 'html'
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
formatYes
contentYes
messageNo
page_idYes
timestampYes
truncatedNo
revision_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the description's added value is the 25KB truncation limit and the format-dependent return behavior, both genuinely useful operational facts. It does not explain the non-obvious idempotentHint=false on what looks like a pure read, nor auth/rate behavior, so it stops short of a 5.

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?

Roughly five short lines with a labeled USE WHEN / NOT FOR / RETURNS structure; the core action and scope are front-loaded and every sentence carries routing or constraint information. Minor duplication of the format enum against the schema is the only overhead.

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?

With an output schema present, the description need not restate return values, and it still covers the truncation caveat that the output schema alone would not reveal. Routing to resolve_title closes the main failure mode for a title-keyed lookup.

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's PARAMETERS block largely restates the schema (title, format with wikitext default) rather than adding syntax, casing rules, or naming-convention detail for ambiguous titles beyond a pointer to resolve_title.

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?

Opens with a specific verb+resource ('Retrieve full wiki page content') and immediately distinguishes itself from four siblings by name. An agent can route between get_page, get_sections, get_page_info, and search_in_page without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit USE WHEN trigger phrasings, explicit NOT FOR exclusions each mapped to the correct alternative, and a failure-path instruction (use mediawiki_resolve_title on title-not-found). This is the full when/when-not/fallback triad.

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

mediawiki_get_page_infoA
Read-only

Get page metadata without content.

USE WHEN: User asks "when was X last edited", "who created the FAQ", "is the page protected".

NOT FOR: Getting page content (use mediawiki_get_page). Not for full edit history (use mediawiki_get_revisions).

PARAMETERS:

  • title: Page name (required)

RETURNS: Last edit timestamp, page size, protection status, creator.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesPage title
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
existsYes
lengthYes
page_idYes
touchedYes
redirectYes
namespaceYes
categoriesNo
protectionNo
links_countYes
redirect_toNo
content_modelYes
page_languageYes
last_revision_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint, so the safety profile is covered; the description adds genuinely new context by naming the returned fields and stressing that page content is deliberately excluded (a payload/size consideration). It does not address the unusual idempotentHint=false on a read-only metadata call, which an agent might want explained.

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?

Four short, front-loaded blocks (purpose, USE WHEN, NOT FOR, RETURNS) with zero filler. Every line earns its place and the most decision-relevant information leads.

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 simple single-parameter lookup with an output schema, the description covers purpose, exclusions, alternatives, and the shape of the result. An agent has everything needed to select and invoke it correctly without opening the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema and the baseline is 3. The description restates 'title: Page name (required)' but adds no format, disambiguation, or naming-convention guidance, and it never mentions the optional 'rationale' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get page metadata) and immediately constrains scope with 'without content', which is the key differentiator from mediawiki_get_page. Sibling routing is made explicit by naming mediawiki_get_page and mediawiki_get_revisions in the exclusion clause.

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?

Explicit USE WHEN triggers are given as quoted user phrasings ('when was X last edited', 'who created the FAQ'), and NOT FOR clauses redirect to the correct alternatives with the condition that selects each. Nothing is left to inference.

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

mediawiki_get_page_summaryA
Read-only

Get lead section + key metadata without loading the full page.

USE WHEN: User asks "what is X about", "quick overview of X", "summarize the X page". Much lighter than mediawiki_get_page for large pages.

NOT FOR: Full page content (use mediawiki_get_page). Not for specific sections (use mediawiki_get_sections with section parameter).

PARAMETERS:

  • title: Page name (required)

RETURNS: Lead section (intro before first heading), page size, categories, section list, last edit timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesPage title to get summary for
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
formatYes
lengthYes
messageNo
page_idYes
redirectNo
sectionsNo
categoriesNo
last_editedYes
redirect_toNo
revision_idYes
lead_contentYes
section_countYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful context beyond that: it is a lighter-weight read that avoids loading the full page, and it enumerates what comes back. The only omission is that idempotentHint=false isn't explained, but that is minor for a read tool.

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

Conciseness5/5

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

Front-loaded one-line purpose followed by clearly labeled USE WHEN, NOT FOR, PARAMETERS, and RETURNS blocks. Every sentence earns its place and the routing constraint precedes the detail.

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 simple two-parameter read tool with annotations and an output schema present, the description covers purpose, routing, inputs, and expected return content. An agent has everything needed to select and invoke it correctly; the RETURNS summary is a helpful convenience even if the output schema is authoritative.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented there, so the schema carries the semantic load. The description restates the required 'title' parameter but adds no format, disambiguation, or title-resolution guidance beyond the schema, and it never mentions the optional 'rationale' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get lead section + key metadata') and immediately scopes it ('without loading the full page'). It explicitly distinguishes itself from siblings mediawiki_get_page and mediawiki_get_sections, so an agent can disambiguate without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Dedicated USE WHEN and NOT FOR sections give explicit triggers ('what is X about', 'quick overview') and name the correct alternatives for the excluded cases (full content → get_page, specific sections → get_sections with section param). Nothing is left to inference.

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

mediawiki_get_recent_changesA
Read-only

Get recent changes across the entire wiki.

USE WHEN: User asks "what's been changed recently", "show wiki activity", "who's been editing".

NOT FOR: Single page history (use mediawiki_get_revisions). Not for user-specific edits (use mediawiki_get_user_contributions).

PARAMETERS:

  • limit: Max changes (default 50)

  • start, end: Time range (ISO 8601)

  • namespace: Filter by namespace

  • type: Filter by change type (edit, new, log)

  • aggregate_by: Group results - "user", "page", or "type"

RETURNS: Recent changes with timestamps, users, and summaries. Aggregation returns counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoUpper time bound (ISO 8601). Returns changes on or before this timestamp.
typeNoFilter by type: 'edit', 'new', 'log', or empty for all
limitNoMaximum changes to return (default 50, max 500)
startNoLower time bound (ISO 8601). Returns changes on or after this timestamp.
namespaceNoFilter by namespace (-1 for all)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
aggregate_byNoAggregate results by: 'user', 'page', or 'type'. Returns counts instead of raw changes. Recommended for large result sets.
continue_fromNoContinue token for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
changesNo
has_moreYes
aggregatedNo
continue_fromNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context beyond that: aggregate_by changes the return type to counts instead of raw changes, and the RETURNS section describes the shape (timestamps, users, summaries). It stops short of auth, rate-limit or pagination-behavior disclosure, hence a 4 rather than 5.

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 the purpose, then structured USE WHEN / NOT FOR / PARAMETERS / RETURNS sections. Every sentence earns its place and the routing information comes before the parameter recap.

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 an 8-parameter read tool with an output schema present, all the agent needs is here: purpose, triggers, alternatives and filter semantics. Return values are additionally summarized even though the output schema already carries them.

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 every parameter is already documented in the schema, including defaults, ISO 8601 format and the aggregate_by recommendation. The description largely restates those same parameters without adding syntax or constraints beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get recent changes across the entire wiki') with explicit scope. It names the sibling tools it is NOT for (mediawiki_get_revisions, mediawiki_get_user_contributions), so an agent can disambiguate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit USE WHEN triggers ('what's been changed recently', 'wiki activity', 'who's been editing') and a NOT FOR section routing to the two correct alternatives. Nothing about when to select this tool is left to inference.

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

mediawiki_get_revisionsA
Read-only

Get revision history for a specific page.

USE WHEN: User asks "who edited the FAQ", "show edit history of X", "when was this page last changed".

NOT FOR: Wiki-wide activity (use mediawiki_get_recent_changes). Not for comparing versions (use mediawiki_compare_revisions).

PARAMETERS:

  • title: Page name (required)

  • limit: Max revisions (default 50)

  • start, end: Time range (ISO 8601)

  • user: Filter by user

RETURNS: Revision list with timestamps, users, sizes, and edit summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoUpper time bound (ISO 8601). Returns revisions on or before this timestamp.
userNoFilter to revisions by this user
limitNoMax revisions to return (default 20, max 100)
startNoLower time bound (ISO 8601). Returns revisions on or after this timestamp.
titleYesPage title to get revision history for
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
titleYes
page_idYes
has_moreYes
revisionsYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so safety and side-effect profile are covered. The description adds the return payload shape (timestamps, users, sizes, edit summaries), which is useful but duplicated by the output schema, and it says nothing about pagination behavior or the query cost of wide time ranges. Adequate but not rich beyond the 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?

Front-loaded one-line purpose followed by tight USE WHEN / NOT FOR / PARAMETERS / RETURNS blocks. Every line earns its place and the routing rules appear before the parameter list.

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?

Output schema exists (so return values needn't be re-explained), all six parameters are schema-documented, the sole required parameter is clear, and the when/when-not routing is explicit. An agent has everything needed to select and call this tool correctly.

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

Parameters2/5

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

Schema description coverage is 100%, so the baseline would be 3, but the description actively contradicts the schema: it states 'limit: Max revisions (default 50)' while the schema says default 20, max 100. Misstating a default can cause an agent to size requests incorrectly, which is worse than saying nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource + scope: 'Get revision history for a specific page.' It explicitly names the siblings it must not be confused with (mediawiki_get_recent_changes, mediawiki_compare_revisions), so an agent can discriminate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete trigger phrases under USE WHEN ('who edited the FAQ', 'show edit history of X', 'when was this page last changed') and explicit exclusions under NOT FOR with the correct alternative tool for each case. Nothing is left to inference.

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

mediawiki_get_sectionsA
Read-only

Get page section structure (TOC) or specific section content.

USE WHEN: User asks "what sections does X have", "show the table of contents", "get the Installation section".

NOT FOR: Full page content (use mediawiki_get_page).

PARAMETERS:

  • title: Page name (required)

  • section: Section index to retrieve content (optional; omit for TOC only)

  • format: "wikitext" (default) or "html" (for section content)

RETURNS: Section headings with indices, or specific section content.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesPage title to get sections from
formatNoOutput format for section content: 'wikitext' (default) or 'html'
sectionNoSpecific section number to retrieve content for (0 = intro, 1+ = sections). Omit to list all sections.
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
formatNo
messageNo
page_idYes
sectionsNo
section_titleNo
section_contentNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is carried structurally; the description adds only a RETURNS line. It leaves the idempotentHint=false unexplained (a read that is flagged non-idempotent is worth a note), and says nothing about pagination or size limits. Modest added value over 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?

Front-loaded purpose, then labeled USE WHEN / NOT FOR / PARAMETERS / RETURNS blocks. Every line earns its place with no redundant prose.

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 an output schema present and annotations covering read-only/open-world behavior, the description need not explain return values, and it correctly focuses on routing. The only gap is the unremarked non-idempotent flag and absent mention of the rationale audit parameter.

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 restates title, section, and format without adding syntax or semantics the schema lacks – the '0 = intro, 1+ = sections' indexing detail lives in the schema, not the description. The rationale param is not mentioned at all, though the schema documents 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?

States a specific verb and resource ('Get page section structure (TOC) or specific section content') with two clearly delineated modes. It explicitly names the sibling it is not (mediawiki_get_page for full content), so an agent can distinguish it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit USE WHEN block gives concrete user phrasings ('what sections does X have', 'show the table of contents', 'get the Installation section'), and a NOT FOR block routes full-page requests to mediawiki_get_page. When-to-use and when-not-to-use are both covered.

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

mediawiki_get_stale_pagesA
Read-only

Find pages that haven't been edited in a specified number of days.

USE WHEN: User asks "find outdated pages", "which pages need review", "show stale content", "wiki hygiene check".

NOT FOR: Recent activity (use mediawiki_get_recent_changes). Not for orphaned pages (use mediawiki_find_orphaned_pages).

PARAMETERS:

  • days: Staleness threshold in days (default 90)

  • category: Limit to pages in this category (optional)

  • namespace: Namespace to check (default 0 = main)

  • limit: Max pages to return (default 50, max 200)

RETURNS: Stale pages sorted by last edit (oldest first), with days since edit and last editor.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoPages not edited in this many days (default 90)
limitNoMax pages to return (default 50, max 200)
categoryNoLimit to pages in this category
namespaceNoNamespace to check (default 0 = main)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
stale_countYes
stale_pagesYes
total_scannedYes
days_thresholdYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety profile is covered. The description adds useful context: default threshold of 90 days, sort order (oldest first), and returned fields (days since edit, last editor), which annotations don't convey. It doesn't mention rate limits or auth, but that's a minor gap given annotation coverage.

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 purpose sentence, then USE WHEN, NOT FOR, PARAMETERS, and RETURNS sections. Every line is scannable and earns its place; no repetition 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 read-only list tool with an output schema covering return values, this is nearly complete: purpose, routing, params, and return summary are all present. It omits any mention of the rationale audit parameter and doesn't state pagination behavior, but those are minor given the output schema and 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 description coverage is 100%, so baseline is 3. The description goes slightly beyond by restating parameter meanings and defaults coherently in one block, but adds no syntax or format details not already in the schema. Note: rationale parameter is absent from the description entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource+scope: find pages not edited in a specified number of days. It clearly distinguishes itself from siblings by naming both mediawiki_get_recent_changes and mediawiki_find_orphaned_pages as alternatives.

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?

Explicit USE WHEN triggers are given with quoted user phrasings, and NOT FOR exclusions name the exact alternative tools for adjacent use cases. This is textbook routing guidance.

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

mediawiki_get_user_contributionsA
Read-only

Get all edits made by a specific user.

USE WHEN: User asks "what did John edit", "show user's contributions", "list edits by admin".

NOT FOR: Page-specific history (use mediawiki_get_revisions). Not for wiki-wide activity (use mediawiki_get_recent_changes).

PARAMETERS:

  • user: Username (required)

  • limit: Max contributions (default 50)

  • start, end: Time range (ISO 8601)

  • namespace: Filter by namespace

RETURNS: List of pages edited with timestamps and summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoUpper time bound (ISO 8601). Returns contributions on or before this timestamp.
userYesUsername to get contributions for
limitNoMax contributions to return (default 50, max 500)
startNoLower time bound (ISO 8601). Returns contributions on or after this timestamp.
namespaceNoFilter by namespace (-1 for all)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
userYes
countYes
has_moreYes
contributionsYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint=false, so the safety profile is covered structurally. The description adds a RETURNS line and parameter behavior, but since an output schema exists that return summary is largely redundant and the description adds little behavioral context beyond annotations. Adequate, not rich.

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 the core verb, then clearly labeled USE WHEN / NOT FOR / PARAMETERS / RETURNS sections. No filler sentences; every line carries routing or parameter information.

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?

With annotations covering safety, a full input schema, and an output schema handling return values, the description supplies everything else needed: purpose, routing, parameter summary. Nothing an agent needs to invoke correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including start/end semantics and the namespace=-1 sentinel is already documented in the schema. The description restates the params (and omits the rationale param) without adding format or edge-case meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('all edits made by a specific user'), and explicitly scopes itself against mediawiki_get_revisions and mediawiki_get_recent_changes. An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit USE WHEN trigger phrases and an explicit NOT FOR clause naming the two alternative tools for the confusable cases. This is textbook when/when-not/alternatives routing.

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

mediawiki_get_wiki_infoA
Read-only

Get information about the wiki itself.

USE WHEN: User asks "what wiki is this", "wiki statistics", "MediaWiki version".

PARAMETERS: None

RETURNS: Wiki name, version, statistics (pages, users, edits).

ParametersJSON Schema
NameRequiredDescriptionDefault
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYes
base_urlYes
languageYes
timezoneYes
generatorYes
main_pageYes
site_nameYes
statisticsNo
php_versionYes
article_pathYes
write_api_enabledYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered externally. The description adds nothing behavioral beyond that — no note on caching, freshness, or why an idempotent-looking read is flagged non-idempotent — so it earns only the minimum-plus credit.

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?

Four short labeled lines, front-loaded with purpose before usage and return shape; nothing is wasted. The 'PARAMETERS: None' line is slightly redundant against a schema that carries one optional field, keeping it out of 5 territory.

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-required-parameter read tool with full annotation coverage and an output schema, this tells the agent everything needed: what it returns, when to call it, and that it takes no input. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter (rationale) is fully documented in the schema, which sets the baseline at 3. The description's 'PARAMETERS: None' is a mild imprecision since an optional rationale exists, but it adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get information about the wiki itself') and the RETURNS line enumerates the concrete payload (name, version, statistics). The resource is clearly distinct from page-level siblings like mediawiki_get_page_info or mediawiki_get_page_summary, though no sibling is named explicitly.

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 'USE WHEN' line gives three concrete user phrasings ('what wiki is this', 'wiki statistics', 'MediaWiki version') that map cleanly to this tool. It offers no exclusions or named alternatives, so it stops short of a 5.

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

mediawiki_list_categoriesA
Read-only

List all categories in the wiki.

USE WHEN: User asks "what categories exist", "show all categories", "list available categories".

NOT FOR: Getting pages in a category (use mediawiki_get_category_members).

PARAMETERS:

  • prefix: Filter by category name prefix (optional)

  • limit: Max categories (default 50)

  • continue_from: Pagination token

RETURNS: Category names and page counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum categories to return (default 50, max 500)
prefixNoFilter categories starting with this prefix
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
continue_fromNoContinue token for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
has_moreYes
categoriesYes
continue_fromNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description's behavioral additions (pagination token, returned fields) largely duplicate the schema and output schema, so it adds only modest context beyond structured data.

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?

Front-loaded with the core action, then clearly sectioned into USE WHEN / NOT FOR / PARAMETERS / RETURNS. The PARAMETERS block is redundant against a fully-covered schema, but the overall length is proportionate.

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 an output schema present, the description needn't explain return values, and it correctly stays brief on that front while covering usage and routing. Nothing an agent needs to invoke this correctly appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents limit, prefix, continue_from and rationale. The PARAMETERS section restates the same facts (default 50, pagination token) without adding syntax, format, or interaction details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all categories in the wiki') and explicitly names the sibling it is not for (mediawiki_get_category_members). An agent can distinguish this from mediawiki_list_pages and mediawiki_manage_categories without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit USE WHEN block with quoted user phrasings and a NOT FOR clause that routes to the correct alternative. Both the when and the when-not conditions are stated outright.

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

mediawiki_list_pagesA
Read-only

List wiki pages with optional prefix filter.

USE WHEN: User asks "list all pages", "show pages starting with API", "what pages exist".

NOT FOR: Finding pages by content (use mediawiki_search).

PARAMETERS:

  • prefix: Filter by title prefix (optional)

  • namespace: Namespace ID (default 0 = main)

  • limit: Max pages (default 50)

  • continue_from: Pagination token from previous response

RETURNS: Page titles and IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum pages to return (default 50, max 500)
prefixNoFilter pages starting with this prefix
namespaceNoNamespace ID (0=main, 1=talk, etc.)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
continue_fromNoContinue token for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
has_moreYes
total_countNo
continue_fromNo
returned_countYes
total_estimateNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety profile is covered. The description adds only that continue_from is a 'pagination token from previous response', which is useful but duplicated in the schema. It does not explain why idempotentHint=false for a read operation (enumeration may change between calls) or any rate/size behavior beyond the default limit.

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?

Well front-loaded: the one-line purpose comes first, then WHEN/NOT-FOR routing, then params and returns. The PARAMETERS and RETURNS sections are partly redundant with the input schema and output schema, which costs it a point, but the layout is scannable and free of filler prose.

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?

Since an output schema exists, the brief RETURNS line is a bonus rather than a requirement, and the routing guidance is complete for a listing tool. Minor gaps: no note on namespace id range/semantics or that large listings should be paged, though continue_from and the default limit are surfaced.

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 PARAMETERS block largely restates the schema (prefix, namespace, limit, continue_from) and omits actual schema detail such as 'max 500' and the namespace examples (0=main, 1=talk). No added semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list wiki pages) with the scoping modifier (optional prefix filter), and explicitly disambiguates from the closest sibling: 'NOT FOR: Finding pages by content (use mediawiki_search).' An agent can distinguish this from the ~40 sibling tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete USE WHEN trigger phrases ('list all pages', 'show pages starting with API') plus an explicit NOT FOR with the named alternative (mediawiki_search). Both the positive and negative routing conditions are covered.

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

mediawiki_list_usersA
Read-only

List wiki users with optional group filtering.

USE WHEN: User asks "who are the admins", "list all users", "show active editors".

PARAMETERS:

  • group: Filter by group - "sysop" (admins), "bureaucrat", "bot" (optional)

  • active_only: Only show recently active users (default false)

  • limit: Max users (default 50)

  • continue_from: Pagination token

RETURNS: User names, groups, edit counts, and registration dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoFilter by user group: 'sysop' (admins), 'bureaucrat', 'bot', or empty for all users
limitNoMaximum users to return (default 50, max 500)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
active_onlyNoOnly return users active in the last 30 days
continue_fromNoContinue token for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
groupNo
usersYes
has_moreYes
total_countYes
continue_fromNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description supplements this with pagination behavior (continue_from token) and the return fields, but says nothing about rate limits, auth requirements, or the meaning of idempotentHint=false for retries.

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?

Header-based sections (USE WHEN / PARAMETERS / RETURNS) front-load the trigger conditions and keep each item short. There is mild duplication of schema and output-schema content, but no wasted prose.

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 an output schema present, the RETURNS line is redundant but harmless; the description covers trigger, parameters, pagination and defaults well. It is slightly incomplete on the rationale/audit parameter and on openWorld implications, which the description never addresses.

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

Parameters3/5

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

Schema description coverage is 100%, and the PARAMETERS block largely restates it (group values, active_only default, limit default, continue token). It adds the parenthetical '(admins)' for sysop, but omits the rationale parameter entirely, so it neither compensates nor adds much beyond the schema 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 a specific verb and resource ('List wiki users') and adds the scoping modifier ('optional group filtering'), which distinguishes it from the user-contribution and page-listing siblings. An agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE WHEN' block gives three concrete trigger phrasings ('who are the admins', 'list all users', 'show active editors') that map cleanly to the group/active_only parameters. It does not name an explicit alternative or exclusion (e.g. vs. get_user_contributions), so it stops short of a 5.

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

mediawiki_manage_categoriesA
Destructive

Add or remove categories from a page without editing the full content.

USE WHEN: User says "add category X to this page", "remove this from category Y", "categorize this page".

NOT FOR: Listing categories (use mediawiki_list_categories). Not for viewing category members (use mediawiki_get_category_members).

PARAMETERS:

  • title: Page name (required)

  • add: Array of category names to add (without "Category:" prefix)

  • remove: Array of category names to remove (without "Category:" prefix)

  • preview: Preview changes without saving. Omit to preview (default true, for safety); set preview=false to apply.

  • summary: Edit summary

RETURNS: Which categories were added, removed, already present, or not found. Includes revision ID, diff URL, and undo instructions.

NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
addNoCategory names to add (without 'Category:' prefix)
titleYesPage title to manage categories for
removeNoCategory names to remove (without 'Category:' prefix)
previewNoPreview changes without applying them. Omitted means preview (the safe default): the category edit is not saved and the planned add/remove set is returned. Set false to apply the change.
summaryNoEdit summary
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoNo
addedNo
titleYes
messageYes
previewYes
removedNo
successYes
revisionNo
not_foundNo
revision_idNo
already_presentNo
current_categoriesYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses beyond the annotations: that preview defaults to true for safety, that authentication (bot password) is required to apply, and that anonymous sessions cannot edit. Annotations cover the safety profile (destructiveHint true, idempotentHint false); the description adds the auth requirement and the default-preview behavior, which the agent needs to invoke correctly.

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?

Front-loaded with the core action, then structured USE WHEN / NOT FOR / NOTE blocks. Slightly dense with the RETURNS and NOTE sections, but each carries an agent-relevant fact.

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?

Complete for a mutation tool: states the when/when-not, auth requirements, the safe default behavior for preview, and what gets returned (added/removed/already present/not found). Output schema exists, yet the description still gives the agent enough to decide and call 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?

Schema coverage is 100%, so baseline is 3. The description adds the 'without Category: prefix' convention and emphasizes the preview default and its rationale, plus notes the required rationale parameter's audit purpose. Marginal but genuine 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?

Specific verb+resource ('Add or remove categories from a page') with an explicit scoping qualifier ('without editing the full content') that distinguishes it from the sibling mediawiki_edit_page. Clearly names the resource and the operation.

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?

Provides explicit USE WHEN triggers with user phrasings and a NOT FOR section that names two alternative siblings (mediawiki_list_categories, mediawiki_get_category_members) with their distinct purposes. Routing is unambiguous.

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

mediawiki_move_pageA
Destructive

Move (rename) a wiki page. Creates a redirect from the old title.

USE WHEN: User says "rename the page", "move X to Y", "change the page title".

NOT FOR: Editing page content (use mediawiki_edit_page or mediawiki_find_replace).

PARAMETERS:

  • from: Current page title (required)

  • to: New page title (required)

  • reason: Reason for the move (optional)

  • no_redirect: Don't create redirect from old title (default false)

  • move_talk: Also move the talk page (default true)

  • move_subpages: Also move subpages (default false)

RETURNS: Includes revision ID, diff URL, and undo instructions.

WARNING: Requires authentication (bot password) and move permissions. Creates a redirect from the old title by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesNew page title
fromYesCurrent page title
reasonNoReason for the move
move_talkNoAlso move the talk page if it exists (default true)
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.
no_redirectNoDon't create a redirect from the old title (requires suppressredirect right)
move_subpagesNoAlso move subpages if they exist

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
fromYes
reasonNo
messageYes
successYes
talk_movedNo
redirect_urlNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description adds substantive context beyond them: the default redirect creation, the required authentication (bot password) and move permissions, and that the result includes revision ID, diff URL and undo instructions. This is exactly the extra behavioral detail the annotations cannot carry.

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 the core action, then cleanly sectioned into USE WHEN / NOT FOR / PARAMETERS / RETURNS / WARNING. Every line adds an actionable fact with no filler.

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 destructive, auth-gated mutation tool the definition covers side effects, permissions, defaults, alternatives and return shape; with an output schema present it does not need to enumerate return fields. An agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including defaults, making the PARAMETERS list largely redundant (baseline 3). The description also omits the required 'rationale' parameter entirely, a small gap against the schema's audit-log intent field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Move (rename) a wiki page') and immediately clarifies the side effect ('Creates a redirect from the old title'). The NOT FOR clause routes the agent to the correct siblings for content edits, so it is distinguishable from mediawiki_edit_page without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit USE WHEN block gives triggering user phrases, and a NOT FOR block names alternatives (mediawiki_edit_page, mediawiki_find_replace) with the condition that selects them. Nothing is left to inference.

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

mediawiki_parseA
Read-only

Parse wikitext and return rendered HTML.

USE WHEN: User wants to preview wikitext rendering, test markup syntax.

PARAMETERS:

  • wikitext: Wikitext content to parse (required)

  • title: Context page title for link resolution (optional)

RETURNS: Rendered HTML output.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoPage title for context (affects template expansion)
wikitextYesWikitext content to parse
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
htmlYes
linksNo
messageNo
truncatedNo
categoriesNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds that output is rendered HTML, but since an output schema exists this is largely redundant, and it does not explain the non-idempotent behavior (template/parser-dependent output) that the annotation flags.

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 USE WHEN / PARAMETERS / RETURNS sections are front-loaded and easy to scan, with one line each. The RETURNS line duplicates an existing output schema, which is the only real waste.

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 one required param, 100% schema coverage, and an output schema in place, the description covers purpose, usage, parameters, and return type adequately. It is complete for a parsing tool, with only the non-idempotent behavior left undescribed.

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 restates both parameters but adds only a marginal gloss ('title: context page title for link resolution') that is slightly inconsistent with the schema wording ('affects template expansion').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+output: 'Parse wikitext and return rendered HTML.' This clearly separates it from conversion siblings like mediawiki_convert_markdown or mediawiki_apply_formatting, which transform rather than render. It stops short of naming a sibling explicitly, so it lands at 4 rather than 5.

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 'USE WHEN: preview wikitext rendering, test markup syntax' line gives concrete, actionable context for selecting this tool. However, it offers no when-not guidance and no named alternative for related tasks (e.g. rendering vs converting), so it stays at 4.

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

mediawiki_resolve_titleA
Read-only

RECOVERY tool when page not found due to case sensitivity or typos.

USE WHEN: User got "page not found" and suspects wrong capitalization or spelling. E.g., "module overview" should be "Module Overview".

NOT FOR: Finding pages about a topic (use mediawiki_search instead).

PARAMETERS:

  • title: Approximate page name (required)

  • fuzzy: Enable fuzzy matching for typos (default true)

  • max_results: Max suggestions (default 5)

RETURNS: Suggested correct page titles with confidence scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
fuzzyNoEnable fuzzy matching for similar titles
titleYesPage title to resolve (can be inexact)
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
max_resultsNoMax suggestions to return (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
page_idNo
exact_matchYes
suggestionsNo
resolved_titleNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds that this is a fallback/recovery path used after a failure rather than a primary lookup, plus that it returns ranked suggestions with confidence scores, which explains why idempotentHint=false (fuzzy matching can vary). It does not mention rate limits or auth needs, but that gap is minor given the annotation coverage.

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?

Labeled sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS) make it scannable, and the recovery framing is front-loaded in the first line. Every line carries information; there is no padding 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?

An output schema exists, so return values need only the summary given. With annotations covering the safety profile, description covering selection guidance, and schema covering parameters, an agent has everything needed to decide when to call this and how.

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, but the description adds a non-obvious fact the schema omits: fuzzy defaults to true. It also glosses each parameter in plain language. It never mentions the rationale audit parameter, though the schema documents it, which keeps this short of 5.

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?

Opens with a specific functional framing ('RECOVERY tool when page not found due to case sensitivity or typos') that names both the action (resolve) and the triggering condition. It is immediately distinguishable from mediawiki_search and mediawiki_find_similar_pages.

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?

Explicit USE WHEN clause with a concrete example ('module overview' -> 'Module Overview') and an explicit NOT FOR clause routing topical lookups to mediawiki_search. The when/when-not/alternative triad is fully covered.

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

mediawiki_search_and_readA
Read-only

Search wiki AND read the top result(s) in a single call.

USE WHEN: User asks a question about wiki content. This is the fastest path from question to answer — eliminates the search-then-read round trip.

NOT FOR: Known page titles (use mediawiki_get_page directly). Not for listing search results without reading (use mediawiki_search).

PARAMETERS:

  • query: Search text (required)

  • read_count: How many top results to read (default 1, max 5)

  • format: "wikitext" (default) or "html"

RETURNS: Full content of top result(s) plus remaining search hits as summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text
formatNoContent format: 'wikitext' (default) or 'html'
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
read_countNoNumber of top results to read (default 1, max 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
queryYes
messageYes
other_hitsNo
total_hitsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint=false, so the safety profile is covered. The description adds genuine context beyond that: it explains the round-trip elimination and what content comes back (full top result(s) plus remaining hits as summaries), though it says nothing about rate limits, large-page behavior, or why idempotency does not hold.

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?

Headers and front-loading are excellent: purpose first, then when, then anti-patterns, then params, then returns. The PARAMETERS block duplicates schema content that the schema already supplies, which is the only notable waste.

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?

With an output schema present, annotations covering safety, and 100% schema description coverage, the description supplies everything else an agent needs: purpose, selection criteria, alternatives, and a return summary. Nothing material is missing for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so both the parameters and their descriptions are already documented in structured form; the description's PARAMETERS block largely restates defaults and bounds (read_count max 5, format wikitext default) that the schema carries. Baseline 3 is appropriate — no added syntax or edge-case semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific compound verb+resource: 'Search wiki AND read the top result(s) in a single call.' It explicitly distinguishes itself from mediawiki_search and mediawiki_get_page, so an agent can place it against siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit USE WHEN condition (user asks a question about wiki content) and a NOT FOR clause naming two alternatives by name with the conditions that select them (known titles, listing without reading). Nothing is left to inference.

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

mediawiki_search_in_fileA
Read-only

Search for text within wiki-hosted files (PDFs, text files).

USE WHEN: User asks "search the PDF for X", "find X in the uploaded document".

NOT FOR: Searching wiki pages (use mediawiki_search or mediawiki_search_in_page).

PARAMETERS:

  • filename: File name on wiki (required)

  • query: Text to search for (required)

RETURNS: Matches with page numbers (for PDFs) or line numbers.

NOTE: Supports text-based PDFs and text files (TXT, MD, CSV, JSON, XML, HTML). Scanned/image PDFs require OCR and are not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to search for in the file
filenameYesFile page name (e.g., 'File:Report.pdf' or just 'Report.pdf')
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchesYes
messageNo
filenameYes
file_typeYes
searchableYes
match_countYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond them: which file formats are supported and that scanned/image PDFs require OCR and are unsupported, which is a real capability limit an agent must know before promising a result. It does not explain the idempotentHint=false annotation, which is the one remaining unexplained behavioral trait.

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 purpose sentence, then labeled USE WHEN / NOT FOR / RETURNS / NOTE blocks that an agent can scan selectively. Every sentence carries distinct information; no repetition of the schema fields beyond a one-line list.

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?

An output schema exists, so the RETURNS line (page numbers for PDFs, line numbers otherwise) is a bonus rather than a necessity, and the format limitations plus the two hard exclusions cover what an agent needs to call this correctly. No prerequisites or auth requirements are omitted that would block a correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so both required parameters and the optional rationale are already documented in the schema, including the 'File:Report.pdf' vs 'Report.pdf' filename format. The description's brief repetition of filename/query adds no syntax or format detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('search for text within wiki-hosted files') and immediately scopes it to files rather than pages. The FORMATS NOTE reinforces the resource boundary (PDFs, TXT, MD, CSV, JSON, XML, HTML). An agent can distinguish it from mediawiki_search and mediawiki_search_in_page without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit USE WHEN with quoted user phrasings ('search the PDF for X') and an explicit NOT FOR clause that names the two alternatives to use instead. Nothing is left to inference about routing between the three search tools.

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

mediawiki_search_in_pageA
Read-only

Search WITHIN a known page (not across wiki).

USE WHEN: User says "find X on page Y", "does page Y mention X", "search for X in the Configuration page".

NOT FOR: Finding which page contains info (use mediawiki_search instead).

PARAMETERS:

  • title: Page name (required)

  • query: Text to find (required)

  • use_regex: Enable regex matching (optional)

  • context_lines: Lines of context around matches (default 2)

RETURNS: Matches with line numbers and surrounding context.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to search for
titleYesPage title to search in
rationaleNoOptional one-sentence explanation of why you are calling this tool. Used for audit trails when present.
use_regexNoTreat query as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars.
context_linesNoLines of context around matches (default 2)

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
titleYes
matchesYes
match_countYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds the return shape (matches with line numbers and context), which is useful, but it does not explain the non-idempotent hint or any permission/rate-limit behavior. Modest added value over 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?

Front-loaded with the core distinction, then cleanly sectioned USE WHEN / NOT FOR / PARAMETERS / RETURNS. Every line carries information and nothing is padded.

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?

An output schema exists, so return values needn't be explained, yet the description still summarizes them briefly. Scope, alternative routing, and parameter defaults are all present for what is essentially a scoped search 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 description coverage is 100% and the schema descriptions are actually richer (e.g., the RE2 regex escaping rules and 500-char limit for use_regex) than the brief parameter list in the description. The description restates parameters rather than adding meaning, so the baseline 3 applies; it also omits the 'rationale' parameter entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope ('Search WITHIN a known page (not across wiki)') and immediately contrasts it with the sibling mediawiki_search. An agent can distinguish it from mediawiki_search, mediawiki_search_in_file, and mediawiki_find_replace without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit USE WHEN examples ('find X on page Y') and an explicit NOT FOR clause that names the alternative tool (mediawiki_search) for the cross-wiki case. When-to-use, when-not-to-use, and the alternative are all stated.

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

mediawiki_upload_fileA
Destructive

Upload a file to the wiki from base64 bytes or a URL.

USE WHEN: User says "upload this image", "add file to wiki", "import document".

PARAMETERS:

  • filename: Target filename on wiki (required)

  • file_data: Base64-encoded file contents (one of file_data or file_url required). Use this when you already have the bytes; it skips the URL-fetch path. Mutually exclusive with file_url.

  • file_url: Source URL for the wiki to fetch (alternative to file_data). Mutually exclusive with file_data.

  • text: File description page content (optional)

  • comment: Upload comment (optional)

  • ignore_warnings: Overwrite existing file (default false)

RETURNS: Upload status and file page URL. Includes revision ID, diff URL, and undo instructions.

NOTE: Requires authentication. For file_url, the URL must be publicly accessible.

SECURITY: file_data uploads bytes directly and never triggers a server-side fetch, so the allowlist/SSRF gates do not apply to that path. For file_url, the source host must be on the MEDIAWIKI_UPLOAD_ALLOWED_DOMAINS env-var allowlist (fail-closed when unset), and private/internal IPs are blocked unconditionally. Decoded file_data is capped at 100 MiB by default — matching MediaWiki's default max upload size — and is adjustable via MEDIAWIKI_MAX_UPLOAD_DATA_BYTES. ignore_warnings=true overwrites existing files; the destructive-hint annotation is set so hosts that gate destructive operations will prompt before this runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoFile description page content (wikitext)
commentNoUpload comment for the log
file_urlNoURL to fetch and upload. Mutually exclusive with file_data.
filenameYesTarget filename on the wiki (e.g., 'Example.png')
file_dataNoBase64-encoded file contents to upload directly (standard base64, RFC 4648). Use this for files the agent already has — it avoids the URL-fetch path and its allowlist/SSRF gates. Mutually exclusive with file_url.
file_pathNoLocal file path to upload (rejected via MCP; CLI use FileData)
rationaleYesRequired one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.
ignore_warningsNoIgnore duplicate/overwrite warnings

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
sizeNo
messageYes
page_idNo
successYes
filenameYes
warningsNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: authentication requirement, fail-closed SSRF/allowlist behavior for file_url, the fact that file_data skips the fetch path, a 100 MiB decode cap and its env-var override, and explicit overwrite semantics for ignore_warnings. This is far richer than the destructive/openWorld hints alone.

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?

Labelled sections (USE WHEN, PARAMETERS, RETURNS, NOTE, SECURITY) make it easy to scan and front-load the essential action. It is slightly long and repeats some parameter text already in the schema, but nothing is truly wasteful.

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?

An output schema exists, yet the description still summarizes the return (status, file page URL, revision ID, diff URL) and covers auth, security gates, and size limits. Nothing needed to invoke this 8-param mutation tool correctly is missing.

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 the baseline is 3, but the description adds genuine meaning: it explains when to prefer file_data over file_url and that they are mutually exclusive, plus the default for ignore_warnings. It omits file_path (rejected via MCP) and rationale from the prose, keeping it just short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (upload) and resource (file to the wiki) and distinguishes the two source modes (base64 bytes vs URL). An agent can tell this apart from siblings like mediawiki_edit_page or mediawiki_get_images without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE WHEN' block gives concrete user phrases that trigger the tool, and it explains the file_data vs file_url choice with mutual-exclusivity rules. It lacks an explicit 'when not to use' or named alternative tool, but the context is clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.36.0
    • Changedmediawiki_apply_formatting2 fields changed
      • changedInput schema / properties / preview / description
        Previous value: -"Preview changes without saving"New value: +"Preview changes without applying them. Omitted means preview (the safe default): the edit is not saved and the diff is returned. Set false to apply the change."
      • changedInput schema / properties / preview / type
        Previous value: -"boolean"New value: +[
        +  "null",
        +  "boolean"
        +]
    • Changedmediawiki_bulk_replace2 fields changed
      • changedInput schema / properties / preview / description
        Previous value: -"Preview changes without saving"New value: +"Preview changes without applying them. Omitted means preview (the safe default): no page is saved and the per-page diff is returned. Set false to apply the changes across all matched pages."
      • changedInput schema / properties / preview / type
        Previous value: -"boolean"New value: +[
        +  "null",
        +  "boolean"
        +]
    • Changedmediawiki_edit_page5 fields changed
      • addedInput schema / properties / base_timestamp
        Added value: +{
        +  "description": "Timestamp of the revision this edit is based on (from get_page). When set, the wiki rejects the edit with an editconflict error if someone else edited the page in the meantime, instead of silently overwriting their change",
        +  "type": "string"
        +}
      • addedInput schema / properties / preview
        Added value: +{
        +  "description": "Preview changes without saving. Omitted means preview (the safe default): the edit is not saved, no token is consumed, and a line diff against the current revision is returned. Set false to apply the edit.",
        +  "type": [
        +    "null",
        +    "boolean"
        +  ]
        +}
      • addedOutput schema / properties / changes
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "after": {
        +        "type": "string"
        +      },
        +      "before": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "string"
        +      },
        +      "line": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "line",
        +      "before",
        +      "after"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • addedOutput schema / properties / preview
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "title",
        -  "page_id",
        -  "revision_id",
        -  "new_page",
        -  "message"
        -]New value: +[
        +  "success",
        +  "title",
        +  "page_id",
        +  "revision_id",
        +  "new_page",
        +  "message",
        +  "preview"
        +]
    • Changedmediawiki_find_replace2 fields changed
      • changedInput schema / properties / preview / description
        Previous value: -"Preview changes without saving"New value: +"Preview changes without applying them. Omitted means preview (the safe default): the edit is not saved and the diff is returned. Set false to apply the change."
      • changedInput schema / properties / preview / type
        Previous value: -"boolean"New value: +[
        +  "null",
        +  "boolean"
        +]
    • Changedmediawiki_manage_categories2 fields changed
      • changedInput schema / properties / preview / description
        Previous value: -"Preview changes without saving"New value: +"Preview changes without applying them. Omitted means preview (the safe default): the category edit is not saved and the planned add/remove set is returned. Set false to apply the change."
      • changedInput schema / properties / preview / type
        Previous value: -"boolean"New value: +[
        +  "null",
        +  "boolean"
        +]
    • Changedmediawiki_search1 field changed
      • addedOutput schema / properties / results / items / properties / url
        Added value: +{
        +  "type": "string"
        +}
    • Changedmediawiki_search_and_read1 field changed
      • addedOutput schema / properties / other_hits / items / properties / url
        Added value: +{
        +  "type": "string"
        +}
  2. 5 tool updatesv1.32.0
    • Changedmediawiki_edit_page6 fields changed
      • addedInput schema / properties / captcha_id
        Added value: +{
        +  "description": "CAPTCHA ID from a previous failed attempt, required when answering a CAPTCHA",
        +  "type": "string"
        +}
      • addedInput schema / properties / captcha_word
        Added value: +{
        +  "description": "User-provided answer to the CAPTCHA challenge",
        +  "type": "string"
        +}
      • addedOutput schema / properties / captcha_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / captcha_question
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / captcha_type
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / page_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedmediawiki_get_recent_changes2 fields changed
      • changedInput schema / properties / end / description
        Previous value: -"End timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns changes on or before this timestamp."
      • changedInput schema / properties / start / description
        Previous value: -"Start timestamp (ISO 8601)"New value: +"Lower time bound (ISO 8601). Returns changes on or after this timestamp."
    • Changedmediawiki_get_revisions2 fields changed
      • changedInput schema / properties / end / description
        Previous value: -"End at this timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns revisions on or before this timestamp."
      • changedInput schema / properties / start / description
        Previous value: -"Start from this timestamp (ISO 8601, newer first)"New value: +"Lower time bound (ISO 8601). Returns revisions on or after this timestamp."
    • Changedmediawiki_get_user_contributions2 fields changed
      • changedInput schema / properties / end / description
        Previous value: -"End at this timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns contributions on or before this timestamp."
      • changedInput schema / properties / start / description
        Previous value: -"Start from this timestamp (ISO 8601, newer first)"New value: +"Lower time bound (ISO 8601). Returns contributions on or after this timestamp."
    • Changedmediawiki_upload_file3 fields changed
      • addedInput schema / properties / file_data
        Added value: +{
        +  "description": "Base64-encoded file contents to upload directly (standard base64, RFC 4648). Use this for files the agent already has — it avoids the URL-fetch path and its allowlist/SSRF gates. Mutually exclusive with file_url.",
        +  "type": "string"
        +}
      • changedInput schema / properties / file_path / description
        Previous value: -"Local file path to upload"New value: +"Local file path to upload (rejected via MCP; CLI use FileData)"
      • changedInput schema / properties / file_url / description
        Previous value: -"URL to fetch and upload (alternative to file_path)"New value: +"URL to fetch and upload. Mutually exclusive with file_data."
  3. 42 tool updatesv1.31.0
    • Changedmediawiki_apply_formatting2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "text",
        -  "format"
        -]New value: +[
        +  "rationale",
        +  "title",
        +  "text",
        +  "format"
        +]
    • Changedmediawiki_audit1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_batch_get_pages1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_batch_get_pages_info1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_bulk_replace2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "find",
        -  "replace"
        -]New value: +[
        +  "rationale",
        +  "find",
        +  "replace"
        +]
    • Changedmediawiki_check_links1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_check_terminology1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_check_translations1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_compare_revisions1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_compare_topic1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_edit_page2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "content"
        -]New value: +[
        +  "rationale",
        +  "title",
        +  "content"
        +]
    • Changedmediawiki_find_broken_internal_links1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_find_orphaned_pages1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_find_replace2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "find",
        -  "replace"
        -]New value: +[
        +  "rationale",
        +  "title",
        +  "find",
        +  "replace"
        +]
    • Changedmediawiki_find_similar_pages1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_backlinks1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_category_members1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_external_links1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_external_links_batch1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_images1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_page1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_page_info1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_page_summary1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_recent_changes1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_related1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_revisions1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_sections1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_stale_pages1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_user_contributions1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_get_wiki_info1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "rationale": {
        +    "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +    "type": "string"
        +  }
        +}
    • Changedmediawiki_list_categories1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_list_pages1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_list_users1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_manage_categories2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title"
        -]New value: +[
        +  "rationale",
        +  "title"
        +]
    • Changedmediawiki_move_page2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "from",
        -  "to"
        -]New value: +[
        +  "rationale",
        +  "from",
        +  "to"
        +]
    • Changedmediawiki_parse1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_resolve_title1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_search1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_search_and_read1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_search_in_file1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_search_in_page1 field changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.",
        +  "type": "string"
        +}
    • Changedmediawiki_upload_file2 fields changed
      • addedInput schema / properties / rationale
        Added value: +{
        +  "description": "Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filename"
        -]New value: +[
        +  "rationale",
        +  "filename"
        +]
  4. 8 tool updatesv1.30.0
    • Addedmediawiki_audit
    • Addedmediawiki_batch_get_pages
    • Addedmediawiki_batch_get_pages_info
    • Addedmediawiki_get_page_summary
    • Addedmediawiki_get_stale_pages
    • Addedmediawiki_manage_categories
    • Addedmediawiki_move_page
    • Addedmediawiki_search_and_read
  5. 35 tool updates
    • First observedmediawiki_apply_formatting
    • First observedmediawiki_bulk_replace
    • First observedmediawiki_check_links
    • First observedmediawiki_check_terminology
    • First observedmediawiki_check_translations
    • First observedmediawiki_compare_revisions
    • First observedmediawiki_compare_topic
    • First observedmediawiki_convert_markdown
    • First observedmediawiki_edit_page
    • First observedmediawiki_find_broken_internal_links
    • First observedmediawiki_find_orphaned_pages
    • First observedmediawiki_find_replace
    • First observedmediawiki_find_similar_pages
    • First observedmediawiki_get_backlinks
    • First observedmediawiki_get_category_members
    • First observedmediawiki_get_external_links
    • First observedmediawiki_get_external_links_batch
    • First observedmediawiki_get_images
    • First observedmediawiki_get_page
    • First observedmediawiki_get_page_info
    • First observedmediawiki_get_recent_changes
    • First observedmediawiki_get_related
    • First observedmediawiki_get_revisions
    • First observedmediawiki_get_sections
    • First observedmediawiki_get_user_contributions
    • First observedmediawiki_get_wiki_info
    • First observedmediawiki_list_categories
    • First observedmediawiki_list_pages
    • First observedmediawiki_list_users
    • First observedmediawiki_parse
    • First observedmediawiki_resolve_title
    • First observedmediawiki_search
    • First observedmediawiki_search_in_file
    • First observedmediawiki_search_in_page
    • First observedmediawiki_upload_file

TDQS

A3.9/5.0

Scored across 43 tools

Disambiguation4/5

The descriptions are unusually explicit, using USE WHEN and NOT FOR clauses to route between near-pairs (get_page vs get_page_summary vs get_sections vs get_page_info; search vs search_in_page vs search_in_file; find_replace vs bulk_replace; get_related vs find_similar_pages). The single-vs-batch variants (get_external_links/get_external_links_batch, get_page_info/batch_get_pages_info) are clearly demarcated. The only residual ambiguity is the dense cluster of page-content readers where overlap is inherent.

Naming Consistency4/5

Almost everything follows a predictable mediawiki_verb_noun snake_case pattern (list_pages, get_revisions, check_links, find_replace). The main blemish is inconsistent placement of the 'batch' qualifier: batch_get_pages (prefix) versus get_external_links_batch (suffix). Naming is still highly readable and uniform overall.

Tool Count2/5

At 43 tools the surface is well beyond the 25+ threshold for 'too many,' and there is real redundancy: single-vs-batch duplicates (get_external_links/get_external_links_batch, get_page_info/batch_get_pages_info), four overlapping content readers, and four search variants. Each tool is individually reasonable, but the set could be consolidated substantially.

Completeness4/5

Coverage is broad: read/search/edit/replace, categories, moves, uploads, history, terminology and translation checks, and link auditing. Gaps are minor but notable — there is no page-delete or revision-revert/rollback tool, and no protection management. Agents can work around these, so it is not a blocking gap.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers