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 (default true)

  • 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 saving
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.8/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the annotations (which only indicate destructiveHint). It explains the preview behavior ('Set preview=false to apply'), authentication requirements ('Requires authentication (bot password)'), and return details (revision ID, diff URL, undo instructions), providing a thorough understanding of tool behavior.

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 well-organized into clear sections (BEST for, USE WHEN, NOT FOR, PARAMETERS, RETURNS, NOTE) with front-loaded key information. Each sentence serves a purpose without redundancy, achieving high conciseness while covering essential details.

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

Completeness4/5

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

Given the tool's complexity (7 parameters, destructive action, authentication need), the description covers preview behavior, authentication, return values, and examples. However, it omits explicit mention of the 'rationale' parameter, which is a required input. The existence of an output schema is implied but not explicitly described, leaving a minor gap.

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%, but the description adds value by providing concrete examples for the 'format' parameter (e.g., 'bold: \'\'\'text\'\'\''), clarifying default behavior for 'all' and 'preview', and detailing 'preview' and 'summary'. However, the 'rationale' parameter is not explicitly discussed in the description, slightly limiting completeness.

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

Purpose5/5

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

The description clearly states 'BEST for adding formatting markup to specific text,' providing a specific verb and resource. It lists concrete examples of user requests (e.g., 'strike out X') and distinguishes from sibling tool mediawiki_find_replace, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool with a 'USE WHEN' section and provides specific examples. It also includes a 'NOT FOR' section that identifies an alternative tool (mediawiki_find_replace) for replacing text, offering clear guidance on when not to use this tool.

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

mediawiki_auditA
Read-onlyIdempotent

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

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, openWorldHint), the description warns that the 'external' check is slow, and states default checks exclude 'external'. This adds valuable behavioral context.

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

Conciseness5/5

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

Description is well-structured with clear sections (USE WHEN, PARAMETERS, RETURNS), uses bullet points for checks, and is concise with no superfluous text.

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

Completeness4/5

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

Most aspects are covered: when to use, what checks do, return format. However, it omits explanation of optional input parameters (rationale, pages, category) and how the health score is derived, though output schema may cover return format.

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%, but description adds meaning by listing check values with descriptions and providing default/limits for 'limit' parameter. It does not repeat schema details for optional parameters like 'rationale' or 'pages'.

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

Purpose5/5

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

Description clearly states 'Run comprehensive wiki health audit with multiple checks' and enumerates specific check types (links, terminology, orphans, activity, external). It returns a health score and recommendations, distinguishing it from sibling tools that focus on single checks (e.g., mediawiki_check_links).

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?

Explicit 'USE WHEN' trigger phrases are provided (e.g., 'run health check', 'audit the wiki'). It lists check options, implying when to use which, but does not explicitly state when NOT to use this tool in favor of a more specific sibling tool.

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

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, idempotentHint, openWorldHint. The description adds value by explaining that missing pages are reported (not errors) and the format option. This clarifies non-error behavior beyond annotations.

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

Conciseness5/5

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

Description is well-structured with clear sections: main purpose, USE WHEN, NOT FOR, PARAMETERS, RETURNS. Each section is concise and informative, no wasted words.

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

Completeness5/5

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

Given the tool's simplicity and the presence of an output schema, the description covers all essential aspects: when to use, parameter constraints, and return behavior (e.g., missing pages reported). It is fully adequate for an agent to use effectively.

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?

Input schema has 100% coverage with descriptions. The description restates parameter purposes (titles for page list, format for output) and mentions max 50, matching schema. Since schema does the heavy lifting, a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves content from multiple pages. It distinguishes from siblings by mentioning speed advantage over individual calls and explicitly excludes single-page use (mediawiki_get_page) and metadata-only use (mediawiki_batch_get_pages_info).

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' and 'NOT FOR' sections provide clear guidance. 'USE WHEN: You need content from 2+ pages.' 'NOT FOR: Single page (use mediawiki_get_page). Not for metadata only (use mediawiki_batch_get_pages_info).' This effectively steers the agent.

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

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.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description specifies return details (metadata per page, exists=false for missing) and a max of 50 titles.

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

Conciseness5/5

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

Well-structured with clear sections (purpose, when/not for, parameters, returns). Each sentence provides value with no redundancy.

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

Completeness5/5

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

With annotations, output schema, and clear sibling distinctions, the description fully covers usage, parameters, and return behavior for this tool.

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

Parameters4/5

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

Schema coverage is 100% with descriptions; the description adds the max 50 limit for titles, which is not in the schema.

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

Purpose5/5

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

Clearly states 'Get metadata for MULTIPLE pages' and explicitly distinguishes from siblings: 'mediawiki_get_page_info' for single page and 'mediawiki_batch_get_pages' for content.

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 and NOT FOR conditions, directly naming alternative tools for single pages or content retrieval.

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 (ALWAYS use true first!)

  • 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 saving
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.9/5.0
Behavior5/5

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

