# Everloot: WoW Forever data (remote · everloot.app)

World of Warcraft: Forever lore and player-observed drops, vendors, quests, professions and talents.

- Trust score: 83/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `everloot.app`: 83/100 (this document), [markdown](https://verifymcp.io/servers/app-everloot-knowledge/mcp-public.md), [page](https://verifymcp.io/servers/app-everloot-knowledge/mcp-public)

## Channel facts

- Endpoint: `https://everloot.app/mcp/public`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.9.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 7263 tokens (~165/item across 44 items; 32 tools + 12 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 57/100
  - Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (97% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 32 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 34 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Everloot: WoW Forever data MCP server?

Everloot: WoW Forever data is a hosted endpoint at https://everloot.app/mcp/public, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http app-everloot-knowledge 'https://everloot.app/mcp/public'
```

### Cursor

```json
{
  "mcpServers": {
    "app-everloot-knowledge": {
      "url": "https://everloot.app/mcp/public"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "app-everloot-knowledge": {
      "type": "http",
      "url": "https://everloot.app/mcp/public"
    }
  }
}
```

### Codex

```toml
[mcp_servers.app-everloot-knowledge]
url = "https://everloot.app/mcp/public"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-everloot-knowledge": {
      "type": "remote",
      "url": "https://everloot.app/mcp/public",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-everloot-knowledge --url 'https://everloot.app/mcp/public' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-everloot-knowledge:
    url: "https://everloot.app/mcp/public"
```

### Netclaw

```json
{
  "McpServers": {
    "app-everloot-knowledge": {
      "Transport": "http",
      "Url": "https://everloot.app/mcp/public"
    }
  }
}
```

### Vellum

```bash
assistant mcp add app-everloot-knowledge -t streamable-http -u 'https://everloot.app/mcp/public'
```

### Other

```json
{
  "mcpServers": {
    "app-everloot-knowledge": {
      "type": "http",
      "url": "https://everloot.app/mcp/public"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-04 (score 82, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “answer_sources” rewrote its description, which is the text the model reads
- [security] Tool “class_races” rewrote its description, which is the text the model reads
- [security] Tool “collection_gap” rewrote its description, which is the text the model reads
- [security] Tool “completion_progress” rewrote its description, which is the text the model reads
- [security] Tool “coverage” rewrote its description, which is the text the model reads
- [security] Tool “ecosystem_projects” rewrote its description, which is the text the model reads
- [security] Tool “entity_relations” rewrote its description, which is the text the model reads
- [security] Tool “gold_ledger” rewrote its description, which is the text the model reads
- [security] Tool “guild_board” rewrote its description, which is the text the model reads
- [security] Tool “guild_rankings” rewrote its description, which is the text the model reads
- [security] Tool “guild_search” rewrote its description, which is the text the model reads
- [security] Tool “item_categories” rewrote its description, which is the text the model reads
- [security] Tool “item_page” rewrote its description, which is the text the model reads
- [security] Tool “market_value” rewrote its description, which is the text the model reads
- [security] Tool “object_page” rewrote its description, which is the text the model reads
- [security] Tool “population” rewrote its description, which is the text the model reads
- [security] Tool “profession_path” rewrote its description, which is the text the model reads
- [security] Tool “search_knowledge” rewrote its description, which is the text the model reads
- [security] Tool “talent_tree” rewrote its description, which is the text the model reads
- [security] Tool “world_map_near” rewrote its description, which is the text the model reads
- [security] Tool “fetch” rewrote its description, which is the text the model reads
- [security] Tool “get_entity” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 140 → 165
- [functional] Server version: 0.8.1 → 0.9.0
- [cosmetic] “fetch” added an optional parameter “field”
- [cosmetic] “fetch” added an optional parameter “limit”
- [cosmetic] “fetch” added an optional parameter “offset”
- [cosmetic] “get_entity” added an optional parameter “field”
- [cosmetic] “get_entity” added an optional parameter “limit”
- [cosmetic] “get_entity” added an optional parameter “offset”
- [cosmetic] “talent_tree” added an optional parameter “builds”
- [cosmetic] “answer_sources” reworded the description of “limit”
- [cosmetic] “answer_sources” reworded the description of “question”
- [cosmetic] “auction_history” reworded the description of “itemId”
- [cosmetic] “auction_history” reworded the description of “realm”
- [cosmetic] “collection_gap” reworded the description of “collection”
- [cosmetic] “collection_gap” reworded the description of “ownerInstallId”
- [cosmetic] “completion_progress” reworded the description of “characterKey”
- [cosmetic] “completion_progress” reworded the description of “ownerInstallId”
- [cosmetic] “ecosystem_projects” reworded the description of “board”
- [cosmetic] “ecosystem_projects” reworded the description of “forever_ready_only”
- [cosmetic] “ecosystem_projects” reworded the description of “limit”
- [cosmetic] “entity_relations” reworded the description of “limit”
- [cosmetic] “entity_relations” reworded the description of “rel”
- [cosmetic] “get_by_name” reworded the description of “kind”
- [cosmetic] “get_by_name” reworded the description of “name”
- [cosmetic] “get_entity” reworded the description of “id”
- [cosmetic] “gold_ledger” reworded the description of “character”
- [cosmetic] “gold_ledger” reworded the description of “realm”
- [cosmetic] “guild_board” reworded the description of “guildName”
- [cosmetic] “guild_board” reworded the description of “realm”
- [cosmetic] “guild_rankings” reworded the description of “faction”
- [cosmetic] “guild_rankings” reworded the description of “instanceMapId”
- [cosmetic] “guild_rankings” reworded the description of “limit”
- [cosmetic] “guild_rankings” reworded the description of “realm”
- [cosmetic] “guild_search” reworded the description of “limit”
- [cosmetic] “item_categories” reworded the description of “limit”
- [cosmetic] “item_page” reworded the description of “itemId”
- [cosmetic] “market_value” reworded the description of “itemId”
- [cosmetic] “market_value” reworded the description of “realm”
- [cosmetic] “npc_page” reworded the description of “npcId”
- [cosmetic] “object_page” reworded the description of “objectId”
- [cosmetic] “population” reworded the description of “class”
- [cosmetic] “population” reworded the description of “faction”
- [cosmetic] “population” reworded the description of “race”
- [cosmetic] “population” reworded the description of “window”
- [cosmetic] “profession_path” reworded the description of “fromSkill”
- [cosmetic] “profession_path” reworded the description of “toSkill”
- [cosmetic] “quest_page” reworded the description of “questId”
- [cosmetic] “recent_changes” reworded the description of “filter”
- [cosmetic] “recent_changes” reworded the description of “game”
- [cosmetic] “recent_changes” reworded the description of “limit”
- [cosmetic] “recipe_thresholds” reworded the description of “recipe”
- [cosmetic] “search_knowledge” reworded the description of “kind”
- [cosmetic] “search_knowledge” reworded the description of “limit”
- [cosmetic] “search_knowledge” reworded the description of “version”
- [cosmetic] “talent_tree” reworded the description of “class”
- [cosmetic] “vendor_page” reworded the description of “vendorNpcId”
- [cosmetic] “world_map_near” reworded the description of “limit”
- [cosmetic] “world_map_near” reworded the description of “radius”

### 2026-11-03 (score 82, +1)

- [security] Tool “class_races” rewrote its description, which is the text the model reads
- [security] Tool “coverage” rewrote its description, which is the text the model reads
- [security] Tool “ecosystem_projects” rewrote its description, which is the text the model reads
- [security] Tool “everloot_plan” rewrote its description, which is the text the model reads
- [security] Tool “fetch” rewrote its description, which is the text the model reads
- [security] Tool “get_by_name” rewrote its description, which is the text the model reads
- [security] Tool “get_entity” rewrote its description, which is the text the model reads
- [security] Tool “market_value” rewrote its description, which is the text the model reads
- [security] Tool “recent_changes” rewrote its description, which is the text the model reads
- [security] Tool “recipe_thresholds” rewrote its description, which is the text the model reads
- [security] Tool “search” rewrote its description, which is the text the model reads
- [security] Tool “search_knowledge” rewrote its description, which is the text the model reads
- [security] Tool “talent_plan” rewrote its description, which is the text the model reads
- [security] Tool “talent_tree” rewrote its description, which is the text the model reads
- [security] Tool “answer_sources” rewrote its description, which is the text the model reads
- [security] Tool “auction_history” rewrote its description, which is the text the model reads
- [security] Tool “collection_gap” rewrote its description, which is the text the model reads
- [security] Tool “completion_progress” rewrote its description, which is the text the model reads
- [security] Tool “entity_relations” rewrote its description, which is the text the model reads
- [security] Tool “gold_ledger” rewrote its description, which is the text the model reads
- [security] Tool “guild_board” rewrote its description, which is the text the model reads
- [security] Tool “guild_rankings” rewrote its description, which is the text the model reads
- [security] Tool “guild_search” rewrote its description, which is the text the model reads
- [security] Tool “item_page” rewrote its description, which is the text the model reads
- [security] Tool “npc_page” rewrote its description, which is the text the model reads
- [security] Tool “object_page” rewrote its description, which is the text the model reads
- [security] Tool “profession_path” rewrote its description, which is the text the model reads
- [security] Tool “quest_page” rewrote its description, which is the text the model reads
- [security] Tool “vendor_page” rewrote its description, which is the text the model reads
- [security] Tool “world_map_near” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 105 → 140
- [functional improvement] Tool coverage: 93% → 99%
- [functional] Schema quality: good → excellent
- [functional] Server version: 0.8.0 → 0.8.1
- [cosmetic] “ecosystem_projects” reworded the description of “limit”
- [cosmetic] “guild_rankings” reworded the description of “limit”
- [cosmetic] “guild_search” reworded the description of “limit”
- [cosmetic] “recent_changes” reworded the description of “limit”

### 2026-11-01 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 79, +1)

- [functional] New tool “class_races”

### 2026-10-26 (score 78, 0)

- [functional regression] Schema quality: pass → fail
- [functional] New tool “guild_rankings”
- [functional] New tool “guild_search”

### 2026-10-25 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (32)

### `search_knowledge` (~312 tokens)

Search the Everloot knowledge base

Searches WoW lore, Forever reference data and the game-file catalogs (achievements, factions, titles, quest chains, mounts, legacy perks, races, instances) by names, keywords or a question. Exact-name matches rank first. Every hit carries its id, kind, source, licence and date, and a game-file hit says when player uploads confirm it. Use it to find a record from a name or a topic, then pass the hit's id to get_entity for its summary, or to fetch as a string for the whole text. Use get_by_name when you already know the exact full name, and answer_sources when you need cited evidence for a question rather than records. search is the same search in the ChatGPT connector shape.

Input parameters:

- `kind` (string): Narrow to one record kind. achievement, faction, title, quest_chain, mount, legacy_perk, race and instance come from the game files (found in game files, unconfirmed); item, npc, object, quest, zone,…
- `limit` (integer): Most hits, 1 to 25, default 8.
- `query` (string, required): What to look up: names, questions, keywords. Question words are ignored.
- `version` (string): Narrow to one game version: forever, classic, retail or lore. Without it, every version.

Output parameters:

- `hits` (array)

### `get_entity` (~272 tokens)

Get one knowledge record by id

Returns one knowledge record's summary, by the numeric id a search_knowledge or get_by_name hit gave: title, a short excerpt in the source's words, the URL to cite, source, licence and date. A game-file record carries its build and says when player uploads confirm it. Use it to read one hit again by its id; for the whole text, call fetch with the same id as a string. An id no record has returns a null hit, not an error. Give field, a JSON pointer such as /questIds, to read one value of the record's data instead of the excerpt; an array comes in pages of up to 48 rows, and nextOffset says where the next page starts. A pointer that leads nowhere answers with the keys it could have used, not an error.

Input parameters:

- `field` (string): A JSON pointer into the record's data, such as /criteria or /reagents/0. Without it, the whole record.
- `id` (integer, required): The numeric id of a search_knowledge or get_by_name hit.
- `limit` (integer): Rows per answer, default and at most 48.
- `offset` (integer): Row to start at when the field is an array; default 0. Use nextOffset from the last answer.

Output parameters:

- `field` (object): Present when field was given and found.
- `hit`
- `keys` (array): Present when field was given and not found: the keys of the deepest object the pointer reached. Empty when the record has no structured data.

### `get_by_name` (~196 tokens)

Get records by exact name

Returns the records whose full name matches exactly, case-insensitively, optionally narrowed to one record kind. Use it to disambiguate when you know the exact name and want the id without a ranked search; use search_knowledge for partial names, keywords or questions. Several records can share a name across kinds, so check each hit's kind. Empty hits mean no record has that exact name.

Input parameters:

- `kind` (string): Narrow to one record kind. achievement, faction, title, quest_chain, mount, legacy_perk, race and instance come from the game files (found in game files, unconfirmed); item, npc, object, quest, zone,…
- `name` (string, required): The full record name, any case, up to 200 characters.

Output parameters:

- `hits` (array)

### `search` (~109 tokens)

Search (ChatGPT connector contract)

Searches the knowledge base in the shape ChatGPT connectors and deep research call by name: up to 10 results, each with an id for fetch, a title and a URL to cite. It is the same search as search_knowledge. Use it only when the client expects the search and fetch pair; other clients should call search_knowledge. The text block is the same JSON as a string.

Input parameters:

- `query` (string, required): What to look up: names, questions, keywords. Question words are ignored.

Output parameters:

- `results` (array)

### `fetch` (~249 tokens)

Fetch one document (ChatGPT connector contract)

Returns one knowledge record in full, by the string id a search result gave: title, the full text in the source's words, the URL to cite, and metadata with the source, licence and date. It is the ChatGPT connector counterpart of get_entity, which gives only an excerpt. Use it after search, or with a search_knowledge id as a string. Give field, a JSON pointer such as /questIds, to read one value of the record's data: text then holds that value as JSON, and an array comes in pages of up to 48 rows with nextOffset for the next page. A long array in a whole record is cut at 48 rows. The text block is the same JSON as a string.

Input parameters:

- `field` (string): A JSON pointer into the record's data, such as /criteria or /reagents/0. Without it, the whole record.
- `id` (string, required): An id from a search result.
- `limit` (integer): Rows per answer, default and at most 48.
- `offset` (integer): Row to start at when the field is an array; default 0. Use nextOffset from the last answer.

Output parameters:

- `field` (object): Present when field was given and found.
- `id` (string): The record id as a string.
- `keys` (array): Present when field was given and not found: the keys of the deepest object the pointer reached. Empty when the record has no structured data.
- `metadata` (object)
- `text` (string): The whole record, in the source's words.
- `title` (string): The record's name.
- `url` (string): Where the record is read, as in search.

### `answer_sources` (~239 tokens)

Evidence for a question, each piece with its source

Returns the evidence behind a question about WoW: Forever, so an answer can cite it: player observations, curated facts, game files and the 2023 Warcraft Wiki. An observed fact is public after three installs agree and carries the install count; a game-file fact is found in game files, unconfirmed, with the build; lore is marked: may differ in Forever. Every piece carries a claim, its source URL, licence and date; the answer is evidence, not prose. Use it for questions that need citations, such as why, where or how many; use search_knowledge to find a record by name, and the page tools (item_page, npc_page, quest_page) for one entity's agreed facts. Further-reading links are search URLs on other sites; nothing is fetched from them. When Everloot's public player data is not connected, the observed layer is unrecorded, not empty.

Input parameters:

- `limit` (integer): Most lore and curated pieces, 1 to 25, default 8.
- `question` (string, required): The question, 1 to 500 characters, with names spelled as in the game.

Output parameters:

- `dataAsOf` (string|null): When the observed layer was current; null when it is not connected.
- `evidence` (array): Observed first, then curated, then lore.
- `furtherReading` (array): Search links on other sites. Nothing was fetched.

### `profession_path` (~230 tokens)

Profession leveling path

Returns a leveling path for one Forever profession between two skill levels, built from Everloot uploads: the steps, the reagents summed and their cost. A step exists only after 3 installs agree: on a reported recipe, or on the recipe colours that make it orange (a guaranteed skill-up), starting at the trainer's required rank when 3 installs agree on one, else at the lowest rank seen orange. A price exists only after 3 price uploads agree. A skill range no agreed recipe covers is left as a gap, never invented. Use it for how to level a profession from one skill to another; use recipe_thresholds for where single recipes change colour, and market_value for what a reagent costs today. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `fromSkill` (integer): Skill the character has now, 1 to 500, default 1.
- `profession` (string, required): Profession name, such as Alchemy.
- `toSkill` (integer, required): Skill to stop at, 1 to 500, above fromSkill.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `recipe_thresholds` (~155 tokens)

Recipe skill ranges

Returns where one Forever profession's recipes turn yellow, green and grey, as skill ranges inferred from the colours players' trade-skill windows showed, never guessed exact numbers. A recipe appears only after 3 installs agree. Agreed reagents come with an estimated cost per craft when every reagent has an agreed price. Use it for how long a recipe keeps giving skill points; use profession_path for a step-by-step route between two skill levels. Narrow the list with part of a recipe name. Reads Everloot's current public corpus.

Input parameters:

- `profession` (string, required): Profession name, such as Alchemy.
- `recipe` (string): Part of a recipe name to narrow the list. Without it, every recipe of the profession.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `item_page` (~206 tokens)

Item page for a drop

Returns one Forever item's page by item id: the agreed name, drop frequency from observed loot windows, agreed map pins, and player-reported armor, block, damage per second, stats and resistances. A number is public when one value has 3 agreeing installs in the newest build that 3 installs reported, and no competing value has 3; contested numbers are withheld. Each number states its agreeing installs, build and last seen, with the corpus date and method. Missing numbers are [?] with a reason. No baseline rows or player names. Use it when you have an item id; use market_value for its price, entity_relations for what drops or sells it, and item_categories for its class and slot. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `itemId` (integer, required): The game's item id, from a drop row, entity_relations or the extId of a search_knowledge hit of kind item.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `npc_page` (~184 tokens)

NPC page

Returns one Forever NPC's page by NPC id: the agreed name, the agreed map pins, and the loot windows reported for it that are not yet in the drop rates. A name or pin needs 3 installs agreeing; a pin does not require a drop. No copied spawn list. Use it to name or place an NPC when you have its id, from a search_knowledge hit, a drop row or entity_relations; use vendor_page for what an NPC sells, item_page for one drop's rate, entity_relations for every typed link, and world_map_near for what stands around it. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `npcId` (integer, required): The game's NPC id, from world_map_near, entity_relations or the extId of a search_knowledge hit of kind npc.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `object_page` (~170 tokens)

Game object page

Returns one game object's page (a chest, herb, ore vein or fishing pool) by its entry id: the items players looted from it, each with observed loot windows, windows with the item and distinct install reports, and where players saw it on the minimap. A frequency is public after 3 install reports; a public object with nothing in its windows reads as a measured zero. The name shows once 3 installs agree on it. Use it for gathering nodes and containers; use npc_page for creatures, and item_page for every source of one item. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `objectId` (integer, required): The object's entry id, from a world_map_near treasure, as in /database/objects/1731.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `quest_page` (~135 tokens)

Quest page

Returns one Forever quest's page by quest id: agreed title, level, giver, turn-in and rewards. Each fact needs 3 installs agreeing. No copied quest text. Use it when you have a quest id, from a search_knowledge hit or entity_relations; use answer_sources for a question about the quest's story or chain, and entity_relations for what the quest rewards. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `questId` (integer, required): The game's quest id, from entity_relations or the extId of a search_knowledge hit of kind quest.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `vendor_page` (~160 tokens)

Vendor page

Returns the goods one Forever vendor sells, by the vendor's NPC id, each with the copper price players saw. An item is listed when 3 installs agree on that item and its copper price; two agreed prices both stay listed. No copied catalog. Use it for what a vendor sells and at what price; use npc_page for where the vendor stands, entity_relations with the sold_by relation for who sells an item, and market_value for auction prices. The id is the same NPC id npc_page takes. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `vendorNpcId` (integer, required): The vendor's NPC id, the id npc_page takes, from world_map_near or entity_relations.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `world_map_near` (~295 tokens)

What is near a place on the map

Lists the entrances, NPCs, vendors and treasures near a spot, nearest first, with straight-line distances in yards. Give a zone (name or map id) with x and y from 0 to 100, or an NPC id to start from where that NPC stands. Entrances come from the game files; one is confirmed once 3 installs zoned in from it. NPCs, vendors and treasures are player-observed and listed only where 3 installs agree on the position. Zones the files hold back as possibly unreleased are not offered. Use it for what is near a spot; use npc_page, vendor_page or entity_relations for one entity's own facts. Reads Everloot's public player data when connected.

Input parameters:

- `limit` (integer): Most results per list, 1 to 20, default 5.
- `npcId` (integer): Start from this NPC's agreed position instead of a zone and x, y.
- `radius` (number): Search radius in yards, up to 5000, default 500.
- `x` (number): Across the zone map, 0 (west) to 100 (east).
- `y` (number): Down the zone map, 0 (north) to 100 (south).
- `zone` (string): Zone name or map id, such as Elwynn Forest or 1429. Needs x and y.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `entity_relations` (~294 tokens)

How an item, NPC, spell or quest connects to others

Lists every typed relation of one entity, in both directions, grouped by relation. Player-observed relations (dropped by, sold by, reward from, located in) are listed where 3 installs agree, with the install count and last seen. Game-file relations (created by, reagent for, part of set, same icon) are found in game files, unconfirmed, with the build they came from. Ids are the game's own, as a page tool, a drop row or world_map_near gives them. Use it for where something comes from or what something drops, sells or rewards; use the page tools (item_page, npc_page, quest_page) for one entity's own facts, and world_map_near for what is near a place. Reads Everloot's public player data and the game-file relations of the current build.

Input parameters:

- `direction` (string): from: what this entity points to (an item's sources). to: what points at it (what an NPC drops). Default both.
- `id` (integer, required): The game's id for it, such as item 19019.
- `kind` (string, required): What the id names. A zone is a UiMap id, as on /map.
- `limit` (integer): Most lines per relation, 1 to 100, default 25.
- `rel` (string): Only this relation. Without it, every relation.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `item_categories` (~271 tokens)

Item categories: class, subclass, slot and quality

Lists item categories from the game files (found in game files, unconfirmed, with the build): class and subclass with the client's English names and slugs, slot and quality. With no arguments, the whole tree with item counts. With item, that item's category path. With class (a slug such as weapon or armor), and optionally subclass, slot and quality slugs, the item ids in it. Use it to place an item in its category or to list a category; use item_page for an item's name and stats, and entity_relations for where it comes from. Ids only: item names come from player uploads, through item_page.

Input parameters:

- `class` (string): Class slug, such as weapon, armor, consumable or trade-goods.
- `item` (integer): An item id: answers its class, subclass, slot and quality.
- `limit` (integer): Most items listed, 1 to 100, default 25.
- `quality` (string): poor, common, uncommon, rare, epic, legendary, artifact or heirloom.
- `slot` (string): Slot slug, such as head, chest, one-hand or trinket.
- `subclass` (string): Subclass slug or number within the class, such as one-handed-swords or cloth.

Output parameters:

- `build` (string)
- `classes` (array): With no arguments: the whole tree, classes with items only.
- `credit` (string)
- `error` (string): A class or subclass that is not in the build.
- `item`: With item: its path, or null when the item is not in the build.
- `items` (array): With class: the items in the category, up to limit.
- `label` (string)
- `total` (integer): With class: how many items match, listed or not.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `talent_tree` (~227 tokens)

Talent trees for one class

Returns the WoW: Forever talent trees of one class from the game files (found in game files, unconfirmed, with the build): every node with its talents, ranks, grid position, prerequisites and row gate, plus the levels talent points arrive at. Node ids are the ids a share code names. Use it to read or explain a class's trees; use talent_plan to decode a share code against them, and class_races for which races can be the class. Narrow to one tree by name; without it the answer holds every node of every tree. With builds, the answer also lists the Everloot team's published starter builds for the class, each labelled as the team's and not observed, with its share code and page. The answer links the calculator.

Input parameters:

- `builds` (boolean): Also list the Everloot team's starter builds for the class, with share codes. They are the team's, not observed.
- `class` (string, required): Class slug, such as mage.
- `tree` (string): One tree by name, such as Arcane. Without it, every tree.

Output parameters:

- `build` (string): The game build the trees were read from.
- `class` (string)
- `className` (string)
- `credit` (string)
- `label` (string)
- `nodes` (array)
- `points` (object)
- `specId` (integer): The client's spec id, or 0 when unknown.
- `starterBuilds` (array): With builds: the team's published starter builds for the class (and tree), by name. Empty when none is published.
- `trees` (array)
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `talent_plan` (~155 tokens)

Read a talent share code

Decodes an Everloot talent share code (EL1-<class>-<spec>-<build>-<payload>, or a calculator link carrying one after #plan=) against the class's trees: the talents and ranks it holds, points per tree, the lowest level that can hold it, and every problem in plain words: a code made on another build, nodes the tree does not have, ranks cut back, points the rules would not place. Nothing is dropped silently. Use it when given a share code or a calculator link; use talent_tree to read the trees themselves. Game-file data, found in game files, unconfirmed.

Input parameters:

- `code` (string, required): The share code, or a link that carries one.

Output parameters:

- `byTree` (array)
- `class` (string)
- `className` (string)
- `codeBuild` (string): The game build the code was made on.
- `credit` (string)
- `label` (string)
- `link` (string): The calculator with this plan loaded.
- `message` (string)
- `minLevel` (integer): The lowest level that can hold this many points.
- `ok` (boolean): False when the code could not be read at all; message says why.
- `pointsSpent` (integer)
- `problems` (array): One sentence each. Empty means the code loaded exactly as made.
- `talents` (array)
- `treeBuild` (string): The build of the trees it was read against.
- `url` (string): The build's own link on everloot.app, absolute: the calculator opened on this plan, with a preview card for sharing.

### `class_races` (~148 tokens)

Races that can be a class, with their racial traits

Lists which races can be one class in WoW: Forever, on which faction, and each race's racial traits (name, active or passive) from the game files (found in game files, unconfirmed, with the build). Narrow to one faction. Use it for whether a race can be a class, or which races a class is open to; use talent_tree for the class's talents, and population for how many play it. What each trait does is on the class page, linked from the answer.

Input parameters:

- `class` (string, required): Class name or slug, such as Warlock or warlock.
- `faction` (string): alliance or horde. Without it, both.

Output parameters:

- `build` (string): The game build the races were read from.
- `class` (string): Absent when the class is not one the files list.
- `className` (string)
- `credit` (string)
- `error` (string): A class the files do not list.
- `faction` (string)
- `factions` (array): Alliance first. Empty when the class is unknown.
- `label` (string)
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `collection_gap` (~165 tokens)

Owned versus missing in a collection

Returns what one install still misses in one collection, against what that install uploaded as owned, grouped by source. A list row is public after 3 installs agree on the collection, the source and the item; owned is what that install uploaded. Not a Blizzard profile read and not a copied catalog. Use it for which items of a collection a player is missing; use completion_progress for achievements, reputations and titles. When that install never uploaded the collection, the answer says owned is unknown, not empty. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `collection` (string, required): Collection name, any case, such as Mounts.
- `ownerInstallId` (string, required): The player's own install id, whose owned upload to compare.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `completion_progress` (~205 tokens)

Achievement, reputation, title and quest progress

Shows what one install's characters have finished and what is closest to done: achievements with the largest share of criteria or progress met, reputations nearest the next standing, titles known, and quests finished in a chain. A list entry is public after 3 players (installs uploading from different addresses) report it identically. Progress shows only when that install uploaded it with the collection sharing choice and a verified grant; without it the answer says so. Not a Blizzard profile read and not a copied catalog. Use it for what a player is closest to finishing; use collection_gap for missing collection items, and guild_board for a guild's kills. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `characterKey` (string): One character's 8-digit key from the upload, when the install has several. Without it, every character.
- `ownerInstallId` (string, required): The player's own install id, whose completion upload to read.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `guild_board` (~324 tokens)

Guild board its officers published

Returns one guild's roster, bosses killed, loot awarded, raid attendance and average item level, as that guild's own officers chose to publish them, with its kills per instance and its rank. The officer board (roster, bosses, loot, attendance, item level) counts only uploads from officers holding a verified grant for the guild, and a figure is public after 2 of them agree. When Everloot's guild pages are connected, the public part follows: kills per instance (a kill counts once 2 members' installs report the same boss, or when the officers publish it), the guild's rank, and the characters players running the addon saw in the guild, with level, class and last seen. Names are in-game character names, never accounts or real-world identities. A character's owner can opt out, which leaves that character out of the roster, loot and attendance. A guild whose officers have not published gets an empty officer board and still shows the public part; a guild that asked to be hidden gets no answer. The average item level says how many roster members were measured; there is no combined score. Use it for one guild's own board; use guild_search to find a guild's exact name and realm, and guild_rankings to compare guilds in one instance. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `guildName` (string, required): The guild's in-game name, as guild_search gives it.
- `realm` (string, required): The guild's realm, as guild_search gives it.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `guild_search` (~208 tokens)

Find a guild by the start of its name

Finds the guilds whose name starts with what you typed, each with its realm, faction, how many characters the addon saw in it, and the count and date of its agreed boss kills. A guild is listed once 2 of its members' installs report the same boss, once its officers published a board, or once a character was seen in it. Guild names only, never a member's name, and a guild that asked to be hidden is left out. Characters seen are counted only when the player pages are connected; otherwise the count is unrecorded, not zero. Use it to find a guild's exact name and realm before guild_board; use guild_rankings for a ladder. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `limit` (integer): Most guilds listed, 1 to 25, default 10.
- `query` (string, required): The start of the guild's name, 2 to 24 characters.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `guild_rankings` (~272 tokens)

Guild ladder for one raid or dungeon

Ranks every guild with an agreed kill in one instance: by bosses killed, then by who reached its latest kill first, then by name; equal rows share a rank. A kill is a guild's once 2 of its members' installs report the same boss there, timed at the earliest report, or once its officers published it on the guild board, which carries no time. The boss list is the encounters 3 installs reported in that instance, in that order; a boss not on it counts for nothing. There is no score, no rating and no total across instances. Use it to compare guilds' progress in one raid or dungeon; use guild_board for one guild's own board, and guild_search to find a guild. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `faction` (string): Only alliance or horde guilds. Without it, both.
- `instanceMapId` (integer): The instance's map id: the extId of a search_knowledge hit of kind instance. Omit for the newest raid with a kill.
- `limit` (integer): Most guilds listed, 1 to 100, default 20.
- `realm` (string): Only guilds on this realm. Without it, every realm.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `auction_history` (~160 tokens)

Auction history for one item

Returns the day-by-day price history of one item on one WoW: Forever realm, from auction scans players uploaded on purpose. A day is public after 3 installs scanned that item on that realm; copper is the median. Use it for how a price moved over time; use market_value for today's market value, minimum buyout and units listed, item_page for the item itself, and vendor_page for vendor prices. Realm is the realm's name; the item id is the game's. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `itemId` (integer, required): The game's item id, as item_page takes it.
- `realm` (string, required): The realm's name, as the game shows it.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `market_value` (~214 tokens)

Forever market value for one item

Returns the market value, minimum buyout, historical value and units listed for one item on one WoW: Forever realm, from full auction scans players started and uploaded. A day is public after 3 reporters (distinct upload addresses) scanned the item, and its value is the median of theirs. Market value is a weighted mean of the public days up to 14 calendar days old, newer days weighing more, leaving out thin days (5 units listed or fewer) and outlier days. Historical is the median of the public days in the last 60 calendar days, of the days that are not thin when there are any. Use it for what an item is worth now; use auction_history for the price over time, and vendor_page for vendor prices. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `itemId` (integer, required): The game's item id, as item_page takes it.
- `realm` (string, required): The realm's name, as the game shows it.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `gold_ledger` (~193 tokens)

Gold ledger for one character

Returns the peak and current gold of one character and the money events its own upload recorded: income (loot, quests, vendor and auction sales) and spending (flight paths, postage, barber, respecs, auction purchases), each install's ledger kept apart. A category with nothing recorded reads as unrecorded, not zero, and gold from other gameplay is unrecorded. The gap between recorded income and peak gold is shown as unrecorded, never called bought gold or a ban. Use it for one uploaded character's own gold history; it cannot look up a character that never uploaded. Use guild_board for a guild's loot, and market_value for prices. Reads Everloot's public player data when connected. Missing or unavailable data is reported explicitly.

Input parameters:

- `character` (string, required): The character's in-game name.
- `realm` (string, required): The character's realm, as the game shows it.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `coverage` (~259 tokens)

Database coverage by zone, type and field

Counts how much of WoW: Forever's database is settled or confirmed, per zone, per type and per field, as https://everloot.app/database/coverage shows it, in text only. Coverage is settled over expected, with confirmed over expected beside it; the denominator is the larger of expected and observed, and confirmed includes settled. A player-reported fact is public after three installs agree; fields one or two installs short are counted without their values. Scoped totals and the current build's settled-list size come separately dated and measured. Only public report identifiers and game-file facts are listed, never unconfirmed values, baseline rows, names or ids, or player names. When coverage data is available, every answer states its scope, method, data date and install counts; when it is not, the answer states the scope and marks the counts, data date and installs [?], not zero. Unknown values are [?]. Use it for how complete the database is for a zone or type; use the page tools for the facts themselves.

Input parameters:

- `type` (string): Coverage type. Omit for all types.
- `zone` (integer): Released UiMap zone id, such as 1429 for Elwynn Forest. Omit for all released zones.

### `population` (~268 tokens)

Who plays what: population by race, class, faction and level

Counts how many characters play each race, class, race and class, faction and level band on WoW: Forever, from the census players turned on in the Everloot addon. Each character counts once. A count shows only when it covers at least 10 characters reported by at least 3 installs from at least 3 addresses, rounded to the nearest 5; a count that could be worked out from the others is hidden too. When census data is available, every answer states its window: active in the last 7 days (default) or since launch; when it is not, the answer says so instead of giving a zero. With no arguments, the overview, most played class first. Use it for how many play a race or class; use class_races for which races can be a class. No names, ever. Missing or unavailable data is reported explicitly.

Input parameters:

- `class` (string): A class, such as Priest. Without it, every class.
- `faction` (string): Alliance or Horde. Without it, both.
- `race` (string): A race, such as Gnome, Night Elf or Undead. Without it, every race.
- `window` (string): week (default): active in the last 7 days. launch: seen since launch.

Output parameters:

- `connected` (boolean): False when no corpus was read; the page is then absent, which is not a measured zero.
- `dataAsOf` (string|null): The corpus snapshot time, or null when unrecorded.
- `page` (object)
- `reason` (string): Why nothing was read, when connected is false.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `recent_changes` (~185 tokens)

Recent official changes for WoW: Forever

Returns the newest official changes for WoW: Forever, newest first: Blizzard blue posts (title, author, time, a short excerpt and the link to the original), hotfix posts, and new game builds. Excerpts only: Blizzard's post text is Blizzard's; full posts are available at their source URLs. A build's time is when Everloot first saw it, not Blizzard's release time. Use it for what Blizzard changed or posted lately; use answer_sources for lore and game facts, and ecosystem_projects for community addons. filter picks one kind; limit caps the entries.

Input parameters:

- `filter` (string): posts (blue posts), hotfixes, builds, or all (default).
- `game` (string): forever or classic. Without it, both.
- `limit` (integer): Most entries, 1 to 25, default 10, newest first.

Output parameters:

- `connected` (boolean): False when the timeline is not connected: the list is then not a measured zero.
- `entries` (array)
- `url` (string): The changes page on everloot.app with the same filter, absolute.

### `ecosystem_projects` (~210 tokens)

WoW: Forever addons and open-source projects

Lists the Forever addons and tools in the community registry, with a board ranking: most installed, rising, most active, freshest release or best maintained. Each project shows its GitHub repository, stars, latest release, last commit, whether its .toc declares a Forever interface number, and installs from Everloot uploads (counted from 3 installs; a missing count means not counted, not zero). Projects are ranked, never people. GitHub facts carry the time they were refreshed. Use it for which Forever addons exist and how maintained they are; use everloot_plan for Everloot's own features, and recent_changes for Blizzard's posts. limit caps the projects listed.

Input parameters:

- `board` (string): installed, rising, active, release, maintained, or all (default, A to Z).
- `forever_ready_only` (boolean): Only projects whose .toc lists a Forever interface number. Default false.
- `limit` (integer): Most projects listed, 1 to 25, default 10.

Output parameters:

- `board` (string)
- `connected` (boolean): False when the tracker is not connected: the list is then not a measured zero.
- `forever`: What Forever-ready compares each .toc with, derived from the build's version and not yet confirmed in the client.
- `installsAvailable` (boolean): False when install counts could not be read: a null count then means unknown.
- `projects` (array)
- `refreshedAt` (string|null): When the GitHub facts were last refreshed.
- `url` (string): The everloot.app page that shows this answer, absolute. Absent when there is no such page or it would be empty.

### `everloot_plan` (~97 tokens)

Everloot implementation tracker

Returns the Everloot feature catalogue: what is live, what is next, what is waiting, and which reference sites are page shapes only, as the tracker that ships with the site holds it. Use it only for questions about Everloot itself, such as whether a feature exists; it holds no game data. For game facts use search_knowledge or answer_sources; for community addons use ecosystem_projects. Takes no arguments and needs no account.

Output parameters:

- `counts` (object)
- `rows` (array): Every row, in the tracker's order.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-everloot-knowledge/mcp-public#diagnostics

## Score history

- 2026-11-05: 83
- 2026-11-04: 82
- 2026-11-03: 82
- 2026-11-02: 81
- 2026-11-01: 81
- 2026-10-31: 80
- 2026-10-30: 80
- 2026-10-29: 79
- 2026-10-28: 79
- 2026-10-27: 78
- 2026-10-26: 78
- 2026-10-25: 78
- 2026-10-24: 77
- 2026-10-23: 77
- 2026-10-22: 76
- 2026-10-21: 76
- 2026-10-20: 75
- 2026-10-19: 75

## Common questions

### What is the Everloot: WoW Forever data MCP server?

Everloot: WoW Forever data is an MCP server listed in the public MCP registry as app.everloot/knowledge. World of Warcraft: Forever lore and player-observed drops, vendors, quests, professions and talents. This page covers its hosted endpoint (https://everloot.app/mcp/public).

### Is the Everloot: WoW Forever data MCP server safe to use?

Everloot: WoW Forever data scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Everloot: WoW Forever data MCP server expose?

Everloot: WoW Forever data exposes 32 tools: search_knowledge, get_entity, get_by_name, search, fetch, and 27 more. Their descriptions and schemas cost roughly 6,767 tokens of context every time the server is loaded.

### Does the Everloot: WoW Forever data MCP server require authentication?

No. We connected to Everloot: WoW Forever data without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Everloot: WoW Forever data MCP server still maintained?

Everloot: WoW Forever data is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://everloot.app/mcp/public
- Repository: https://github.com/Everloot/everloot
- Website: https://everloot.app/connect
- Changelog RSS feed: https://verifymcp.io/servers/app-everloot-knowledge/mcp-public.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-everloot-knowledge/mcp-public.json
- HTML version of this page: https://verifymcp.io/servers/app-everloot-knowledge/mcp-public
