mediawiki-mcp-server
The MediaWiki MCP server lets you search, read, edit, and analyze MediaWiki wikis via AI assistants or a CLI.
Search & Read
Full-text search, retrieve page content (wikitext or HTML), get sections/summaries, batch-fetch pages, search within a page, get metadata, parse wikitext to HTML, and fuzzy title resolution.
Link Analysis
Get/verify external links, find broken internal links, and get backlinks ("What links here").
Content Discovery & Quality
Find related pages, orphaned pages, similar/duplicate pages, stale pages, compare topic coverage across pages, check terminology against a glossary, find missing translations, and run a comprehensive wiki health audit.
History & Changes
View revision history, compare revisions with diffs, get recent wiki-wide changes (aggregated by user/page/type), and view user contributions.
Listing & Discovery
List pages, categories, category members, users by group, and get overall wiki statistics.
Write & Edit (require authentication)
Create/edit pages, find-and-replace (single page or bulk across pages/categories), apply formatting (bold, italic, strikethrough, code, underline), move/rename pages, manage categories, and upload files from URLs.
File Search
Search text within wiki-hosted PDFs, TXT, MD, CSV, JSON, XML, and HTML files.
Markdown Conversion
Convert Markdown to MediaWiki markup with optional themes (Tieto, neutral, dark), changelog reordering, and emoji prettification.
Safety & Output
All write operations support preview mode to verify changes before applying. Every operation supports JSON output for machine-readable or AI agent consumption.
Enables AI assistants to search, read, and edit content on Fandom-hosted wikis using natural language through MediaWiki API integration.
Provides specialized configuration for connecting to and interacting with Tieto's Public 360° Wiki for content retrieval and search.
Allows users to search Wikipedia, summarize pages, view revision histories, and check for broken links via the Wikipedia API.
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.
Three ways to use it:
MCP server — Claude Desktop, Claude Code, Cursor, ChatGPT, n8n, VS Code, Google ADK, or any MCP-compatible tool. See SETUP.md.
wikiCLI — same API client, same auth, no AI needed. For shell pipelines, CI checks, cron jobs. See CLI.md.Claude Code plugin —
/plugin marketplace add olgasafonova/mediawiki-mcp-serveradds wiki skills directly to Claude Code. See .claude-plugin/README.md.
Documentation
Document | What it covers |
Get running in 2 minutes | |
Per-tool configuration (Claude Desktop, Cursor, ChatGPT, n8n, VS Code, Google ADK) | |
| |
Full tool reference (43 tools by category) | |
HTTP transport, security, endpoints, env vars | |
Connect to Tieto's Public 360° Wiki (beginner-friendly) | |
Detailed workflows by persona | |
System design | |
How to contribute | |
Security policies | |
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?" |
|
Read a page | "Show me the Getting Started page" |
|
Find broken links | "Are there broken links on the Docs page?" |
|
Find stale content | "Which pages haven't been updated in 90 days?" |
|
Cross-link suggestions | "What pages are similar to the API Reference?" |
|
Audit wiki health | "Run a health check on the wiki" |
|
Publish markdown | "Publish this README to the wiki" |
|
Strike a name | "Strike out John Smith on the Team page" |
|
For the full tool list, see TOOLS.md. The CLI returns typed exit codes for CI-friendly branching — see CLI.md.
30-Second Start
Get the binary. Download from Releases or
go build -o mediawiki-mcp-server .(requires Go 1.24+).Find your wiki API URL — usually
https://your-wiki.com/api.php. Wikipedia ishttps://en.wikipedia.org/w/api.php. VisitSpecial:Versionto confirm.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 |
|
Ubuntu/Debian |
|
RHEL/CentOS |
|
Windows |
|
Windows alternative: Download binaries from poppler-windows releases and add to PATH.
Verify installation:
pdftotext -vCompatibility
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 |
Access GLEIF LEI database. Look up company identities, verify legal entities. | ||
Control Miro whiteboards with AI. Boards, diagrams, mindmaps, and more. | ||
Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden. | ||
Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. | ||
Nordic grocery deal hunting. Find offers, plan meals, track spending. | ||
Go library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers. |
License
MIT License
Credits
Built with Go MCP SDK
Powered by MediaWiki API
Available Tools
43 toolsmediawiki_apply_formattingADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Apply to all occurrences (default: first only) | |
| text | Yes | Text to find and format | |
| title | Yes | Page title to edit | |
| format | Yes | Format to apply: 'strikethrough', 'bold', 'italic', 'underline', 'code', 'nowiki' | |
| preview | No | Preview changes without saving | |
| summary | No | Edit summary (auto-generated if empty) | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| undo | No | |
| title | Yes | |
| changes | No | |
| message | Yes | |
| preview | Yes | |
| success | Yes | |
| revision | No | |
| match_count | Yes | |
| revision_id | No | |
| format_count | Yes | |
| format_applied | Yes |
TDQS
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.
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.
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.
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.
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.
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_auditARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages to audit (default 20, max 50) | |
| pages | No | Specific pages to audit | |
| checks | No | Which checks to run: 'links', 'terminology', 'orphans', 'external', 'activity'. Default: all except 'external' | |
| category | No | Category to audit (alternative to pages) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| summary | Yes | |
| wiki_name | Yes | |
| audited_at | Yes | |
| terminology | No | |
| broken_links | No | |
| health_score | Yes | |
| pages_audited | Yes | |
| external_links | No | |
| orphaned_pages | No | |
| recent_activity | No |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: 'wikitext' (default) or 'html' | |
| titles | Yes | List of page titles to retrieve (max 50) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| found_count | Yes | |
| total_count | Yes | |
| missing_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_infoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| titles | Yes | List of page titles to get info for (max 50) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| total_count | Yes | |
| exists_count | Yes | |
| missing_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_replaceADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | Text to find | |
| limit | No | Max pages to process (default 10, max 50) | |
| pages | No | Page titles to process | |
| preview | No | Preview changes without saving | |
| replace | Yes | Replacement text | |
| summary | No | Edit summary | |
| category | No | Category to get pages from (alternative to pages) | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. | |
| use_regex | No | Treat 'find' as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| preview | Yes | |
| results | Yes | |
| total_changes | Yes | |
| pages_modified | Yes | |
| pages_processed | Yes |
TDQS
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.
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.
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.
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.
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.
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_linksARead-onlyIdempotent
Verify external URL accessibility via HTTP requests.
USE WHEN: User asks "check if these links work", "find broken URLs", "verify external links".
NOT FOR: Finding broken internal wiki links (use mediawiki_find_broken_internal_links).
PARAMETERS:
urls: Array of URLs to check (required, max 20)
timeout: Request timeout in seconds (default 10)
RETURNS: URL status codes, response times, and broken link identification.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to check (max 20) | |
| timeout | No | Timeout per URL in seconds (default 10, max 30) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| total_links | Yes | |
| valid_count | Yes | |
| broken_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld. Description adds that it performs HTTP requests and returns status codes, response times, and broken link identification. Could mention potential rate limits or external dependency, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured with sections (USE WHEN, NOT FOR, PARAMETERS, RETURNS). Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool, good annotations, and output schema, the description covers purpose, usage, parameters, and return value. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds little beyond schema: repeats parameter info (urls max 20, timeout default 10) but provides no new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'verify' and resource 'external URL accessibility', with explicit usage examples. It distinguishes from sibling tool mediawiki_find_broken_internal_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'USE WHEN' and 'NOT FOR' sections, providing clear context for when to use and an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mediawiki_check_terminologyARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages to check (default 10, max 50) | |
| pages | No | Page titles to check. If empty, uses pages from category. | |
| category | No | Category to get pages from (alternative to pages list) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| glossary_page | No | Wiki page containing the glossary table (default: 'Brand Terminology Glossary') | |
| exclude_code_blocks | No | Skip code blocks (syntaxhighlight, source, pre, code tags) to avoid false positives on code paths. Default: true |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| issues_found | Yes | |
| terms_loaded | Yes | |
| glossary_page | Yes | |
| pages_checked | Yes |
TDQS
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.
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.
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.
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.
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.
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_translationsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max base pages to check (default 20, max 100) | |
| pattern | No | Pattern for language pages: 'subpage' (Page/lang), 'suffix' (Page (lang)), or 'prefix' (lang:Page). Default: 'subpage' | |
| category | No | Category to get base pages from (alternative to base_pages) | |
| languages | Yes | Language codes to check (e.g., ['en', 'no', 'sv']) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| base_pages | No | Base page names to check for translations (without language suffix) |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| pattern | Yes | |
| missing_count | Yes | |
| pages_checked | Yes | |
| languages_checked | Yes |
TDQS
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.
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.
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.
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.
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.
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_revisionsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| to_rev | No | Target revision ID | |
| from_rev | No | Source revision ID | |
| to_title | No | Target page title (uses latest revision) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| from_title | No | Source page title (uses latest revision) |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | Yes | |
| to_user | No | |
| to_revid | Yes | |
| to_title | Yes | |
| from_user | No | |
| from_revid | Yes | |
| from_title | Yes | |
| to_timestamp | No | |
| from_timestamp | No |
TDQS
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.
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.
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.
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.
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.
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_topicARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum pages to compare (default 20, max 50) | |
| topic | Yes | Topic or term to compare across pages | |
| category | No | Limit search to pages in this category | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| topic | Yes | |
| summary | Yes | |
| pages_found | Yes | |
| page_mentions | Yes | |
| inconsistencies | No |
TDQS
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.
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.
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.
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.
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.
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_markdownARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Color theme: 'tieto' (brand colors), 'neutral' (no styling, default), or 'dark' (dark mode) | |
| add_css | No | Include CSS styling block for branded appearance | |
| markdown | Yes | The Markdown text to convert to MediaWiki markup | |
| prettify_checks | No | Replace plain checkmarks with emoji ✅ | |
| reverse_changelog | No | Reorder changelog entries with newest first |
Output Schema
| Name | Required | Description |
|---|---|---|
| wikitext | Yes | |
| theme_used | Yes | |
| input_length | Yes | |
| output_length | Yes | |
| available_themes | Yes |
TDQS
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.
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.
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.
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.
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.
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_pageADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bot | No | Mark as bot edit (requires bot flag) | |
| minor | No | Mark as minor edit | |
| title | Yes | Page title to edit or create | |
| content | Yes | New page content in wikitext format | |
| section | No | Section to edit ('new' for new section, number for existing) | |
| summary | No | Edit summary explaining the change | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. | |
| captcha_id | No | CAPTCHA ID from a previous failed attempt, required when answering a CAPTCHA | |
| captcha_word | No | User-provided answer to the CAPTCHA challenge |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| message | Yes | |
| page_id | Yes | |
| success | Yes | |
| new_page | Yes | |
| page_url | No | |
| captcha_id | No | |
| revision_id | Yes | |
| captcha_type | No | |
| captcha_question | No |
TDQS
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.
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.
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.
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.
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.
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_broken_internal_linksARead-onlyIdempotent
Find internal wiki [[links]] pointing to non-existent pages.
USE WHEN: User asks "find broken wiki links", "check for dead internal links", "find [[links]] to missing pages".
NOT FOR: Checking external HTTP URLs (use mediawiki_check_links).
PARAMETERS:
pages: Array of pages to scan (optional)
category: Scan all pages in category (optional)
limit: Max pages to scan (default 20)
RETURNS: Broken links with source page, line number, and context.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages to check (default 20, max 100) | |
| pages | No | Page titles to check for broken internal links | |
| category | No | Category to get pages from (alternative to pages) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| broken_count | Yes | |
| pages_checked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. Description adds scanning behavior (pages/category/limit) and return details (broken links with source, line, context), which is useful but does not significantly extend 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections (purpose, usage, parameters, returns), concise without waste. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and output schema, the description covers purpose, usage, parameters, and returns adequately. Minor gaps: edge cases (e.g., both pages and category specified) not addressed, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds moderate value by rephrasing parameter purpose and default values, but misses the max 100 constraint mentioned in schema. Does not significantly improve understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it finds internal wiki links pointing to non-existent pages, using specific verb+resource. Distinguishes from sibling tools like mediawiki_check_links by focusing on internal dead links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' and 'NOT FOR' sections, and names the alternative tool for external URLs. This gives the agent clear guidance on when to invoke 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_find_orphaned_pagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages to return (default 50, max 200) | |
| prefix | No | Only check pages starting with this prefix | |
| namespace | No | Namespace to check (0=main, default). Use -1 for all namespaces. | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total_checked | Yes | |
| orphaned_count | Yes | |
| orphaned_pages | Yes |
TDQS
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.
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.
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.
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.
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.
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_replaceADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Replace all occurrences (default: first only) | |
| find | Yes | Text to find (exact match or regex if use_regex=true) | |
| minor | No | Mark as minor edit | |
| title | Yes | Page title to edit | |
| preview | No | Preview changes without saving | |
| replace | Yes | Replacement text | |
| summary | No | Edit summary | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. | |
| use_regex | No | Treat 'find' as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars. |
Output Schema
| Name | Required | Description |
|---|---|---|
| undo | No | |
| title | Yes | |
| changes | No | |
| message | Yes | |
| preview | Yes | |
| success | Yes | |
| revision | No | |
| match_count | Yes | |
| revision_id | No | |
| replace_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Page title to find similar pages for | |
| limit | No | Maximum similar pages to return (default 10, max 50) | |
| category | No | Limit search to pages in this category | |
| min_score | No | Minimum similarity score 0-1 (default 0.1) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| source_page | Yes | |
| similar_pages | Yes | |
| total_compared | Yes |
TDQS
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.
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.
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.
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.
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.
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_backlinksARead-onlyIdempotent
Get pages that link TO a specific page ("What links here").
USE WHEN: User asks "what links to X", "which pages reference the API", "show incoming links".
NOT FOR: Outgoing external links (use mediawiki_get_external_links).
PARAMETERS:
title: Page name (required)
namespace: Filter by namespace (optional)
limit: Max backlinks (default 50)
include_redirects: Include redirect pages (default false)
RETURNS: List of pages that link to the target page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max backlinks to return (default 50, max 500) | |
| title | Yes | Page title to find backlinks for | |
| namespace | No | Filter by namespace (-1 for all, 0 for main) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| include_redirects | No | Include redirect pages in results |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| title | Yes | |
| has_more | Yes | |
| backlinks | Yes |
TDQS
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 a list of pages and notes parameter defaults (limit 50, include_redirects false), 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured into clear sections: one-line purpose, USE WHEN/NOT FOR, PARAMETERS, RETURNS. It is concise with no wasted words, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with 5 parameters (including rationale), output schema existence, and clear return description ('List of pages'), the description is complete. It also distinguishes from a relevant sibling, covering all necessary context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds default values for limit (50) and include_redirects (false) not fully covered in schema, and clarifies optionality of parameters, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get pages that link TO a specific page ("What links here")' which is a clear verb+resource. It distinguishes from sibling mediawiki_get_external_links by explicitly stating it is not for outgoing external links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides 'USE WHEN' examples (e.g., 'what links to X') and 'NOT FOR' excluding outgoing links with an explicit alternative tool. This gives clear guidance for when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mediawiki_get_category_membersARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type: 'page', 'subcat', 'file', or empty for all | |
| limit | No | Maximum members to return (default 50, max 500) | |
| category | Yes | Category name (with or without 'Category:' prefix) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| continue_from | No | Continue token for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
| members | Yes | |
| category | Yes | |
| has_more | Yes | |
| continue_from | No |
TDQS
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.
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.
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.
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.
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.
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_external_linksARead-onlyIdempotent
Get all external URLs from a wiki page.
USE WHEN: User asks "what external links are on X", "show outgoing URLs", "list http links".
NOT FOR: Incoming wiki links (use mediawiki_get_backlinks). Not for verifying links work (use mediawiki_check_links).
PARAMETERS:
title: Page name (required)
RETURNS: List of external URLs on the page.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title to get external links from | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| links | Yes | |
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, idempotent read operation. The description adds that it returns a list of external URLs and mentions the required parameter, providing sufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loaded main purpose, and no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 comprehensive annotations, the description is complete. It covers the required parameter and return type, and the tool is simple enough that no further context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds a bit more context ('Page name (required)') beyond the schema's 'Page title to get external links from', but not significantly enough to justify a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets all external URLs from a wiki page, using specific verbs and resources. It distinguishes from sibling tools like mediawiki_get_backlinks and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'USE WHEN' and 'NOT FOR' sections, with clear guidance on when to use this tool and alternatives, such as mediawiki_get_backlinks for incoming wiki links and mediawiki_check_links for verifying links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mediawiki_get_external_links_batchARead-onlyIdempotent
Batch retrieve external URLs from multiple pages at once.
USE WHEN: User asks "get links from these 5 pages", "collect URLs from multiple articles".
NOT FOR: Single page (use mediawiki_get_external_links - more efficient).
PARAMETERS:
titles: Array of page names (required, max 10)
RETURNS: External URLs grouped by source page.
| Name | Required | Description | Default |
|---|---|---|---|
| titles | Yes | Page titles to get external links from (max 10) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| total_links | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and open-world behavior. The description adds the batch size limit (max 10) and the return format (grouped by source page), providing useful extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear sections: purpose, when to use, limitations, parameters, and returns. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple batch retrieval tool given the annotations and output schema. It could mention behavior for missing pages, but that is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description repeats the information already in the schema (titles is a required array of strings, max 10). No additional parameter meaning is provided beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is for batch retrieval of external URLs from multiple pages, and explicitly distinguishes from the single-page sibling tool mediawiki_get_external_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes explicit USE WHEN and NOT FOR sections, providing examples of user intents and directing to an alternative for single-page requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mediawiki_get_imagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum images to return (default 50, max 500) | |
| title | Yes | Page title to get images from | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| title | Yes | |
| images | Yes |
TDQS
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.
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.
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.
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.
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.
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_pageARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title to retrieve | |
| format | No | Output format: 'wikitext' (default) or 'html' | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| format | Yes | |
| content | Yes | |
| message | No | |
| page_id | Yes | |
| timestamp | Yes | |
| truncated | No | |
| revision_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_infoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| exists | Yes | |
| length | Yes | |
| page_id | Yes | |
| touched | Yes | |
| redirect | Yes | |
| namespace | Yes | |
| categories | No | |
| protection | No | |
| links_count | Yes | |
| redirect_to | No | |
| content_model | Yes | |
| page_language | Yes | |
| last_revision_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_summaryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title to get summary for | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| format | Yes | |
| length | Yes | |
| message | No | |
| page_id | Yes | |
| redirect | No | |
| sections | No | |
| categories | No | |
| last_edited | Yes | |
| redirect_to | No | |
| revision_id | Yes | |
| lead_content | Yes | |
| section_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_changesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Upper time bound (ISO 8601). Returns changes on or before this timestamp. | |
| type | No | Filter by type: 'edit', 'new', 'log', or empty for all | |
| limit | No | Maximum changes to return (default 50, max 500) | |
| start | No | Lower time bound (ISO 8601). Returns changes on or after this timestamp. | |
| namespace | No | Filter by namespace (-1 for all) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| aggregate_by | No | Aggregate results by: 'user', 'page', or 'type'. Returns counts instead of raw changes. Recommended for large result sets. | |
| continue_from | No | Continue token for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
| changes | No | |
| has_more | Yes | |
| aggregated | No | |
| continue_from | No |
TDQS
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.
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.
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.
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.
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.
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_revisionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Upper time bound (ISO 8601). Returns revisions on or before this timestamp. | |
| user | No | Filter to revisions by this user | |
| limit | No | Max revisions to return (default 20, max 100) | |
| start | No | Lower time bound (ISO 8601). Returns revisions on or after this timestamp. | |
| title | Yes | Page title to get revision history for | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| title | Yes | |
| page_id | Yes | |
| has_more | Yes | |
| revisions | Yes |
TDQS
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.
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.
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.
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.
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.
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_sectionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title to get sections from | |
| format | No | Output format for section content: 'wikitext' (default) or 'html' | |
| section | No | Specific section number to retrieve content for (0 = intro, 1+ = sections). Omit to list all sections. | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| format | No | |
| message | No | |
| page_id | Yes | |
| sections | No | |
| section_title | No | |
| section_content | No |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Pages not edited in this many days (default 90) | |
| limit | No | Max pages to return (default 50, max 200) | |
| category | No | Limit to pages in this category | |
| namespace | No | Namespace to check (default 0 = main) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| stale_count | Yes | |
| stale_pages | Yes | |
| total_scanned | Yes | |
| days_threshold | Yes |
TDQS
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.
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.
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.
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.
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.
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_contributionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Upper time bound (ISO 8601). Returns contributions on or before this timestamp. | |
| user | Yes | Username to get contributions for | |
| limit | No | Max contributions to return (default 50, max 500) | |
| start | No | Lower time bound (ISO 8601). Returns contributions on or after this timestamp. | |
| namespace | No | Filter by namespace (-1 for all) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes | |
| count | Yes | |
| has_more | Yes | |
| contributions | Yes |
TDQS
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.
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.
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.
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.
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.
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_infoARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| server | Yes | |
| base_url | Yes | |
| language | Yes | |
| timezone | Yes | |
| generator | Yes | |
| main_page | Yes | |
| site_name | Yes | |
| statistics | No | |
| php_version | Yes | |
| article_path | Yes | |
| write_api_enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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_categoriesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum categories to return (default 50, max 500) | |
| prefix | No | Filter categories starting with this prefix | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| continue_from | No | Continue token for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | Yes | |
| categories | Yes | |
| continue_from | No |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum pages to return (default 50, max 500) | |
| prefix | No | Filter pages starting with this prefix | |
| namespace | No | Namespace ID (0=main, 1=talk, etc.) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| continue_from | No | Continue token for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| has_more | Yes | |
| total_count | No | |
| continue_from | No | |
| returned_count | Yes | |
| total_estimate | No |
TDQS
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.
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.
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.
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.
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.
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_usersARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Filter by user group: 'sysop' (admins), 'bureaucrat', 'bot', or empty for all users | |
| limit | No | Maximum users to return (default 50, max 500) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| active_only | No | Only return users active in the last 30 days | |
| continue_from | No | Continue token for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
| group | No | |
| users | Yes | |
| has_more | Yes | |
| total_count | Yes | |
| continue_from | No |
TDQS
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.
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.
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.
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.
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.
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_categoriesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Category names to add (without 'Category:' prefix) | |
| title | Yes | Page title to manage categories for | |
| remove | No | Category names to remove (without 'Category:' prefix) | |
| preview | No | Preview changes without saving | |
| summary | No | Edit summary | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| undo | No | |
| added | No | |
| title | Yes | |
| message | Yes | |
| preview | Yes | |
| removed | No | |
| success | Yes | |
| revision | No | |
| not_found | No | |
| revision_id | No | |
| already_present | No | |
| current_categories | Yes |
TDQS
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.
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.
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.
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.
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.
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_pageADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | New page title | |
| from | Yes | Current page title | |
| reason | No | Reason for the move | |
| move_talk | No | Also move the talk page if it exists (default true) | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. | |
| no_redirect | No | Don't create a redirect from the old title (requires suppressredirect right) | |
| move_subpages | No | Also move subpages if they exist |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| reason | No | |
| message | Yes | |
| success | Yes | |
| talk_moved | No | |
| redirect_url | No |
TDQS
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.
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.
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.
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.
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.
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_parseARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Page title for context (affects template expansion) | |
| wikitext | Yes | Wikitext content to parse | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | Yes | |
| links | No | |
| message | No | |
| truncated | No | |
| categories | No |
TDQS
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.
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.
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.
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.
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.
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_titleARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| fuzzy | No | Enable fuzzy matching for similar titles | |
| title | Yes | Page title to resolve (can be inexact) | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| max_results | No | Max suggestions to return (default 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| page_id | No | |
| exact_match | Yes | |
| suggestions | No | |
| resolved_title | No |
TDQS
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.
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.
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.
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.
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.
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_searchARead-onlyIdempotent
Search ACROSS the entire wiki for pages containing specific text.
USE WHEN: User asks "find pages about X", "where is X documented", "search for X", or doesn't know which page contains information.
NOT FOR: Searching within a specific known page (use mediawiki_search_in_page instead).
PARAMETERS:
query: Search text (required)
limit: Max results (default 20)
RETURNS: Page titles, snippets with highlights, and relevance scores.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default 20, max 500) | |
| query | Yes | Search query text | |
| offset | No | Offset for pagination | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| has_more | Yes | |
| total_hits | Yes | |
| next_offset | No |
TDQS
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 searches the entire wiki and returns snippets with highlights and relevance scores. No contradictions, and the description supplements 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, use when, not for, parameters, returns). It is concise and front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's read-only, idempotent, open-world nature and complete schema, the description covers when to use, parameters, and return types. Slightly lacking in pagination details but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description reiterates query and limit with defaults but adds no significant new meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search ACROSS the entire wiki for pages containing specific text.' It distinguishes itself from siblings like mediawiki_search_in_page, making the purpose very specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'USE WHEN' and 'NOT FOR' sections with a direct sibling reference (mediawiki_search_in_page) provide excellent guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mediawiki_search_and_readARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query text | |
| format | No | Content format: 'wikitext' (default) or 'html' | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| read_count | No | Number of top results to read (default 1, max 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| query | Yes | |
| message | Yes | |
| other_hits | No | |
| total_hits | Yes |
TDQS
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.
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.
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.
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.
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.
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_fileARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search for in the file | |
| filename | Yes | File page name (e.g., 'File:Report.pdf' or just 'Report.pdf') | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | |
| message | No | |
| filename | Yes | |
| file_type | Yes | |
| searchable | Yes | |
| match_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_pageARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search for | |
| title | Yes | Page title to search in | |
| rationale | No | Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present. | |
| use_regex | No | Treat query as a Go RE2 regex. Characters like . [ ] * + ? ( ) have special meaning; escape with backslash for literal match. Max 500 chars. | |
| context_lines | No | Lines of context around matches (default 2) |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| title | Yes | |
| matches | Yes | |
| match_count | Yes |
TDQS
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.
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.
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.
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.
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.
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_fileADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | File description page content (wikitext) | |
| comment | No | Upload comment for the log | |
| file_url | No | URL to fetch and upload. Mutually exclusive with file_data. | |
| filename | Yes | Target filename on the wiki (e.g., 'Example.png') | |
| file_data | No | 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. | |
| file_path | No | Local file path to upload (rejected via MCP; CLI use FileData) | |
| rationale | Yes | Required one-sentence explanation of why you are making this change. Stored in the audit log for post-hoc intent reconstruction. | |
| ignore_warnings | No | Ignore duplicate/overwrite warnings |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| size | No | |
| message | Yes | |
| page_id | No | |
| success | Yes | |
| filename | Yes | |
| warnings | No |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.32.0- Changed
mediawiki_edit_page6 fields changed- added
Input schema / properties / captcha_idAdded value: +{ + "description": "CAPTCHA ID from a previous failed attempt, required when answering a CAPTCHA", + "type": "string" +} - added
Input schema / properties / captcha_wordAdded value: +{ + "description": "User-provided answer to the CAPTCHA challenge", + "type": "string" +} - added
Output schema / properties / captcha_idAdded value: +{ + "type": "string" +} - added
Output schema / properties / captcha_questionAdded value: +{ + "type": "string" +} - added
Output schema / properties / captcha_typeAdded value: +{ + "type": "string" +} - added
Output schema / properties / page_urlAdded value: +{ + "type": "string" +}
- Changed
mediawiki_get_recent_changes2 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"End timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns changes on or before this timestamp." - changed
Input schema / properties / start / descriptionPrevious value: -"Start timestamp (ISO 8601)"New value: +"Lower time bound (ISO 8601). Returns changes on or after this timestamp."
- Changed
mediawiki_get_revisions2 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"End at this timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns revisions on or before this timestamp." - changed
Input schema / properties / start / descriptionPrevious value: -"Start from this timestamp (ISO 8601, newer first)"New value: +"Lower time bound (ISO 8601). Returns revisions on or after this timestamp."
- Changed
mediawiki_get_user_contributions2 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"End at this timestamp (ISO 8601)"New value: +"Upper time bound (ISO 8601). Returns contributions on or before this timestamp." - changed
Input schema / properties / start / descriptionPrevious value: -"Start from this timestamp (ISO 8601, newer first)"New value: +"Lower time bound (ISO 8601). Returns contributions on or after this timestamp."
- Changed
mediawiki_upload_file3 fields changed- added
Input schema / properties / file_dataAdded 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" +} - changed
Input schema / properties / file_path / descriptionPrevious value: -"Local file path to upload"New value: +"Local file path to upload (rejected via MCP; CLI use FileData)" - changed
Input schema / properties / file_url / descriptionPrevious value: -"URL to fetch and upload (alternative to file_path)"New value: +"URL to fetch and upload. Mutually exclusive with file_data."
42 tool updates
v1.31.0- Changed
mediawiki_apply_formatting2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "title", - "text", - "format" -]New value: +[ + "rationale", + "title", + "text", + "format" +]
- Changed
mediawiki_audit1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_batch_get_pages1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_batch_get_pages_info1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_bulk_replace2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "find", - "replace" -]New value: +[ + "rationale", + "find", + "replace" +]
- Changed
mediawiki_check_links1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_check_terminology1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_check_translations1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_compare_revisions1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_compare_topic1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_edit_page2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "title", - "content" -]New value: +[ + "rationale", + "title", + "content" +]
- Changed
mediawiki_find_broken_internal_links1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_find_orphaned_pages1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_find_replace2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "title", - "find", - "replace" -]New value: +[ + "rationale", + "title", + "find", + "replace" +]
- Changed
mediawiki_find_similar_pages1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_backlinks1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_category_members1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_external_links1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_external_links_batch1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_images1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_page1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_page_info1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_page_summary1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_recent_changes1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_related1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_revisions1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_sections1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_stale_pages1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_user_contributions1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_get_wiki_info1 field changed- added
Input schema / propertiesAdded value: +{ + "rationale": { + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" + } +}
- Changed
mediawiki_list_categories1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_list_pages1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_list_users1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_manage_categories2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "title" -]New value: +[ + "rationale", + "title" +]
- Changed
mediawiki_move_page2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "from", - "to" -]New value: +[ + "rationale", + "from", + "to" +]
- Changed
mediawiki_parse1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_resolve_title1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_search1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_search_and_read1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_search_in_file1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_search_in_page1 field changed- added
Input schema / properties / rationaleAdded value: +{ + "description": "Optional one-sentence explanation of why you are calling this tool. Used for audit trails when present.", + "type": "string" +}
- Changed
mediawiki_upload_file2 fields changed- added
Input schema / properties / rationaleAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "filename" -]New value: +[ + "rationale", + "filename" +]
8 tool updates
v1.30.0- Added
mediawiki_audit - Added
mediawiki_batch_get_pages - Added
mediawiki_batch_get_pages_info - Added
mediawiki_get_page_summary - Added
mediawiki_get_stale_pages - Added
mediawiki_manage_categories - Added
mediawiki_move_page - Added
mediawiki_search_and_read
35 tool updates
- First observed
mediawiki_apply_formatting - First observed
mediawiki_bulk_replace - First observed
mediawiki_check_links - First observed
mediawiki_check_terminology - First observed
mediawiki_check_translations - First observed
mediawiki_compare_revisions - First observed
mediawiki_compare_topic - First observed
mediawiki_convert_markdown - First observed
mediawiki_edit_page - First observed
mediawiki_find_broken_internal_links - First observed
mediawiki_find_orphaned_pages - First observed
mediawiki_find_replace - First observed
mediawiki_find_similar_pages - First observed
mediawiki_get_backlinks - First observed
mediawiki_get_category_members - First observed
mediawiki_get_external_links - First observed
mediawiki_get_external_links_batch - First observed
mediawiki_get_images - First observed
mediawiki_get_page - First observed
mediawiki_get_page_info - First observed
mediawiki_get_recent_changes - First observed
mediawiki_get_related - First observed
mediawiki_get_revisions - First observed
mediawiki_get_sections - First observed
mediawiki_get_user_contributions - First observed
mediawiki_get_wiki_info - First observed
mediawiki_list_categories - First observed
mediawiki_list_pages - First observed
mediawiki_list_users - First observed
mediawiki_parse - First observed
mediawiki_resolve_title - First observed
mediawiki_search - First observed
mediawiki_search_in_file - First observed
mediawiki_search_in_page - First observed
mediawiki_upload_file
TDQS
Scored across 43 tools
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.
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.
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.
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
Related MCP Connectors
- FlowdexOAuthdk.flowdex
Read and write your team's shared, AI-readable wiki from any MCP client.
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
- hiveWikiOAuthai.hivewiki
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Related MCP Servers
- FlicenseBqualityCmaintenanceA MCP server that allows you to search and retrieve content on any wiki site using MediaWiki with LLMs 🤖. wikipedia.org, fandom.com, wiki.gg and more sites using Mediawiki are supported!227-
- AlicenseBqualityBmaintenanceA secure MCP server for interacting with MediaWiki instances, allowing users to search, read, create, and manage wiki content like pages, categories, and files. It supports both public and private wikis with comprehensive authentication for full read and write operations.19AGPL 3.0
- AlicenseAqualityAmaintenanceMCP server for controlling Miro whiteboards with AI assistants. Create and manage stickies, shapes, frames, connectors, and more.8826MIT
- AlicenseAqualityAmaintenanceMCP server for ProductPlan - enables AI assistants to interact with roadmaps, OKRs, and discovery features.473MIT