Annotations already provide destructiveHint=true; description adds crucial details like 'ALWAYS use preview=true first' and authentication requirements, enhancing transparency.

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

Conciseness5/5

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

Well-structured with logical sections: purpose, usage, parameters, warning, return info, note; every sentence adds value and no redundancy.

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

Completeness5/5

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

For a complex destructive tool, the description covers all necessary aspects: purpose, usage context, parameter details, safety warning, authentication, and return info.

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%, but description adds practical advice (e.g., 'ALWAYS use true first!' for preview, explanation of regex escaping) that goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states 'Update text across MULTIPLE pages at once' with a specific verb and resource, and distinguishes from the sibling mediawiki_find_replace tool.

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' and 'NOT FOR' sections, with clear alternatives mentioned (mediawiki_find_replace for single pages).

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

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

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds valuable detail about return values (violations with page, line, wrong term, correct term) and explains the exclude_code_blocks parameter's purpose to avoid false positives, enhancing transparency beyond annotations.

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

Conciseness5/5

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

The description is extremely concise: one sentence for purpose, a USE WHEN line, parameter list, and returns. Every sentence is informative with no redundancy.

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

Completeness4/5

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

Given the tool's simplicity and full schema coverage, the description is complete. It covers purpose, usage, parameters, and output. A small gap is the lack of when-not-to-use guidance, but the annotations and schema fill the rest.

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

Parameters4/5

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

With 100% schema coverage, baseline is 3. The description adds meaning by explaining exclude_code_blocks as avoiding false positives on code paths, which is not evident from the param name alone. This adds 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 starts with a specific verb+resource: 'Scan pages for terminology violations against a glossary.' This clearly distinguishes it from sibling tools like mediawiki_check_links or mediawiki_check_translations.

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

Usage Guidelines4/5

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

The description includes an explicit 'USE WHEN' section with example user queries, providing clear context. However, it does not mention when not to use or suggest alternatives, but the examples sufficiently guide typical usage.

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

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

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns missing translations grouped by language, which is useful but not extensive. No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured with sections for purpose, usage, parameters, and returns. It is concise with no redundant information, using front-loaded key details.

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 6 parameters and a clear use case, the description covers usage scenarios and return format adequately. However, it does not elaborate on pattern options or handle the minor inconsistency in limit default (50 vs 20).

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 parameters. The description provides a concise summary and examples for parameters like languages and pattern, adding marginal value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool finds pages missing translations, with specific verbs 'find' and resource 'pages missing translations'. It distinguishes itself from sibling tools like mediawiki_check_terminology by focusing on translation gaps.

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 provides explicit examples of user queries that trigger this tool, such as 'which pages need German translation'. It offers clear context but does not mention when not to use it or explicitly contrast with alternatives.

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

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.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint. The description adds that the tool returns an HTML-formatted diff with colored additions/deletions, providing useful behavioral context beyond annotations.

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

Conciseness5/5

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

The description is concise, well-structured with clear headings (USE WHEN, NOT FOR, PARAMETERS, RETURNS), and front-loads essential information in two sentences.

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

Completeness5/5

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

Given the tool's moderate complexity, full schema coverage, and presence of output schema and annotations, the description covers all necessary aspects: usage context, parameter roles, return type, and exclusions.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). The description groups parameters with 'OR' logic and clarifies that from_title/to_title use the latest revision, adding meaning beyond the schema descriptions.

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

Purpose5/5

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

The description explicitly states 'Compare two revisions and show the diff' and distinguishes from siblings like mediawiki_get_revisions (for listing) and mediawiki_compare_topic (for comparing across 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?

Clearly states 'USE WHEN' scenarios and 'NOT FOR' cases with specific alternative tool names (mediawiki_get_revisions, mediawiki_compare_topic).

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

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 already declare readOnly, idempotent, and open-world hints. Description adds what the tool returns (page mentions with context, mismatches, inconsistencies), providing behavioral context beyond annotations. No contradiction.

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

Conciseness5/5

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

Description is concise, well-structured with headers (USE WHEN, NOT FOR, PARAMETERS, RETURNS). Every sentence adds value, no redundancy.

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

Completeness5/5

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

Given tool complexity (topic comparison across pages) and existence of output schema (referenced in RETURNS), description covers usage, parameters, and return values completely.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description repeats param info but adds default value for limit and clarifies purpose of category. Adds little beyond schema.

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

Purpose5/5

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

Description opens with clear verb + resource: 'Compare how a topic is described across multiple pages.' It explicitly distinguishes from sibling tool mediawiki_compare_revisions in NOT FOR section.

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?

Has explicit USE WHEN and NOT FOR sections that state when to use and when not to, with a named alternative tool (mediawiki_compare_revisions).

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

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.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate safety. It adds context on themes and options (e.g., add_css, reverse_changelog), which is helpful but not critical beyond annotations.

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

Conciseness5/5

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

The description is well-structured with clear sections (WHEN TO USE, THEMES, OPTIONS, EXAMPLE). Each sentence adds value, no redundancy, and the critical info is front-loaded.

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

Completeness5/5

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

Given the presence of an output schema, the description does not need to detail return values. It covers purpose, usage guidelines, options, and an example, leaving no gaps for a conversion tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining theme options with examples and the example output, which enhances understanding beyond the schema.

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

Purpose5/5

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

The description clearly states it converts Markdown to MediaWiki markup, using a specific verb and resource. It distinguishes itself from siblings like mediawiki_edit_page and mediawiki_parse by focusing solely on format transformation.

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 'WHEN TO USE' section provides explicit scenarios (e.g., converting GitHub docs, README files). However, it does not mention when not to use the tool or suggest alternative siblings.

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)

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

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

