wow-api-mcp
Query the World of Warcraft addon API, Warcraft Wiki, and Blizzard's UI source across four flavors (live, classic, classic_era, classic_anniversary).
Browse flavors — list available WoW flavors with game build, interface version, data commit, and API counts.
List API systems — enumerate API namespaces per flavor, with optional substring filtering.
Search the API — fuzzy full-text search over functions, events, and tables (enums/structures/constants), filterable by kind.
Inspect an API — fetch full docs for a function/event/table by qualified or bare name, including typed signature and cross-flavor availability.
Diff an API — compare one API's existence and signature across all four flavors.
Search the wiki — query warcraft.wiki.gg for addon API, widget, event, TOC, and guide pages.
Read wiki pages — fetch a wiki page as markdown (cached ~24h, truncatable by length).
Search Blizzard UI source — regex (git grep) over FrameXML/AddOn source per flavor, with glob, case, and result limits.
Read UI source files — read a repo-relative file or list a directory with line numbers and optional line ranges.
Allows searching and retrieving pages from warcraft.wiki.gg, providing access to game guides, TOC format, widget API, and other community documentation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wow-api-mcpWhat does C_QuestLog.GetQuestObjectives do?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wow-api-mcp
An MCP server that gives AI coding assistants first-class access to the World of Warcraft addon API — Blizzard's own generated API documentation, the FrameXML/AddOn UI source code, and the Warcraft Wiki — across every track mirrored in Gethe/wow-ui-source, not just the live client.
The API documentation is parsed from Blizzard_APIDocumentationGenerated — the machine-readable docs Blizzard ships with the client — so every C_* function signature, event payload, enum, and structure is exact, typed, and per-flavor. No scraping involved.
Flavors
Flavor IDs are exactly the upstream branch names.
Flavor | Track | Channel |
| Retail | release |
| Retail PTR | ptr |
| Retail PTR 2 (XPTR) | ptr |
| Retail Beta | beta |
| Classic, current expansion | release |
| Classic PTR | ptr |
| Classic Beta | beta |
| Classic Era (vanilla) | release |
| Classic Era / Anniversary PTR | ptr |
| Classic Anniversary | release |
| Classic Titan | beta |
| WoW Forever (1.60) | beta |
The list is not hardcoded: the server offers whatever data/ contains, and the ingest job discovers upstream branches with git ls-remote, so a new Blizzard track becomes available without a code change. Run list_flavors for the builds currently shipped.
Related MCP server: mcdev-mcp
Knowing which flavor to use
Signatures differ between retail, Classic, and the test realms, so answering "does this API exist for my addon" means knowing which client the addon targets. The server works that out from your machine:
detect_wow_install → scans for installs, reports each client's build and flavor
resolve_flavor → build / TOC interface number / product code / path → flavor
check_addon_compatibility → reads an addon's .toc files and reports the flavor(s) it targetsdetect_wow_install reads, strongest signal first:
.build.infoat the install root — Blizzard product code and exact build per installed product.flavor.infoinside each_retail_/_classic_/ … directory — the product codethe client executable (
Wow.exe,WowClassic.exe,WowT.exe,WowB.exe, …) — its PE version resource, which is how_ptr_and_xptr_get identified even though.build.infoomits thema bundled addon's
## Interfacenumber
The build number then picks the track, with the product code as a tiebreaker — deliberately in that order, because the two do not line up one-to-one (the Anniversary PTR ships under the wow_classic_era_ptr product, and the 1.60 "Forever" client currently occupies the wow_classic_beta slot).
Set WOW_INSTALL_PATH in the server environment to point at your install; the default flavor for every tool then follows it, preferring a release client over a test realm and retail over Classic when several are installed. WOW_API_MCP_FLAVOR pins the default outright, and WOW_API_MCP_FLAVOR=auto derives it by probing the usual install locations. Without either variable the default is live and startup touches no filesystem beyond data/.
Tools
Tool | What it does |
| Flavors with game build, interface version, data commit, API counts |
| API systems/namespaces per flavor, filterable |
| Fuzzy full-text search over functions, events, enums, structures |
| Full signature detail + cross-flavor availability |
| Compare one API's existence/signature across flavors |
| Bulk diff: what one flavor has that another lacks |
| Find installed clients and the flavor each maps to |
| Build / interface number / product code / path → flavor |
| Read an addon's |
| Search warcraft.wiki.gg (guides, TOC format, widget API, …) |
| Fetch a wiki page as markdown (cached ~24h, CC BY-SA attributed) |
| Regex search over Blizzard's actual UI source per flavor |
| List UI source files matching a path glob |
| Read UI source files with line numbers / list directories |
Install
Requires Node 20.11+. The server is published as @nighthawk42/wow-api-mcp.
Claude Code
claude mcp add wow-api -- npx -y @nighthawk42/wow-api-mcpClaude Desktop / Cursor / any MCP client (mcpServers JSON):
{
"mcpServers": {
"wow-api": {
"command": "npx",
"args": ["-y", "@nighthawk42/wow-api-mcp"],
"env": {
"WOW_INSTALL_PATH": "C:/Program Files (x86)/World of Warcraft"
}
}
}
}WOW_INSTALL_PATH is optional. Without it, detect_wow_install still probes the usual install locations on demand; setting it just makes the default flavor follow that install without a scan.
From source
git clone https://github.com/Nighthawk42/wow_api_mcp
cd wow_api_mcp
npm ci && npm run build
claude mcp add wow-api -- node /path/to/wow_api_mcp/dist/index.jsEnvironment variables
Variable | Effect |
| Install path(s) to probe, |
| Pin the default flavor, or |
| How many flavor payloads stay resident in memory (default 4) |
| Override the bundled |
Notes:
All flavor data is bundled and gzipped (~5 MB total); nothing is fetched at startup, and payloads load lazily.
The first
search_source/get_source_filecall per flavor downloads a ~200 MB source checkout into your OS cache dir (one-time, pinned to the same commit the API data was built from).Wiki pages are fetched on demand and cached for 24 hours.
Data freshness
The API data is regenerated daily from Gethe/wow-ui-source, and a new patch release is published whenever an upstream track changes, so npx -y @nighthawk42/wow-api-mcp stays current with the game. list_flavors reports the exact build and upstream commit your installed copy was built from.
Contributing
Issues and pull requests are welcome. AGENTS.md covers how the repository fits together: layout, commands, data pipeline, release process, and the non-obvious invariants.
Data sources & attribution
API documentation and UI source are © Blizzard Entertainment, mirrored by Gethe/wow-ui-source. The
data/files in this repo are machine-derived transformations of Blizzard's generated documentation, provided for interoperability.Wiki content is fetched live from warcraft.wiki.gg and is licensed CC BY-SA 4.0; responses include attribution.
License
MIT (server code). See LICENSE.
Available Tools
9 toolsdiff_apiCompare API across flavorsA
Compare an API's existence and signature across all four flavors (live, classic, classic_era, classic_anniversary). Useful to check whether an API exists in a given flavor and whether its signature differs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | API name, qualified or bare |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only comparison (no mutation mentioned), but does not explicitly confirm safety, output format, or error behavior. It lists the four flavors, adding some transparency beyond default 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?
Two sentences: first defines the action, second clarifies usefulness. Front-loaded and efficient 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?
Given one parameter and no output schema, the description adequately explains the tool's purpose and key detail (four flavors). It does not describe output format, but is sufficient for basic 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 description coverage is 100%, so baseline 3 applies. The description does not add additional meaning to the 'name' parameter beyond what the schema provides (qualified or bare).
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 compares existence and signature across four specific flavors, using a specific verb ('compare') and resource. It distinguishes from sibling tools like get_api (single API) and search_api.
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 says it is useful for checking existence and signature differences across flavors, providing clear context for when to use it. It does not explicitly mention when not to use it or alternatives, but context with siblings implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apiGet API detailsA
Full documentation for a function, event, or table by name — signature, typed arguments/returns/payload/fields, and cross-flavor availability. Accepts qualified names ("C_Timer.After"), bare names ("After"), or event literals ("PLAYER_ENTERING_WORLD"). Case-insensitive.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | API name, qualified or bare | |
| flavor | No | Game flavor: live (retail), classic, classic_era (vanilla), classic_anniversary | live |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It clearly states what the tool returns (signature, arguments, fields, flavor availability) and the acceptable input patterns. It does not mention error handling or side effects, but the read-only nature is implicit. Given the domain, this is sufficiently transparent.
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 three sentences long, front-loading the core purpose and then elaborating on input specifics. There is no redundancy, and every sentence adds useful information. It is well-structured for quick comprehension.
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 purpose (retrieving full API documentation) and the absence of an output schema, the description omits details about the output format or structure (e.g., JSON vs text) and error behavior. While the input semantics are well-covered, the output expectations are only vaguely described. Sibling tools exist but are not referenced.
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 significant value beyond the schema for the 'name' parameter, providing concrete examples (qualified, bare, event literals) and stating case-insensitivity. The schema coverage is 100%, and both parameters have descriptions, but the description enhances understanding of acceptable input formats.
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 full documentation for a function, event, or table by name, including signature, typed arguments/returns/payload/fields, and cross-flavor availability. This verb+resource combination is specific and distinguishes it from sibling tools like diff_api, get_source_file, or search_api.
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 guidance on input formats (qualified names, bare names, event literals) and case-insensitivity, which aids correct invocation. However, it does not explicitly state when to use this tool versus alternatives like get_source_file or search_api, nor does it mention prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_fileRead Blizzard UI source fileB
Read a file (or list a directory) from Blizzard's UI source for a flavor, with line numbers. Paths are repo-relative, e.g. "Interface/AddOns/Blizzard_UIParent/Blizzard_UIParent.lua".
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Repo-relative file or directory path | |
| flavor | No | Game flavor: live (retail), classic, classic_era (vanilla), classic_anniversary | live |
| endLine | No | ||
| startLine | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the dual behavior (reading files and listing directories) and mentions line numbers. However, it does not detail output format, error handling, or restrictions. Adequate but not comprehensive.
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 a single sentence that front-loads the main action. It is concise with no wasted words, though it could be slightly expanded to cover missing parameter details without losing conciseness.
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 no annotations and no output schema, the description should provide more context. It mentions file reading and directory listing but lacks details on output (e.g., content with line numbers vs. file names) and error conditions. It is incomplete for a tool with four parameters.
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 50%; the description adds meaning to the 'path' parameter with an example, but does not describe 'flavor', 'startLine', or 'endLine' beyond the schema constraints. For the undocumented parameters, the description offers no additional 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 clearly states the tool reads files (or lists directories) from Blizzard's UI source, with line numbers. The verb 'Read/list' and resource 'Blizzard UI source file' are specific and distinct from sibling tools like search_source or get_wiki_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?
The description does not provide guidance on when to use this tool versus alternatives like search_source or list_flavors. It only states what the tool does, without context on when it is appropriate or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wiki_pageGet Warcraft Wiki pageA
Fetch a warcraft.wiki.gg page as markdown (cached ~24h). Useful pages: "TOC format", "World of Warcraft API", "Events", "Widget API", "API " for per-function pages, "UIHANDLER " for script handlers.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title, e.g. "TOC format" or "API C_Timer.After" | |
| maxChars | No | Truncate output beyond this length |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description adds caching behavior ('cached ~24h') and that output is markdown. However, it does not disclose error handling (e.g., page not found), rate limits, or authentication needs. Cache detail is helpful but incomplete for full 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?
Two sentences: first sentence states purpose and behavior, second provides examples. No unnecessary words, front-loaded with key 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 no output schema, the description covers purpose, cache behavior, and example inputs. Lacks details on error handling or output format beyond markdown, but sufficient for a simple fetch tool with two parameters.
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 both parameters with descriptions (100% coverage). Description adds value by listing example valid titles ('TOC format', 'API C_Timer.After'), which helps the agent understand the title parameter beyond its schema description. No additional semantics for maxChars.
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 the tool fetches a Warcraft wiki page as markdown, with specific verb 'Fetch' and resource 'page as markdown'. Provides concrete examples of useful pages, distinguishing it from sibling tools like search_wiki which is for searching.
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 examples of when to use ('Useful pages: ...'), implying the tool is for fetching known page titles. Does not explicitly mention when not to use or alternative tools, but examples guide usage effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_flavorsList WoW flavorsA
List the available WoW client flavors with their game build, interface version, data source commit, and API counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It declares the tool lists data but does not state whether it requires authentication, is read-only, or has rate limits. For a simple read operation, the description is minimally adequate but lacks depth.
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 a single sentence that efficiently conveys the purpose and output details. Every word adds value, with no redundancy or unnecessary 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 low complexity (no parameters, no output schema), the description adequately covers the tool's purpose and the fields returned. However, without an output schema, the structure is not fully specified, leaving some ambiguity about the exact 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?
The input schema has zero parameters, and schema coverage is 100% (trivially). Baseline for 0 parameters is 4. The description adds no parameter info but is not required to; it clarifies the output, which is sufficient.
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's function: listing available WoW client flavors. It specifies the exact data returned (game build, interface version, data source commit, API counts), which differentiates it from sibling tools like list_systems that likely list different entities.
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?
Although no explicit when-to-use or alternatives are given, the zero-parameter nature of the tool implies immediate usability. The description implicitly guides the agent to call it to retrieve the list of flavors, and the sibling tools are distinct enough to avoid confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_systemsList API systemsA
List API systems (namespaces) for a flavor. Optionally filter by a case-insensitive substring of the system or namespace name.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Substring filter on system/namespace name | |
| flavor | No | Game flavor: live (retail), classic, classic_era (vanilla), classic_anniversary | live |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses case-insensitive filtering and flavor context, but does not mention default flavor behavior, pagination, or return format. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly to the point, front-loaded with the main action and key modifiers. No redundant 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 simple listing operation, schema covers parameters well, and no output schema exists, the description provides sufficient context for an agent to understand the tool's purpose and primary options.
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 100% of parameters. The description adds value by noting case-insensitivity for the filter, which is not in the schema. It also reiterates the flavor context, though schema already details enum and default.
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 'List', the resource 'API systems (namespaces)', and the context 'for a flavor'. It distinguishes from sibling tools like get_api or search_api by specifying the listing operation and optional filtering.
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 implies when to use (listing systems for a flavor) and mentions optional filtering. However, it lacks explicit guidance on when NOT to use or comparisons with alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apiSearch WoW APIA
Fuzzy full-text search over API functions, events, and tables (enums/structures/constants) for a flavor. Searches names, systems, and documentation. Example queries: "C_Timer After", "unit health", "spell cooldown".
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Restrict result kind | any |
| limit | No | ||
| query | Yes | Search terms (names tokenize on _ . and camelCase) | |
| flavor | No | Game flavor: live (retail), classic, classic_era (vanilla), classic_anniversary | live |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses fuzzy search and tokenization behavior, but does not describe return format, pagination, or whether results are ordered. It implies read-only operation, but lacks depth.
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 two sentences plus examples, front-loading the core purpose. Every word 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?
The tool has no output schema, so the description should explain result structure. It only states 'Searches names, systems, and documentation' without detailing what the response contains (e.g., list of matches, metadata). Adequate but incomplete.
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 75%, so baseline is 3. The description adds tokenization info and example queries beyond schema, but the schema already explains most parameters well. The added value is moderate.
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 performs 'Fuzzy full-text search over API functions, events, and tables for a flavor.' It specifies the resource categories and provides example queries, distinguishing it from sibling tools like get_api or search_source.
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 gives example queries and implies usage for searching API-related items. However, it does not explicitly mention when to avoid this tool or suggest alternatives like get_api for retrieving a single known function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sourceSearch Blizzard UI sourceA
Regex search (POSIX ERE, via git grep) over Blizzard's FrameXML/AddOn UI source code for a flavor — the best way to learn how Blizzard implements UI patterns (templates, mixins, secure code). The first search per flavor downloads a ~200 MB source checkout and may take a minute.
| Name | Required | Description | Default |
|---|---|---|---|
| flavor | No | Game flavor: live (retail), classic, classic_era (vanilla), classic_anniversary | live |
| pattern | Yes | Regex, e.g. "SecureActionButtonTemplate" or "function UIParent_[A-Za-z]+" | |
| pathGlob | No | Limit to paths matching a glob, e.g. "Interface/AddOns/Blizzard_ActionBar/**/*.lua" | |
| ignoreCase | No | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait: the first search per flavor downloads a ~200 MB source checkout and may take a minute. This is critical for an agent to manage latency expectations. However, it does not mention caching behavior or any authentication/rate limits, though none are required per 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 two sentences with no redundant information. The first sentence front-loads the purpose, and the second adds a critical behavioral note. Every word 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?
Given the absence of an output schema and annotations, the description should explain the return format. It does not mention what the results look like (e.g., file paths, line numbers, snippets). The tool has 5 parameters and moderate complexity, so some guidance on output is expected 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?
The description adds value beyond the schema by specifying the regex flavor (POSIX ERE) and the download behavior related to the flavor parameter. With 60% schema coverage, the description compensates for some missing parameter details, but it could elaborate more on pathGlob, ignoreCase, and maxResults.
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 performs regex search over Blizzard's UI source code, specifying the regex engine (POSIX ERE) and backend (git grep). It distinguishes itself from sibling tools like search_api or get_wiki_page by targeting source code and positioning it as the best way to learn UI patterns.
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 implies usage for learning UI patterns but does not explicitly state when to use this tool versus alternatives, nor does it mention any when-not-to-use scenarios. While the purpose is clear, guidance on selection among siblings is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_wikiSearch Warcraft WikiA
Search warcraft.wiki.gg — community documentation for the WoW addon API, UI widgets, events, TOC format, CVars, and guides. Returns page titles to use with get_wiki_page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Search terms, e.g. "TOC format" or "SecureActionButtonTemplate" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states that the tool searches and returns page titles, but does not disclose any behavioral traits such as rate limits, authentication requirements, or pagination handling (beyond the limit parameter).
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 two sentences, front-loaded with the purpose, and every word contributes. No redundancy or unnecessary detail.
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 simple input schema (2 params, no output schema), the description covers the core functionality and links to get_wiki_page. However, it lacks explanation of the limit parameter, pagination behavior, and potential error cases, leaving minor 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 description coverage is 50%, with query having a description and example in the description ('e.g. "TOC format"'), which adds value. The limit parameter lacks description in both schema and description, though schema provides default and bounds. The description partially compensates for the gap but does not fully cover limit 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?
The description clearly states it searches warcraft.wiki.gg and lists the content areas (addon API, UI widgets, etc.). It distinguishes from sibling search tools (search_api, search_source) by specifying 'wiki' and mentions that it returns page titles to use with get_wiki_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?
The description implies that after searching, one should use get_wiki_page, but it does not provide explicit guidance on when to use this tool over other search tools like search_api or search_source. No 'when not to use' or alternatives are discussed.
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.
9 tool updates
v0.1.0- First observed
diff_api - First observed
get_api - First observed
get_source_file - First observed
get_wiki_page - First observed
list_flavors - First observed
list_systems - First observed
search_api - First observed
search_source - First observed
search_wiki
TDQS
Scored across 9 tools
Each tool has a distinct, non-overlapping purpose: comparing APIs, fetching docs, reading source, searching, listing flavors/systems. No ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_api, search_source, list_flavors). No deviations.
9 tools is well within the ideal range for this domain, covering all necessary operations without excess.
The tool set thoroughly covers the WoW API exploration domain: documentation, source code, cross-flavor comparison, and searches. No obvious gaps.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA local MCP server that lets any MCP-compatible AI client manage a standalone World of Warcraft private server, including server control, database operations, NPC/quest/loot management, and more.1MIT
- AlicenseAqualityBmaintenanceAn MCP server that empowers AI coding agents to work effectively with Minecraft mod development, providing static analysis of decompiled source code and runtime interaction with a running Minecraft instance.3145 npm14MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes structured World of Warcraft API data (functions, deprecated replacements, enums, events, widget methods) to AI agents, enabling querying and exploration of WoW API without wiki parsing.24 npm13MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that gives LLMs live access to warcraft.wiki.gg API documentation with behavioral notes, restrictions, and patch history for World of Warcraft APIs.1-