wikipedia-mcp-server
Server Details
Search Wikipedia, read summaries and full text, target sections, find nearby pages, list languages.
- Status
- Healthy
- Uptime
- 99.9% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/wikipedia-mcp-server
- GitHub Stars
- 4
- Server Listing
- wikipedia-mcp-server
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: full article/section reading vs. short summary vs. table of contents vs. full-text search vs. nearby search vs. language editions. The descriptions explicitly guide when to use get_summary versus get_article and when to combine get_sections with section_index, resolving the only potential overlap.
All tools use a consistent wikipedia_ prefix followed by a clear verb_noun pattern: get_article, get_languages, get_sections, get_summary, search_articles, search_nearby. There are no mixed conventions or vague names.
Six tools is well-scoped for a Wikipedia reading and search server, with each tool covering a distinct retrieval mode. No tool feels redundant or missing to justify its count.
The surface covers core Wikipedia workflows: search, summaries, full articles, section targeting, language editions, and nearby place search. Minor gaps exist for related-article links, category browsing, or revision history, but agents can work around these for most research tasks.
Available Tools
6 toolswikipedia_get_articleGet Wikipedia ArticleARead-onlyInspect
Fetch article content as clean plain text. Without section_index: returns the full article with == Section == markers preserved for structure — or, when the article exceeds the size budget, a compact section outline (truncated: true) that points to wikipedia_get_sections plus a section_index read instead of the full text. With section_index (from wikipedia_get_sections): returns that section and every subsection nested under it, each heading above its own body. section_index 0 is the lead section, the text above the first heading, which is the full prose wikipedia_get_summary returns only a truncated fragment of. Section-targeted reads are faster and smaller when only part of the article is needed. Both paths keep superscripts and subscripts apart from the text beside them (10²³, H₂O), render formulas as their TeX, and render code samples as fenced blocks with their indentation intact. A section read also renders data tables as pipe-delimited rows (header row first) and infoboxes as "label: value" lines; a table too large to include leaves a "[table omitted: N rows (table T)]" marker. Pass table_index: T with section_index to read only that table in complete row pages whose table text fits within 40,000 UTF-8 bytes on both surfaces. Follow next_cursor as cursor with the same inputs to continue at the pinned revision; caption/header/delimiter appear once. An indivisible oversized row or first-page caption/header is returned alone with oversized_row: true. The full-article path carries no data tables or infoboxes, so read the section for those. Phylogenetic clade trees render as fenced, indented branches, with unnamed forks preserved; unparseable trees leave "[table omitted: unparseable clade]". Clade trees have no table_index. Tables used only for layout, such as multi-column lists, keep their content as ordinary text. Page furniture is omitted as well — maintenance banners, sister-project and library-resource boxes, portal bars, and spoken-article notices — while a hatnote naming a related article is kept. Every read returns the canonical article URL and the ID of the revision it was read from, for citation; a full read also returns that revision's timestamp. Redirect pages are followed automatically, and the citation fields name the target article.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| cursor | No | Opaque next_cursor from the previous table page. Keep title, language, section_index and table_index unchanged. Empty means the first page. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
| table_index | No | 1-based outer wikitable or infobox ordinal in the section. Requires section_index. Returns only that table in complete row pages; nested cell tables have no ordinal. | |
| section_index | No | Section index from wikipedia_get_sections. 0 reads the lead section (Introduction) — the text above the first heading. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Canonical desktop URL of the article (e.g. "https://en.wikipedia.org/wiki/Eiffel_Tower"), for citing the page rather than composing a URL from the title. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Resolved article title. |
| notice | No | Redirect guidance or disclosure that optional TOC verification was unavailable. |
| pageid | No | Wikipedia page ID. Absent on API parse responses that omit it. |
| content | No | Plain-text article content. Both full articles and section reads carry == Section == markers above the text each one heads, code samples as ``` fenced blocks, and superscripts and subscripts as Unicode characters (10²³, H₂O), or as ^x / ^(…) and _x / _(…) where a character has none. Section reads also carry data tables as | cell | cell | rows with a | --- | row under the header. When truncated is true, this instead carries a section outline (heading names and byte sizes) plus a pointer to the targeted-read path. |
| language | No | Language edition queried. |
| truncated | No | True when a full-article read exceeded the size budget and content is a section outline instead of the full text. Always false for section reads and for full articles within budget. |
| row_offset | No | Zero-based first row position in this page. |
| table_rows | No | Total rendered rows, including the first header row. |
| next_cursor | No | Pass unchanged as cursor with the same table request to read the pinned revision. Absent on the final page. |
| revision_id | No | ID of the revision the content was read from. "https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>" is a permanent link to exactly that version. |
| table_count | No | Available outer data tables in the pinned section. |
| table_index | No | Selected table ordinal, for table reads only. |
| content_type | No | Content type: "full_article" or "section". |
| last_modified | No | ISO 8601 timestamp of that revision, for dating the content. Full-article reads only; a section read carries none. |
| oversized_row | No | True when an indivisible row or first-page caption/header exceeds the 40,000-byte table-text budget and is returned alone. |
| rows_returned | No | Number of complete rows returned in this page. |
| section_title | No | Section title when section_index was provided — "Introduction" for the lead, which has no heading of its own. Absent for full-article reads. |
| original_length | No | Character length of the full article text before outlining. Present only when truncated is true. |
| redirected_from | No | Original alias followed to the resolved article. |
| table_continued | No | True for a headerless continuation page. |
| redirect_section | No | Redirect target fragment, or its normalized heading when verified. Explicit section_index still controls the read. |
| sections_suggested | No | True when content is an outline — use its verified section_index values with wikipedia_get_article, or call wikipedia_get_sections for unindexed entries. Present only when truncated is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint, yet the description adds substantial behavior: size-budget truncation with truncated: true plus a section outline, omission markers for oversized tables and unparseable clade trees, page-furniture removal rules, redirect following, revision pinning for pagination, and revision/URL citation fields. It discloses edge-case failure shapes (oversized_row: true) that no annotation covers.
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?
It is front-loaded correctly, leading with the core full-article vs. section behavior, but it is a single ~250-word paragraph that mixes primary usage, pagination mechanics, and niche rendering rules (phylogenetic clade trees, hatnotes, portal bars) with no structure. Several clauses about rendering quirks could be trimmed or deferred given an output schema exists.
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 everything an agent needs: how to get the full article, how the size budget changes the result, how to escalate to a section or table read, how pagination resumes, and what citation metadata comes back. With an output schema present, remaining return-shape detail is already handled there.
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, but the description adds real meaning: section_index 0 is the lead section and a section read includes all nested subsections, table_index must be paired with section_index, and cursor must be replayed with the same inputs at the pinned revision. These clarify interaction constraints between parameters rather than restating 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?
States a specific verb and resource ("Fetch article content as clean plain text") and immediately distinguishes the two modes (full article vs. section_index read). It names siblings wikipedia_get_sections and wikipedia_get_summary and explains how it differs from each, so an agent can pick it apart from siblings without reading further.
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?
Gives explicit branching: omit section_index for full article, pass it for a section, and explains that truncated full reads point to wikipedia_get_sections plus a section_index read instead. It also states the selection heuristic ("Section-targeted reads are faster and smaller when only part of the article is needed") and notes the full-article path carries no tables, so the section path is required for those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_languagesGet Wikipedia Article LanguagesARead-onlyInspect
List the language editions available for a Wikipedia article. Returns language codes, article titles in each language, and full URLs. Useful for cross-language research and for discovering the correct article title in a target language before fetching it. A popular article exists in hundreds of editions, so pass editions to narrow the answer to the codes you care about — the codes with no article come back under missing, and total_languages still reports the full count. Redirect pages are followed automatically, and source_title reports the resolved article the links belong to. The language parameter specifies which edition to query from.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title in the source language edition. A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| editions | No | Edition codes to keep, e.g. ["fr", "de", "gsw"]. Each is matched case-insensitively against both edition_code and language_code, so either spelling of a mismatch edition finds it ("gsw" matches the edition whose edition_code is "als"). Omit to list every edition. A code with no article for this title is reported under missing rather than dropped, and is not a failure. | |
| language | No | Wikipedia language edition to query from (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| missing | No | Requested edition codes with no article for this title, echoed as they were passed. Present whenever editions was given — empty when every code matched — and absent otherwise. |
| languages | No | Available language editions excluding the source language. Narrowed to the requested codes when editions was given, and empty when none of them matched. |
| source_title | No | Resolved article title in the source language edition — the redirect target when the input was an alias. |
| source_language | No | The language edition that was queried. |
| total_languages | No | Total number of other language editions the article has. Always the unfiltered count, so it exceeds the length of languages whenever editions narrowed the list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses important behaviors: redirects are followed automatically, source_title reports the resolved article, missing edition codes are returned under a missing field, and total_languages still reports the full count. This gives the agent a clear picture of edge-case 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 front-loaded with the core action and return value, then adds use-case context and behavioral details. Every sentence contributes useful information without fluff or repetition of the schema.
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, read-only annotations, and detailed parameter documentation in the schema, the description is complete for an agent to select and invoke the tool correctly. It covers redirect handling, missing codes, total count, and the language edition behavior, leaving no material 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?
The schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantics around editions, such as case-insensitive matching, the missing field behavior, and the fact that total_languages reflects the full count, going beyond the schema text.
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 a specific verb and resource: "List the language editions available for a Wikipedia article," and enumerates the returned data (language codes, titles, URLs). This clearly distinguishes it from siblings like wikipedia_get_article and wikipedia_get_sections, which serve different purposes.
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 gives clear context: use it for cross-language research and for discovering the correct article title in a target language before fetching it. It explains when narrowing with editions is useful, but it does not explicitly state when not to use this tool or name the alternative sibling to prefer in other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_sectionsGet Wikipedia Article SectionsARead-onlyInspect
Fetch the table of contents for a Wikipedia article. Returns section titles, heading levels, section numbering (e.g. "2.1"), and section_index values. The first entry is the lead section, index 0, titled Introduction — the text above the first heading, which Wikipedia's own table of contents omits. Pass a section_index to wikipedia_get_article to retrieve just that section. Useful for enumerating article structure before doing a targeted section read. Redirect pages are followed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| title | No | Article title as resolved by Wikipedia. |
| pageid | No | Wikipedia page ID. Absent for stub articles. |
| language | No | Language edition queried. |
| sections | No | Article sections in document order with index values for targeted reads, led by the index-0 lead entry. |
| total_sections | No | Number of entries returned, counting the index-0 lead section. |
| redirected_from | No | Original alias followed to this article. |
| redirect_section | No | Target fragment of the redirect, normalized to its heading when matched. |
| redirect_section_index | No | Unique numeric TOC index matching the redirect anchor. Absent when no index is verified. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses important behavior: redirect pages are followed automatically, the lead section is included as index 0 even though Wikipedia's TOC omits it, and return fields are described. These are meaningful operational details for correct invocation and interpretation.
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 core action and return shape, then adds the lead-section nuance and sibling relationship. Every sentence contributes actionable context without repetition.
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 output schema, annotations, and fully documented parameters, the description supplies the remaining context an agent needs: section return format, special lead-section behavior, redirect handling, and how to reuse section_index with a sibling 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 both title and language are already well documented in the schema. The description does not add meaningful parameter semantics beyond that structured documentation, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: fetching the table of contents for a Wikipedia article. It clearly distinguishes this structural-listing tool from article retrieval by explaining it returns section titles, heading levels, numbering, and section_index values.
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 explicitly tells the agent to pass a section_index to wikipedia_get_article for a targeted section read and frames this tool as useful for enumerating article structure beforehand. That gives a clear alternative and workflow condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_summaryGet Wikipedia SummaryARead-onlyInspect
Fetch the short article summary that answers "what is X?". The extract is a truncated fragment from the start of the lead section — usually a sentence or two, and as little as a tenth of the lead — alongside the Wikidata QID (wikibase_item) for cross-referencing with wikidata-mcp-server, a short description, a thumbnail URL, the canonical article URL, the revision the extract was read from, and, for a geotagged article, latitude and longitude that pass straight to wikipedia_search_nearby to answer "what else is notable near this". For the lead section in full, call wikipedia_get_article with section_index 0. Redirect pages are followed automatically. When page_type is "disambiguation", the title matched a disambiguation page — call wikipedia_search_articles with a more specific query to find the intended article. Prefer this over wikipedia_get_article unless article depth is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (URL-decoded), e.g. "Python (programming language)". A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Canonical desktop URL of the article (e.g. "https://en.wikipedia.org/wiki/Eiffel_Tower"), for citing the page rather than composing a URL from the title. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Resolved article title (may differ from input for redirects). |
| notice | No | Guidance when the existing page has no summary extract. |
| pageid | No | Wikipedia page ID. Absent when the API omits it. |
| extract | No | Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Superscripts and subscripts stay apart from the text beside them (10²³, H₂O), as wikipedia_get_article renders them. Call wikipedia_get_article with section_index 0 for the full lead. |
| language | No | Language edition queried. |
| latitude | No | WGS 84 latitude of the article subject in decimal degrees. Pass with longitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged. |
| longitude | No | WGS 84 longitude of the article subject in decimal degrees. Pass with latitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged. |
| page_type | No | Page type from the Wikipedia REST API. Common values: "standard" (regular article), "disambiguation" (disambiguation page), "no-extract" (article with no extract). When "disambiguation", call wikipedia_search_articles with a more specific query. |
| description | No | Short description of the article subject. |
| revision_id | No | ID of the revision the extract was read from. "https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>" is a permanent link to exactly that version. |
| last_modified | No | ISO 8601 timestamp of that revision, for dating the content. |
| thumbnail_url | No | URL of the article thumbnail image, if available. |
| wikibase_item | No | Wikidata QID (e.g. "Q28865"). Use to chain into wikidata-mcp-server without a separate lookup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carries the rest — and it does: automatic redirect following, the non-obvious truncation behavior (a tenth of the lead is far less than most agents would assume), the disambiguation signal, and the geotag passthrough to wikipedia_search_nearby. These are behavioral traits an agent could not infer from 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 purpose and the alternative routing are front-loaded and the sentences are dense with useful content. However, the long catalogue of return fields (QID, short description, thumbnail, canonical URL, revision, lat/long) is partly redundant since an output schema exists, and it slows the read before the decision-relevant routing rules arrive.
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 two-parameter read tool with full schema coverage, an output schema, and minimal annotations, this covers nearly everything: scope, truncation, redirects, disambiguation handling, and sibling routing. The one gap is what happens when the title doesn't resolve to any page — no error or not-found behavior is described.
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 both parameters are fully documented in the schema, so the baseline is 3. The description adds only an implicit gloss on title being the "X" in "what is X?" — it says nothing about the language parameter's effect on the returned extract or the QID.
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?
It names a specific verb and resource (fetch the short article summary), defines the scope of what a 'summary' means here (truncated fragment of the lead, sometimes as little as a tenth), and explicitly contrasts itself with wikipedia_get_article. An agent can distinguish it from every sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the positive case ("what is X?" lookups), the explicit alternative for depth (wikipedia_get_article with section_index 0), a routing rule when page_type is disambiguation (retry with wikipedia_search_articles), and a general preference over get_article. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_search_articlesSearch WikipediaARead-onlyInspect
Search Wikipedia articles by full-text query. Returns ranked results with plain-text titles, short descriptions, Wikidata QIDs, snippets (HTML stripped), page IDs, and word counts — the description is usually enough to tell same-named articles apart without a summary call per result. When Wikipedia has a spelling correction for the query, it is returned as suggestion. Best when the exact article title is unknown or when multiple articles on a topic are needed. Pass a result title to wikipedia_get_summary, wikipedia_get_article, or wikipedia_get_sections for follow-up reads. Use offset to page beyond the first result page. Supports all Wikipedia language editions.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Result order (default relevance). Keep the same query and sort when paging with offset. | relevance |
| limit | No | Maximum number of results to return per page (default 10). Positive integers above 50 are clamped with a notice. | |
| query | Yes | Search query. CirrusSearch operators include incategory:"1648 treaties", morelike:Peace of Westphalia, intitle:Python, hastemplate:Infobox, and insource:Python; support depends on the selected installation. Must not be empty. | |
| offset | No | Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error. Wikipedia serves no result past 10,000, so an offset at or beyond that fails — narrow the query instead. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The result ceiling that cut this page — the search window. Present only alongside truncated. |
| sort | No | Effective search order sent to Wikipedia. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results returned on this page. |
| notice | No | Guidance when no results matched (naming the spelling suggestion when there is one), when the end of results was reached while paging, when the page was cut at the search window, or when descriptions and Wikidata QIDs could not be loaded for the page. Absent on ordinary result pages. |
| offset | No | The result offset applied to this page (echo of the input). |
| results | No | Ranked search results. |
| language | No | Language edition queried. |
| truncated | No | True when this page was cut at Wikipedia's 10,000-result search window and totalCount matches remain that no offset can reach. Absent on every other page, including a genuine last page. |
| nextOffset | No | Offset to request the next page. Present only when more results remain — pass it back as offset to continue; absent at the end of results. |
| suggestion | No | Wikipedia's spelling correction for the query, when it has one (e.g. "einstein" for "einstien"). Re-run with it as query to search the corrected spelling. Absent when the query has no likely misspelling. |
| totalCount | No | Total matching results in Wikipedia. |
| appliedLimit | No | Applied page size, present only when clamped. |
| effectiveQuery | No | The query sent to Wikipedia. |
| requestedLimit | No | Requested page size, present only when clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, yet the description still adds real behavioral context: result fields, HTML-stripped snippets, the spelling-correction suggestion field, and the 10,000-result ceiling where an outdated offset fails rather than erroring on an empty page. These are operational constraints an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and scope, then layered with return shape, guidance, and pagination in a sensible order. It runs slightly long, and the paging note is partially duplicated by the offset schema description, but no sentence is filler.
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?
An output schema exists, so return values need not be explained, yet the description qualifies them usefully (plain-text titles, stripped snippets, QIDs). Combined with the offset ceiling and clamping behavior, an agent has everything needed to call this correctly on the first attempt.
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 enum values and limits are already documented. The description adds marginal value by explaining the offset paging workflow and by noting that all Wikipedia language editions are supported, which frames the language parameter's reach beyond the schema's three examples.
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?
States a specific verb and resource ("Search Wikipedia articles by full-text query") and immediately frames the scope as article search across language editions. It is clearly separable from siblings like wikipedia_get_summary and wikipedia_get_article, which it names as follow-up tools rather than competitors.
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 gives the use case: "Best when the exact article title is unknown or when multiple articles on a topic are needed," and routes the agent onward by saying to pass a result title to wikipedia_get_summary, wikipedia_get_article, or wikipedia_get_sections. That is a named alternative plus the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_search_nearbySearch Wikipedia NearbyARead-onlyInspect
Find Wikipedia articles about places near a geographic coordinate. Returns articles sorted by distance from the query point, with titles, short descriptions, Wikidata QIDs, page IDs, coordinates, and distance in meters. Useful for "what is notable near X?" research workflows. Only articles carrying their own coordinate tag (GeoData, set on the article itself — not the Wikidata item's coordinate) are returned, and that tag is what places and measures each result; not all articles about locations are geotagged, and an article whose tag is wrong appears where the tag puts it, which its description usually makes plain.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 10). Positive integers above 500 are clamped with a notice. Geosearch has no pagination; use narrower radii at the ceiling. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
| latitude | Yes | WGS 84 latitude in decimal degrees (range: −90 to 90). | |
| longitude | Yes | WGS 84 longitude in decimal degrees (range: −180 to 180). | |
| radius_meters | No | Search radius in meters (default 1000, min 10, max 10000 — the MediaWiki geosearch bounds). Must be an integer; a value above the maximum is clamped to it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results returned. |
| notice | No | Guidance when results were capped (raise limit, or — at the 500 ceiling — sweep narrower radii) or when no geotagged articles were found (increase radius). Absent when neither applies. |
| results | No | Geotagged articles sorted ascending by distance_meters. |
| language | No | Language edition queried. |
| truncated | No | True when more articles matched than the limit allowed. Established by probing one result past the limit, so a match count landing exactly on the limit reports false — except at the 500 ceiling, where no probe is possible and any full page reports true. |
| appliedLimit | No | Applied result count, present only when clamped. |
| queryLatitude | No | Latitude used for the search. |
| queryLongitude | No | Longitude used for the search. |
| requestedLimit | No | Requested result count, present only when clamped. |
| radiusMetersUsed | No | Radius in meters used for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint; the description goes well beyond by disclosing that results depend on the article's own GeoData tag rather than the Wikidata coordinate, that ungeotagged place articles are excluded, and that erroneous tags place and measure a result incorrectly. That is exactly the kind of silent-failure behavior an agent needs before trusting an empty or odd result set.
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?
Purpose is front-loaded in the first sentence, followed by return shape and then the caveats, with no filler. The final sentence is dense and multi-clause (em-dash asides about GeoData vs Wikidata), which costs some readability but the content earns its place.
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?
An output schema exists and annotations cover the safety profile, so the definition only needs purpose plus edge-case behavior — both are present. The remaining gap is routing: nothing tells the agent what to do when this returns nothing or when a text query would be the better 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%, and the schema itself already documents latitude/longitude ranges, radius bounds, clamping, and the no-pagination ceiling. The description adds only the implicit link between coordinates and the distance-sorted output; it contributes little parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Find Wikipedia articles about places near a geographic coordinate' — plus the ordering (by distance) and returned fields. The geographic framing implicitly separates it from the text-based wikipedia_search_articles sibling, but no sibling is named, so an agent must infer the boundary.
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?
Gives a concrete use context ('what is notable near X?' research workflows) that tells the agent when this is the right call, and the GeoData caveat implicitly signals when it will under-return. No explicit when-not or named alternative (e.g., use wikipedia_search_articles for text/title lookups), which keeps it from a 5.
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.
2 tool updates
- Changed
wikipedia_get_article12 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Opaque next_cursor from the previous table page. Keep title, language, section_index and table_index unchanged. Empty means the first page.", + "type": "string" +} - added
Input schema / properties / table_indexAdded value: +{ + "description": "1-based outer wikitable or infobox ordinal in the section. Requires section_index. Returns only that table in complete row pages; nested cell tables have no ordinal.", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_table`: A table selector is unavailable or section_index/table_index is missing for a table read. `invalid_cursor`: A table cursor is malformed, mismatched, or points past the pinned table. `revision_unavailable`: The pinned table revision cannot be read or verified. `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "invalid_title", - "invalid_section", - "invalid_language" -]New value: +[ + "invalid_table", + "invalid_cursor", + "revision_unavailable", + "not_found", + "invalid_title", + "invalid_section", + "invalid_language" +] - added
Output schema / properties / next_cursorAdded value: +{ + "description": "Pass unchanged as cursor with the same table request to read the pinned revision. Absent on the final page.", + "type": "string" +} - added
Output schema / properties / oversized_rowAdded value: +{ + "description": "True when an indivisible row or first-page caption/header exceeds the 40,000-byte table-text budget and is returned alone.", + "type": "boolean" +} - added
Output schema / properties / row_offsetAdded value: +{ + "description": "Zero-based first row position in this page.", + "type": "number" +} - added
Output schema / properties / rows_returnedAdded value: +{ + "description": "Number of complete rows returned in this page.", + "type": "number" +} - added
Output schema / properties / table_continuedAdded value: +{ + "description": "True for a headerless continuation page.", + "type": "boolean" +} - added
Output schema / properties / table_countAdded value: +{ + "description": "Available outer data tables in the pinned section.", + "type": "number" +} - added
Output schema / properties / table_indexAdded value: +{ + "description": "Selected table ordinal, for table reads only.", + "type": "number" +} - added
Output schema / properties / table_rowsAdded value: +{ + "description": "Total rendered rows, including the first header row.", + "type": "number" +}
- Changed
wikipedia_search_articles2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `empty_query`: The query is an empty string, which Wikipedia reads as a missing parameter. `offset_too_large`: The offset is at or past the search window, which has no continuation. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_query`: CirrusSearch refuses a regex because its syntax is invalid or it is too complex. `empty_query`: The query is an empty string, which Wikipedia reads as a missing parameter. `offset_too_large`: The offset is at or past the search window, which has no continuation. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "empty_query", - "offset_too_large", - "invalid_language" -]New value: +[ + "invalid_query", + "empty_query", + "offset_too_large", + "invalid_language" +]
5 tool updates
- Changed
wikipedia_get_article4 fields changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Redirect guidance or disclosure that optional TOC verification was unavailable.", + "type": "string" +} - added
Output schema / properties / redirect_sectionAdded value: +{ + "description": "Redirect target fragment, or its normalized heading when verified. Explicit section_index still controls the read.", + "type": "string" +} - added
Output schema / properties / redirected_fromAdded value: +{ + "description": "Original alias followed to the resolved article.", + "type": "string" +} - changed
Output schema / properties / sections_suggested / descriptionPrevious value: -"True when content is an outline — call wikipedia_get_sections, then wikipedia_get_article with a section_index to read a specific section. Present only when truncated is true."New value: +"True when content is an outline — use its verified section_index values with wikipedia_get_article, or call wikipedia_get_sections for unindexed entries. Present only when truncated is true."
- Changed
wikipedia_get_sections3 fields changed- added
Output schema / properties / redirect_sectionAdded value: +{ + "description": "Target fragment of the redirect, normalized to its heading when matched.", + "type": "string" +} - added
Output schema / properties / redirect_section_indexAdded value: +{ + "description": "Unique numeric TOC index matching the redirect anchor. Absent when no index is verified.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / redirected_fromAdded value: +{ + "description": "Original alias followed to this article.", + "type": "string" +}
- Changed
wikipedia_get_summary1 field changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Guidance when the existing page has no summary extract.", + "type": "string" +}
- Changed
wikipedia_search_articles8 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of results to return per page (default 10, max 50). Must be a positive integer."New value: +"Maximum number of results to return per page (default 10). Positive integers above 50 are clamped with a notice." - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +9007199254740991 - changed
Input schema / properties / query / descriptionPrevious value: -"Search query (e.g. \"Python programming language\"). Must not be empty."New value: +"Search query. CirrusSearch operators include incategory:\"1648 treaties\", morelike:Peace of Westphalia, intitle:Python, hastemplate:Infobox, and insource:Python; support depends on the selected installation. Must not be empty." - added
Input schema / properties / sortAdded value: +{ + "default": "relevance", + "description": "Result order (default relevance). Keep the same query and sort when paging with offset.", + "enum": [ + "relevance", + "last_edit_desc", + "create_timestamp_desc", + "incoming_links_desc", + "title_natural_asc" + ], + "type": "string" +} - changed
Output schema / anyOfPrevious value: -[ - { - "not": { - "required": [ - "error" - ] - }, - "required": [ - "results", - "language", - "effectiveQuery", - "totalCount", - "offset", - "shown" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "results", + "language", + "sort", + "effectiveQuery", + "totalCount", + "offset", + "shown" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / appliedLimitAdded value: +{ + "description": "Applied page size, present only when clamped.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / requestedLimitAdded value: +{ + "description": "Requested page size, present only when clamped.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / sortAdded value: +{ + "description": "Effective search order sent to Wikipedia.", + "enum": [ + "relevance", + "last_edit_desc", + "create_timestamp_desc", + "incoming_links_desc", + "title_natural_asc" + ], + "type": "string" +}
- Changed
wikipedia_search_nearby10 fields changed- added
Input schema / properties / latitude / maximumAdded value: +90 - added
Input schema / properties / latitude / minimumAdded value: +-90 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of results to return (default 10, max 500 — the MediaWiki geosearch ceiling). Must be a positive integer. Geosearch has no pagination, so articles past this limit are only reachable by raising it or searching narrower radii."New value: +"Maximum number of results to return (default 10). Positive integers above 500 are clamped with a notice. Geosearch has no pagination; use narrower radii at the ceiling." - changed
Input schema / properties / limit / maximumPrevious value: -500New value: +9007199254740991 - added
Input schema / properties / longitude / maximumAdded value: +180 - added
Input schema / properties / longitude / minimumAdded value: +-180 - added
Output schema / properties / appliedLimitAdded value: +{ + "description": "Applied result count, present only when clamped.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `invalid_coordinates`: Latitude or longitude is outside valid WGS 84 range. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "invalid_coordinates", - "invalid_language" -]New value: +[ + "invalid_language" +] - added
Output schema / properties / requestedLimitAdded value: +{ + "description": "Requested result count, present only when clamped.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
2 tool updates
- Changed
wikipedia_get_article4 fields changed- changed
Output schema / properties / content / descriptionPrevious value: -"Plain-text article content. Both full articles and section reads carry == Section == markers above the text each one heads. When truncated is true, this instead carries a section outline (heading names and byte sizes) plus a pointer to the targeted-read path."New value: +"Plain-text article content. Both full articles and section reads carry == Section == markers above the text each one heads, code samples as ``` fenced blocks, and superscripts and subscripts as Unicode characters (10²³, H₂O), or as ^x / ^(…) and _x / _(…) where a character has none. Section reads also carry data tables as | cell | cell | rows with a | --- | row under the header. When truncated is true, this instead carries a section outline (heading names and byte sizes) plus a pointer to the targeted-read path." - added
Output schema / properties / last_modifiedAdded value: +{ + "description": "ISO 8601 timestamp of that revision, for dating the content. Full-article reads only; a section read carries none.", + "type": "string" +} - added
Output schema / properties / revision_idAdded value: +{ + "description": "ID of the revision the content was read from. \"https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>\" is a permanent link to exactly that version.", + "type": "string" +} - added
Output schema / properties / urlAdded value: +{ + "description": "Canonical desktop URL of the article (e.g. \"https://en.wikipedia.org/wiki/Eiffel_Tower\"), for citing the page rather than composing a URL from the title.", + "type": "string" +}
- Changed
wikipedia_get_summary1 field changed- changed
Output schema / properties / extract / descriptionPrevious value: -"Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Call wikipedia_get_article with section_index 0 for the full lead."New value: +"Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Superscripts and subscripts stay apart from the text beside them (10²³, H₂O), as wikipedia_get_article renders them. Call wikipedia_get_article with section_index 0 for the full lead."
2 tool updates
- Changed
wikipedia_search_articles4 fields changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no results matched, when the end of results was reached while paging, or when the page was cut at the search window. Absent on ordinary result pages."New value: +"Guidance when no results matched (naming the spelling suggestion when there is one), when the end of results was reached while paging, when the page was cut at the search window, or when descriptions and Wikidata QIDs could not be loaded for the page. Absent on ordinary result pages." - added
Output schema / properties / results / items / properties / descriptionAdded value: +{ + "description": "Short description of the article subject (e.g. \"General-purpose programming language\"). Absent when the article has none, or when descriptions could not be loaded for the page (see notice).", + "type": "string" +} - added
Output schema / properties / results / items / properties / wikibase_itemAdded value: +{ + "description": "Wikidata QID (e.g. \"Q28865\") for chaining into wikidata-mcp-server. Absent when the article has no Wikidata item, or when it could not be loaded for the page (see notice).", + "type": "string" +} - added
Output schema / properties / suggestionAdded value: +{ + "description": "Wikipedia's spelling correction for the query, when it has one (e.g. \"einstein\" for \"einstien\"). Re-run with it as query to search the corrected spelling. Absent when the query has no likely misspelling.", + "type": "string" +}
- Changed
wikipedia_search_nearby6 fields changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when results were capped (raise limit or sweep narrower radii) or when no geotagged articles were found (increase radius). Absent when neither applies."New value: +"Guidance when results were capped (raise limit, or — at the 500 ceiling — sweep narrower radii) or when no geotagged articles were found (increase radius). Absent when neither applies." - added
Output schema / properties / results / items / properties / descriptionAdded value: +{ + "description": "Short description of the article subject (e.g. \"Tower in Paris, France\"). Absent when the article has none.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / latitude / descriptionPrevious value: -"Article subject latitude in decimal degrees."New value: +"Latitude of the article's own coordinate tag, in decimal degrees." - changed
Output schema / properties / results / items / properties / longitude / descriptionPrevious value: -"Article subject longitude in decimal degrees."New value: +"Longitude of the article's own coordinate tag, in decimal degrees." - added
Output schema / properties / results / items / properties / wikibase_itemAdded value: +{ + "description": "Wikidata QID (e.g. \"Q243\") for chaining into wikidata-mcp-server. Absent when the article has no Wikidata item.", + "type": "string" +} - changed
Output schema / properties / truncated / descriptionPrevious value: -"True when more articles matched than the limit allowed. Established by probing one result past the limit, so a match count landing exactly on the limit reports false."New value: +"True when more articles matched than the limit allowed. Established by probing one result past the limit, so a match count landing exactly on the limit reports false — except at the 500 ceiling, where no probe is possible and any full page reports true."
2 tool updates
- Changed
wikipedia_get_languages4 fields changed- added
Input schema / properties / editionsAdded value: +{ + "description": "Edition codes to keep, e.g. [\"fr\", \"de\", \"gsw\"]. Each is matched case-insensitively against both edition_code and language_code, so either spelling of a mismatch edition finds it (\"gsw\" matches the edition whose edition_code is \"als\"). Omit to list every edition. A code with no article for this title is reported under missing rather than dropped, and is not a failure.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / languages / descriptionPrevious value: -"Available language editions excluding the source language."New value: +"Available language editions excluding the source language. Narrowed to the requested codes when editions was given, and empty when none of them matched." - added
Output schema / properties / missingAdded value: +{ + "description": "Requested edition codes with no article for this title, echoed as they were passed. Present whenever editions was given — empty when every code matched — and absent otherwise.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / total_languages / descriptionPrevious value: -"Total number of other language editions available."New value: +"Total number of other language editions the article has. Always the unfiltered count, so it exceeds the length of languages whenever editions narrowed the list."
- Changed
wikipedia_get_summary5 fields changed- added
Output schema / properties / last_modifiedAdded value: +{ + "description": "ISO 8601 timestamp of that revision, for dating the content.", + "type": "string" +} - added
Output schema / properties / latitudeAdded value: +{ + "description": "WGS 84 latitude of the article subject in decimal degrees. Pass with longitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged.", + "type": "number" +} - added
Output schema / properties / longitudeAdded value: +{ + "description": "WGS 84 longitude of the article subject in decimal degrees. Pass with latitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged.", + "type": "number" +} - added
Output schema / properties / revision_idAdded value: +{ + "description": "ID of the revision the extract was read from. \"https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>\" is a permanent link to exactly that version.", + "type": "string" +} - added
Output schema / properties / urlAdded value: +{ + "description": "Canonical desktop URL of the article (e.g. \"https://en.wikipedia.org/wiki/Eiffel_Tower\"), for citing the page rather than composing a URL from the title.", + "type": "string" +}
5 tool updates
- Changed
wikipedia_get_article8 fields changed- changed
Input schema / properties / section_index / descriptionPrevious value: -"Section index from wikipedia_get_sections. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text."New value: +"Section index from wikipedia_get_sections. 0 reads the lead section (Introduction) — the text above the first heading. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text." - added
Input schema / properties / section_index / maximumAdded value: +9007199254740991 - added
Input schema / properties / section_index / minimumAdded value: +0 - changed
Input schema / properties / section_index / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / title / descriptionPrevious value: -"Article title (e.g. \"Python (programming language)\")."New value: +"Article title (e.g. \"Python (programming language)\"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "invalid_section", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "invalid_section", + "invalid_language" +] - changed
Output schema / properties / section_title / descriptionPrevious value: -"Section title when section_index was provided. Absent for full-article reads."New value: +"Section title when section_index was provided — \"Introduction\" for the lead, which has no heading of its own. Absent for full-article reads."
- Changed
wikipedia_get_languages3 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title in the source language edition."New value: +"Article title in the source language edition. A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the title in the specified language. `no_other_languages`: Article exists but has no other language editions. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the title in the specified language. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `no_other_languages`: Article exists but has no other language editions. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "no_other_languages", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "no_other_languages", + "invalid_language" +]
- Changed
wikipedia_get_sections9 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title (e.g. \"Python (programming language)\")."New value: +"Article title (e.g. \"Python (programming language)\"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `no_sections`: Article exists but has no sections (stub or very short article). `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `no_sections`: Article exists but has no sections (stub or very short article). `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "no_sections", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "no_sections", + "invalid_language" +] - changed
Output schema / properties / sections / descriptionPrevious value: -"Ordered list of article sections with index values for targeted reads."New value: +"Article sections in document order with index values for targeted reads, led by the index-0 lead entry." - changed
Output schema / properties / sections / items / properties / index / descriptionPrevious value: -"Section index — pass to wikipedia_get_article as section_index."New value: +"Section index — pass to wikipedia_get_article as section_index. 0 is the lead section." - changed
Output schema / properties / sections / items / properties / level / descriptionPrevious value: -"Heading depth: 2 = ==, 3 = ===, etc."New value: +"Heading depth: 2 = ==, 3 = ===, etc. The lead section reports 1." - changed
Output schema / properties / sections / items / properties / number / descriptionPrevious value: -"Section number (e.g. \"2.1\") for hierarchical navigation."New value: +"Section number (e.g. \"2.1\") for hierarchical navigation; \"0\" for the lead section." - changed
Output schema / properties / sections / items / properties / title / descriptionPrevious value: -"Section heading text."New value: +"Section heading text; \"Introduction\" for the lead, which has no heading." - changed
Output schema / properties / total_sections / descriptionPrevious value: -"Total number of sections in the article."New value: +"Number of entries returned, counting the index-0 lead section."
- Changed
wikipedia_get_summary4 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title (URL-decoded), e.g. \"Python (programming language)\"."New value: +"Article title (URL-decoded), e.g. \"Python (programming language)\". A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "invalid_language" +] - changed
Output schema / properties / extract / descriptionPrevious value: -"Plain-text lead-section extract."New value: +"Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Call wikipedia_get_article with section_index 0 for the full lead."
- Changed
wikipedia_search_articles8 fields changed- changed
Input schema / properties / limit / maximumPrevious value: -9007199254740991New value: +50 - changed
Input schema / properties / offset / descriptionPrevious value: -"Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error."New value: +"Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error. Wikipedia serves no result past 10,000, so an offset at or beyond that fails — narrow the query instead." - changed
Input schema / properties / query / descriptionPrevious value: -"Search query (e.g. \"Python programming language\")."New value: +"Search query (e.g. \"Python programming language\"). Must not be empty." - added
Output schema / properties / capAdded value: +{ + "description": "The result ceiling that cut this page — the search window. Present only alongside truncated.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `empty_query`: The query is an empty string, which Wikipedia reads as a missing parameter. `offset_too_large`: The offset is at or past the search window, which has no continuation. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "invalid_language" -]New value: +[ + "empty_query", + "offset_too_large", + "invalid_language" +] - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no results matched — e.g. try different keywords, or that the end of results was reached when paging. Absent on successful result pages."New value: +"Guidance when no results matched, when the end of results was reached while paging, or when the page was cut at the search window. Absent on ordinary result pages." - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when this page was cut at Wikipedia's 10,000-result search window and totalCount matches remain that no offset can reach. Absent on every other page, including a genuine last page.", + "type": "boolean" +}
6 tool updates
- First observed
wikipedia_get_article - First observed
wikipedia_get_languages - First observed
wikipedia_get_sections - First observed
wikipedia_get_summary - First observed
wikipedia_search_articles - First observed
wikipedia_search_nearby
Related MCP Connectors
Search and read Wikipedia in any language: summaries and full articles. Free, no key.
Wikipedia MCP — wraps Wikipedia REST API (free, no auth)
Live Wikipedia edit feed, page summaries, trending pages, and Wikidata search.
Wikipedia, Wikidata and Wiktionary as clean JSON, not HTML. 1.9M searchable. Free, no auth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving Wikipedia content across multiple languages, including article summaries, sections, coordinates, and related topics.-
- AlicenseNot gradedqualityBmaintenanceSearch Wikipedia's ~50,000 Vital Articles from a local index and retrieve article summaries, infobox facts, and specific section text.MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive access to Wikipedia content including article search, full text retrieval, summaries, categories, links, images, language versions, and external references through 9 specialized tools.12 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides structured access to Wikipedia content including search, summaries, images, links, and more via MCP tools.6Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.