WARNING: This overwrites entire page content unless section is specified.

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

Output Schema

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

TDQS

A4.9/5.0
Behavior5/5

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

Expands on annotations (destructiveHint) with warning about overwriting entire content. Discloses authorization needs (bot password) and return value contents (revision ID, diff URL, undo instructions). 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.

Conciseness5/5

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

Well-structured with labeled sections. Core action stated first. Every sentence is informative and non-redundant. Efficient use of space.

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 complexity (mutation tool with 9 params, destructive, auth required), description covers all critical aspects: purpose, usage conditions, behavioral warnings, parameter hints, return info, and constraints. Output schema exists, so return details are sufficient.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). Description adds practical hints for parameters like 'summary: required for good practice' and emphasizes that section must be specified to avoid overwrite, but does not cover all 9 params (e.g., rationale, captcha). Still adds meaningful context above 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?

Clear verb+resource: 'Create new pages or rewrite entire page content.' Distinguishes from siblings with explicit 'NOT FOR' section naming alternatives like mediawiki_find_replace and mediawiki_apply_formatting.

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' and 'NOT FOR' sections provide clear context and exclude alternatives. Mentions authentication requirement for anonymous restrictions.

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

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

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description carries less burden. It adds that the tool returns a 'List of orphaned page titles', which is useful but not extensive behavioral detail.

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

Conciseness5/5

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

The description is concise and well-structured with clear sections (USE WHEN, PARAMETERS, RETURNS). Every sentence adds value without redundancy.

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

Completeness4/5

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

Given that an output schema exists, the description adequately covers purpose, usage cues, and parameter details. It lacks mention of maximum limit (schema says max 200) but is otherwise complete for a simple read-only 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?

Input schema covers all parameters with descriptions (100% coverage). The description repeats parameter info but adds minor context (e.g., default namespace 0, limit default 50). Baseline 3 is appropriate as it does not significantly extend schema meaning.

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

Purpose5/5

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

The description explicitly states the tool's function: 'Find pages with no incoming links from other pages'. This is a specific verb+resource combination that clearly distinguishes it from sibling tools like mediawiki_get_backlinks (which finds backlinks for given pages) and mediawiki_search.

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

Usage Guidelines4/5

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

The description provides a 'USE WHEN' section with example user queries ('find orphan pages', 'which pages have no links'), which guides the agent on appropriate invocation context. However, it does not explicitly mention when not to use it or compare to alternatives.

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 (default true for safety)

  • 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 saving
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.9/5.0
Behavior5/5

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

Goes beyond annotations (destructiveHint=true) by detailing authentication requirements, preview default for safety, return values including match count, revision ID, diff URL, and undo instructions.

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?

Well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS, NOTE), front-loaded purpose, and no unnecessary words. Every sentence adds value.

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

Completeness5/5

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

Covers all aspects: usage, parameters, return values, authentication, and safety. The description is fully self-contained for an agent to use correctly, especially given the tool's complexity and sibling count.

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?

While schema coverage is 100% (baseline 3), the description adds practical context like 'preview: default true for safety' and regex caveats, enhancing understanding 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?

Clearly states it's for simple text changes on a single page, uses specific verbs like 'replace', 'fix', 'change', 'update', and distinguishes from sibling tools like mediawiki_edit_page and mediawiki_bulk_replace.

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

Usage Guidelines5/5

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

Explicitly provides 'USE WHEN' and 'NOT FOR' sections with concrete examples and alternative tools, giving clear guidance on when to use this tool vs others.

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

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.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds value by describing the return content (similarity scores, linking recommendations). It does not conflict with annotations.

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

Conciseness5/5

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

The description is front-loaded with the main purpose, uses clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS), and every sentence is necessary. No wasted words.

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

Completeness5/5

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

The description covers purpose, usage guidance, all parameters, and return value. With output schema available, it provides enough context for an agent to use the tool 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 coverage is 100%, so parameters are well-documented in the schema. The description restates parameter info (e.g., min_score range, limit defaults) without adding significant new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'find' and resource 'pages with similar content', and explicitly calls out 'potential duplicates or overlaps'. It distinguishes from sibling tools like 'mediawiki_get_related' which finds related pages by links.

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' and 'NOT FOR' sections guide when to use the tool and name the alternative tool 'mediawiki_get_related', providing clear usage context.

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

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.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering the safety profile. The description adds no additional behavioral details, but does not contradict annotations. With annotations present, a score of 3 is appropriate as the description adds marginal value 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?

The description is concise with clear sections (purpose, usage, parameters, returns). Every sentence is informative with no wasted words. The structure is well-organized and front-loaded with the core purpose.

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

Completeness5/5

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

Given the tool has a moderate parameter count (5, 1 required), 100% schema coverage, annotations, and an output schema (mentioned in context), the description is complete. It covers purpose, usage, parameters, and return value, leaving no gaps for an agent to understand how to use 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?

The input schema has 100% description coverage, so the baseline is 3. However, the description section provides additional context for each parameter (e.g., 'Category name without "Category:" prefix') that adds meaning beyond the schema's descriptions (which say 'with or without'), earning a 4.

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

Purpose5/5

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

The description clearly states 'Get all pages that belong to a specific category' and distinguishes from the sibling tool 'mediawiki_list_categories' by explicitly stating 'NOT FOR: Listing categories themselves (use mediawiki_list_categories).' This provides a specific verb and resource with clear differentiation.

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

Usage Guidelines5/5

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

The description provides explicit 'USE WHEN' examples and a 'NOT FOR' clause naming the alternative tool, giving clear guidance on when to use this tool vs. alternatives.

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

mediawiki_get_imagesA
Read-onlyIdempotent

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

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly=true, idempotent=true, openWorldHint=true. Description adds valuable context about return types (titles, URLs, dimensions, file sizes), fully aligning with annotations.

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

Conciseness5/5

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

Structured into USE WHEN, PARAMETERS, and RETURNS sections. Every sentence adds value. Concise and well-organized for agent consumption.

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 output schema present and schema coverage 100%, description adds return type details. Sufficient for a straightforward read-only tool with 3 parameters. No gaps identified.

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

Parameters3/5

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

Schema covers all parameters with descriptions (100% coverage). Description restates 'title: Page name (required)' and 'limit: Max images (default 50)', but the schema already includes defaults and constraints. No additional semantic value beyond schema.

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

Purpose5/5

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

Description clearly states 'Get all images and files used on a wiki page.' with specific verb and resource. Usage cues further clarify scope. Distinguishes from sibling tools that handle pages, revisions, categories, etc.

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?

Explicit 'USE WHEN' section provides clear context for agent to select tool. No explicit 'when not to use' or alternatives listed, but the description is sufficient given sibling diversity.

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

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 indicate read-only and idempotent behavior. The description adds important behavioral detail: large pages are truncated at 25KB. This goes beyond what annotations provide, though no additional info on auth or rate limits.

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

Conciseness5/5

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

The description is concise and well-structured: a single-line purpose, then USE WHEN, NOT FOR, and parameter list. Every sentence is necessary and adds value with no redundancy.

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

Completeness5/5

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

Given the complexity (many siblings, output schema exists), the description covers purpose, usage, parameter details, truncation behavior, and fallback advice. It is complete for an agent to select and invoke this tool 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?

Input schema has 100% coverage with descriptions for all three parameters. The description adds minimal extra semantics (e.g., default format 'wikitext'), but mostly restates schema info. Baseline of 3 is appropriate as 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 clearly states 'Retrieve full wiki page content' with a specific verb and resource. It explicitly distinguishes from sibling tools like mediawiki_get_sections, mediawiki_search_in_page, and mediawiki_get_page_info by stating what it is NOT for.

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 and NOT FOR conditions with alternative tool names. Also advises to use mediawiki_resolve_title if title is not found, offering full guidance on when to use this tool vs alternatives.

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

mediawiki_get_page_infoA
Read-onlyIdempotent

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 and idempotentHint. The description adds valuable specifics about what metadata is returned (last edit timestamp, page size, protection status, creator), going beyond annotations.

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

Conciseness5/5

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

Highly concise with structured sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS). Front-loaded with purpose. Every sentence adds value with zero wasted words.

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

Completeness5/5

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

Covers purpose, usage guidance, parameters, and return values. With annotations and output schema present, the description provides sufficient context for correct tool selection and 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% with both parameters described. The description repeats 'title: Page name (required)' which adds no new meaning over the schema's 'Page title'. The optional 'rationale' parameter is not mentioned, but it's self-explanatory. Minimal value added.

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

Purpose5/5

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

The description clearly states 'Get page metadata without content', uses specific verbs and resources, and distinguishes from siblings mediawiki_get_page (content) and mediawiki_get_revisions (edit history). Lists concrete use-case examples.

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?

Includes explicit 'USE WHEN' with example queries and 'NOT FOR' sections naming alternative tools. Provides clear decision criteria for when to use this tool vs siblings.

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

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.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds context: returns lead section, page size, categories, section list, last edit timestamp, and mentions lighter weight for large pages. No contradictions.

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

Conciseness4/5

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

Well-structured with sections, bold headings, and front-loaded key info. Each sentence adds value. Minor redundancy ('much lighter' could be merged), but overall efficient.

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 output schema exists and annotations are present, the description provides comprehensive context: purpose, usage guidelines, return values, and sibling relationships. No gaps for this tool's complexity.

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% (both rationale and title described in detail). Description adds minimal parameter info beyond schema, simply restating that title is required. With high schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it gets the lead section and key metadata, distinguishing from full page retrieval and section access. It uses specific verb 'Get' and resource 'page summary'.

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

Usage Guidelines5/5

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

Explicitly states when to use ('What is X about', 'quick overview') and when not to, with direct references to sibling tools (mediawiki_get_page for full content, mediawiki_get_sections for specific sections).

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

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.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds behavioral context: default limit, aggregation behavior, and response summary. No contradictions.

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

Conciseness5/5

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

The description is well-structured with clear sections (main, USE WHEN, NOT FOR, PARAMETERS, RETURNS). It is concise, front-loaded, and every sentence adds value.

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

Completeness5/5

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

With an output schema present, the description appropriately summarizes return values. It covers purpose, usage, parameters, and output, leaving no important gaps given the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100% with good descriptions. The description adds a PARAMETERS section summarizing key parameters, but adds limited new detail beyond the schema. Still, it helps by grouping and clarifying aggregation behavior.

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

Purpose5/5

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

The description starts with 'Get recent changes across the entire wiki', specifying a clear verb and resource. It lists use-case examples and explicitly distinguishes from siblings like mediawiki_get_revisions and mediawiki_get_user_contributions.

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

Usage Guidelines5/5

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

The description includes 'USE WHEN' and 'NOT FOR' sections with explicit alternative tool names, providing unambiguous guidance on when to use this tool instead of others.

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

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.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns a revision list with timestamps, users, sizes, and edit summaries, which is valuable behavioral context beyond annotations. No contradictions with annotations.

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

Conciseness4/5

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

The description is well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS) and is front-loaded. However, the inaccuracy about the limit default and omission of a parameter prevent a perfect score.

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?

Given the 6 parameters and existence of an output schema, the description covers the core purpose, usage guidelines, and return format. However, the inaccuracy about limit default and missing rationale parameter, along with no mention of openWorldHint implications, leave gaps for a comprehensive understanding.

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 coverage is 100%, so baseline is 3, but the description contains an inaccuracy: it states default limit is 50, while the schema says default 20. It also omits the 'rationale' parameter. This misleads the agent, reducing the score.

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

Purpose5/5

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

The description clearly states 'Get revision history for a specific page' with a specific verb and resource. It explicitly distinguishes from siblings by stating what it is not for and naming alternatives (mediawiki_get_recent_changes, mediawiki_compare_revisions).

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

Usage Guidelines5/5

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

The description provides explicit use cases ('who edited the FAQ', 'show edit history of X') and when not to use it ('Wiki-wide activity', 'comparing versions'), with direct references to alternative tools. This fully guides the agent on proper invocation.

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

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.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds behavioral context: omitting section returns TOC, section=0 is intro, format options (wikitext/html), and the nature of the return value. This supplements the annotations well.

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 divided into clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS). Every sentence adds value, no redundancy. It's concise yet comprehensive.

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

Completeness5/5

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

Given the presence of an output schema, the description does not need to detail return values. It covers all necessary aspects: purpose, usage scenarios, parameter behavior, and differentiation from siblings. No gaps remain.

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%, but the description adds significant usage context: explains conditional behavior (omit section for TOC, section=0 for intro, default format). This goes beyond the schema descriptions and helps the agent understand parameter interactions.

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

Purpose5/5

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

The description clearly states that the tool retrieves page section structure (TOC) or specific section content. It uses specific verbs like 'get' and 'retrieve' and distinguishes from the sibling tool 'mediawiki_get_page' which handles full page content.

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 cases are provided: 'User asks what sections does X have, show table of contents, get the Installation section'. It also explicitly states what NOT to use it for and directs to the appropriate alternative, which is excellent guidance.

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

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.7/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, idempotentHint, openWorldHint. The description adds that results are sorted by last edit (oldest first) with days since edit and last editor, enhancing transparency without contradicting annotations.

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

Conciseness5/5

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

The description is concise and well-structured with clear sections: one-sentence purpose, 'USE WHEN', 'NOT FOR', 'PARAMETERS', 'RETURNS'. No extraneous 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?

Given the tool's moderate complexity, full schema coverage, rich annotations, and presence of an output schema, the description fully covers purpose, usage, parameters, and output format. No gaps.

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?

All 5 parameters have schema descriptions, so baseline is 3. The description adds defaults (days: 90, limit: 50) and constraints (max: 200, default namespace 0), adding value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Find pages that haven't been edited in a specified number of days.' It distinguishes from siblings by explicitly listing use cases and alternatives in 'USE WHEN' and 'NOT FOR' sections.

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

Usage Guidelines5/5

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

The description provides explicit 'USE WHEN' examples (e.g., 'find outdated pages') and 'NOT FOR' directives, referencing specific sibling tools like mediawiki_get_recent_changes and mediawiki_find_orphaned_pages.

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

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.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, and idempotentHint. The description adds that it returns a list of pages with timestamps and summaries, and mentions default/max limits, which complements annotations without contradicting them.

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 well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS), concise without unnecessary words, and front-loaded with the core purpose.

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

Completeness5/5

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

Given the tool is read-only with output schema available, the description covers purpose, usage guidance, parameter details, and return value, making it fully complete for an agent to select and invoke 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 coverage is 100%, so baseline is 3. The description lists parameters with brief explanations (e.g., 'default 50' for limit) but does not add substantial meaning beyond what the schema provides.

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

Purpose5/5

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

The description states 'Get all edits made by a specific user' with a clear verb-resource combination. It explicitly distinguishes from sibling tools by saying 'NOT FOR: Page-specific history (use mediawiki_get_revisions). Not for wiki-wide activity (use mediawiki_get_recent_changes).'

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

Usage Guidelines5/5

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

The description includes a dedicated 'USE WHEN' section listing example user queries and a 'NOT FOR' section with explicit alternative tool names, providing excellent guidance on when and when not to use.

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

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 readOnly and idempotent, so the description adds return value specifics. However, claiming 'PARAMETERS: None' contradicts the schema and misleads about expected inputs, reducing transparency.

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

Conciseness5/5

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

The description is very concise with three lines plus a structured 'USE WHEN' section. No unnecessary verbiage; information is front-loaded.

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 low complexity (no required params, output schema present), the description covers purpose, usage, and return info. It misses mentioning the optional rationale parameter's purpose, but output schema likely covers details.

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 coverage is 100% but the description says 'PARAMETERS: None', which is incorrect given the rationale parameter. This diminishes rather than adds 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?

The description clearly states it retrieves wiki information and gives specific use cases (wiki statistics, version). However, it inaccurately says 'PARAMETERS: None' while the schema includes an optional rationale parameter, slightly clouding the purpose.

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 explicitly lists user queries that trigger this tool, providing clear guidance on when to use it among many sibling tools.

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

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.5/5.0
Behavior4/5

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

Annotations already provide safety hints; description adds return format (category names and page counts) and pagination behavior, exceeding minimal requirement.

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?

Well-organized with sections for usage, parameters, and returns; every sentence adds value and is front-loaded.

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 output schema exists, description covers purpose, usage, parameters, and return format adequately for a simple list tool.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are already clear; description adds no new information beyond listing parameters with minor redundancy.

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

Purpose5/5

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

Clearly states 'List all categories in the wiki' and distinguishes from sibling tool mediawiki_get_category_members.

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 and NOT FOR sections with alternative tool named, providing clear context for selection.

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

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.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint, confirming safe read behavior. The description adds value by explaining pagination via continue_from and stating returns of page titles and IDs, but does not elaborate on rate limits or other side effects beyond annotations.

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

Conciseness5/5

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

The description is concise, well-structured with sections for usage, parameters, and returns. Every sentence serves a purpose without redundancy, and the purpose is front-loaded.

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

Completeness4/5

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

Given the tool has 5 optional parameters, full schema coverage, and an output schema, the description adequately covers pagination and return format. It could be slightly more explicit about pagination iteration, but overall it provides sufficient context 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% with all parameters described. The description restates parameter info in a bullet list, adding marginal value with reminders of defaults (e.g., default 50 for limit), but does not introduce new semantics beyond the schema.

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

Purpose5/5

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

The description clearly states 'List wiki pages' with specific verb and resource, and distinguishes from the sibling tool 'mediawiki_search' by explicitly noting it is not for finding by content. This provides precise purpose differentiation.

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

Usage Guidelines5/5

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

The description includes explicit 'USE WHEN' and 'NOT FOR' sections, giving concrete examples like 'list all pages' and directing to alternatives for content search. This provides clear guidance on tool selection.

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

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

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint. The description adds that it returns user names, groups, edit counts, and registration dates, which is useful beyond annotations.

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

Conciseness5/5

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

The description is well-structured with sections for USE WHEN, PARAMETERS, and RETURNS. Every sentence provides useful information; no fluff.

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

Completeness5/5

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

Given the 5 parameters and presence of output schema, the description fully explains the tool's behavior and return values, leaving no gaps.

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

Parameters4/5

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

Schema coverage is 100% with descriptions. The description adds context like default limit of 50 and that active_only filters for last 30 days, which adds value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists wiki users with optional group filtering, and provides example queries like 'who are the admins'. It is distinct from sibling tools, none of which list users.

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

Usage Guidelines4/5

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

The description explicitly lists use cases (e.g., 'who are the admins', 'list all users') but does not mention when not to use it or provide alternative tools.

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 (default false)

  • 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 saving
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.7/5.0
Behavior4/5

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

Annotations already include destructiveHint, but description adds authentication requirement and preview behavior, though does not detail all edge cases.

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?

Well-organized sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS, NOTE) with no wasted words.

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

Completeness5/5

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

Covers all relevant aspects: purpose, parameters, return values, authentication requirements, and conflicts with siblings; output schema exists.

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%, but description adds clarity (e.g., 'without Category: prefix', default false for preview) and explains the 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?

Clearly states 'Add or remove categories from a page' and distinguishes from listing categories (mediawiki_list_categories) and getting category members (mediawiki_get_category_members).

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

Usage Guidelines5/5

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

Explicitly provides USE WHEN examples ('add category X', 'remove from category Y') and NOT FOR exclusions with sibling tool names.

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.9/5.0
Behavior5/5

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

Discloses side effect (creates redirect), permissions requirement, and default behaviors. Annotations include destructiveHint=true; description does not contradict and adds 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?

Well-structured with a clear purpose, usage guidance, parameter list, return value, and warning. Every section is concise and informative.

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

Completeness5/5

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

Covers all necessary aspects: purpose, usage, parameters, return values, permissions, and side effects. Sufficient for a complex tool with 7 parameters and no output 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%, but description adds value by listing parameters with defaults and practical notes (e.g., 'requires suppressredirect right' for no_redirect).

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?

Explicitly states 'Move (rename) a wiki page' with clear verb and resource. Differentiates from siblings in 'NOT FOR' section by naming mediawiki_edit_page and mediawiki_find_replace.

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 specific 'USE WHEN' examples and a 'NOT FOR' section with explicit alternatives, giving clear guidance on when to use this tool vs others.

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

mediawiki_parseA
Read-onlyIdempotent

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

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and open-world. Description adds that the tool returns rendered HTML and explains the 'title' parameter's effect on template expansion, providing useful behavioral context.

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

Conciseness5/5

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

Description is succinct with clear sections (USE WHEN, PARAMETERS, RETURNS). Every sentence adds value without redundancy.

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

Completeness4/5

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

With an output schema present, the description need not detail return values. It covers core functionality well, though could mention error handling or limits for completeness.

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?

Input schema covers all parameters with descriptions (100% coverage). Description adds value by clarifying that 'title' affects link resolution and template expansion, going beyond the schema.

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

Purpose5/5

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

The description clearly states the tool parses wikitext to HTML. It distinguishes from siblings like 'mediawiki_edit_page' and 'mediawiki_convert_markdown' by specifying the core function.

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 provides explicit use cases (preview rendering, test syntax). While it does not exclude other uses, it offers clear guidance.

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

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 and idempotentHint, so the description builds on this by explaining the recovery nature, fuzzy matching, and return of confidence scores, adding context without contradictions.

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

Conciseness5/5

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

The description is concise and well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS) and bullet points, maximizing readability and information density.

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

Completeness5/5

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

Given the presence of an output schema and annotations, the description covers when to use, parameter details, and return format (confidence scores), making it complete for tool usage.

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

Parameters4/5

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

Despite 100% schema coverage, the description adds meaning by specifying that title is 'approximate', fuzzy is 'for typos' with default true, and max_results default 5, going beyond schema descriptions.

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

Purpose5/5

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

The description clearly states it is a 'RECOVERY tool when page not found due to case sensitivity or typos.' It explicitly distinguishes itself from sibling mediawiki_search by noting what it is not for.

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' and 'NOT FOR' sections provide clear guidance on when to use this tool versus alternatives, directly citing mediawiki_search as the alternative.

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

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.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate safety. It adds value by disclosing the combined action (search+read), the single-call optimization, and the return structure (full content plus summaries). No contradictions with annotations.

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

Conciseness5/5

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

Extremely concise: a one-sentence purpose, then structured USE WHEN/NOT FOR sections, followed by parameter and return definitions. Every sentence adds value, and the most critical information (purpose, usage guidelines) is front-loaded. No unnecessary words.

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

Completeness5/5

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

Given the tool's moderate complexity (combining search and read) and the presence of an output schema (which covers returns), the description fully covers purpose, usage guidelines, parameters, and return behavior. No gaps remain for an agent to misunderstand.

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?

Input schema has 100% coverage with descriptions, but the description adds context beyond schema: default values for read_count and format, max value for read_count, and explanation of what 'read' means. This helps the agent choose correct parameter values effectively.

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

Purpose5/5

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

Description clearly states the tool searches and reads top results in one call. It distinguishes from sibling tools mediawiki_search and mediawiki_get_page by specifying when not to use each (e.g., 'Not for known page titles (use mediawiki_get_page directly)'). The verb-resource combination is specific and unambiguous.

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

Usage Guidelines5/5

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

Provides explicit 'USE WHEN' and 'NOT FOR' sections, offering clear context for when to invoke this tool versus alternatives. It names specific sibling tools (mediawiki_search, mediawiki_get_page) and explains the trade-off (fastest path vs. listing results). This leaves no ambiguity for the agent.

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

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, idempotentHint, openWorldHint. The description adds important context about supported file types and explicit note that scanned/image PDFs are not supported, which is beyond annotations.

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

Conciseness5/5

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

Well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS, NOTE). Each sentence is purposeful, front-loaded, and no wasted words.

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

Completeness5/5

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

Given that an output schema exists, the description's mention of return format (page/line numbers) is sufficient. It covers purpose, usage, parameters, limitations, and compatibility, making it complete for this 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 baseline is 3. The description repeats parameter names and required status, but adds no deeper meaning beyond what schema provides.

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

Purpose5/5

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

The description clearly states 'Search for text within wiki-hosted files (PDFs, text files).' It uses a specific verb+resource and distinguishes from sibling tools like mediawiki_search and mediawiki_search_in_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?

Includes explicit 'USE WHEN' and 'NOT FOR' sections with example queries, and names alternative tools: 'use mediawiki_search or mediawiki_search_in_page'.

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

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.5/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint, idempotentHint, openWorldHint), description adds that it searches within a page, returns matches with line numbers and context. Could mention error handling if page not found, but overall good.

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?

Well-structured with clear sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS). Concise, no redundant sentences, front-loaded with key purpose.

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

Completeness5/5

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

Covers all essential aspects: purpose, usage guidelines, parameter details, return format. Output schema exists to document return values further. Complete for the tool's complexity.

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?

With 100% schema coverage, description adds some value (e.g., defaults, usage context) but schema already explains parameters thoroughly. 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?

Clear verb ('Search') and specific resource ('within a known page'). Differentiates from sibling 'mediawiki_search' by stating 'not across wiki'. Provides example use cases.

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

Usage Guidelines5/5

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

Explicit 'USE WHEN' and 'NOT FOR' sections. States when to use (e.g., 'find X on page Y') and when not (use 'mediawiki_search' instead).

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?

The description details behavioral traits beyond annotations: security constraints (SSRF, allowlist, file size cap), destructive behavior (ignore_warnings=true overwrites), and authentication requirement. Annotations provide destructiveHint=true, and the description reinforces this with specifics.

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 with clear sections (USE WHEN, PARAMETERS, RETURNS, NOTE, SECURITY). Front-loaded with purpose. Slightly long but each section adds value; could be more concise by removing repetition in parameter descriptions.

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 parameters, return values (status, URL, revision ID, undo instructions), authentication, security, and size limits. Output schema exists but description provides useful context. However, it lacks explicit details about error conditions (e.g., what happens on failure).

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

Parameters5/5

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

The description adds meaning beyond the input schema: explains mutual exclusivity of file_data and file_url, mentions that file_data skips URL-fetch path, notes that file_path is rejected via MCP, and describes behavior of ignore_warnings. Schema coverage is 100% but description enriches understanding.

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

Purpose5/5

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

The description clearly states 'Upload a file to the wiki from base64 bytes or a URL.' It uses a specific verb ('Upload') and resource ('file to the wiki'), distinguishing it from siblings like mediawiki_edit_page which edits text content.

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

Usage Guidelines4/5

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

The description includes a 'USE WHEN' section with concrete examples ('upload this image', 'add file to wiki', 'import document'). It explains when to use file_data vs file_url (mutually exclusive) but does not explicitly state when not to use this tool.

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. 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."
  2. 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"
        +]
  3. 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
  4. 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

A4.1/5.0

Scored across 43 tools

Disambiguation4/5

Most tools have clearly distinct purposes with explicit 'NOT FOR' guidance to prevent confusion. Minor overlap exists between mediawiki_get_related and mediawiki_find_similar_pages, and between mediawiki_search and mediawiki_search_and_read, but descriptions clarify when to use each.

Naming Consistency5/5

All tools follow the mediawiki_verb_noun pattern consistently alert. Verbs are action-oriented (get, search, find, create, update, rename, compare) and nouns are specific (page, revision, link, category). Naming is uniform and predictable.

Tool Count2/5

43 tools is significantly more than the recommended 3-15 for a typical server. While the wiki domain is broad, many tools are minor variations (e.g., get_page vs get_page_summary vs get_page_info) that could be consolidated. The count feels excessive and may overwhelm agents.

Completeness5/5

The tool surface covers the full lifecycle: read (get, search, list), create (edit_page, upload_file), update (find_replace, bulk_replace, manage_categories), delete (via edit_page with empty content, move_page), and maintenance (audit, find_broken_links, check_terminology). No obvious gaps for a wiki server.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers