Skip to main content
Glama

Everloot: WoW Forever data

Get one knowledge record by id

get_entity
Read-onlyIdempotent

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 Schema

NameRequiredDescriptionDefault
idYesThe numeric id of a search_knowledge or get_by_name hit.
fieldNoA JSON pointer into the record's data, such as /criteria or /reagents/0. Without it, the whole record.
limitNoRows per answer, default and at most 48.
offsetNoRow to start at when the field is an array; default 0. Use nextOffset from the last answer.

Output Schema

NameRequiredDescriptionDefault
hitYes
keysNoPresent when field was given and not found: the keys of the deepest object the pointer reached. Empty when the record has no structured data.
fieldNoPresent when field was given and found.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / id / description
      Previous value: -"Record id from a search_knowledge hit."New value: +"The numeric id of a search_knowledge or get_by_name hit."
  2. Changed6 schema fields changed
    • addedInput schema / properties / field
      Added value: +{
      +  "description": "A JSON pointer into the record's data, such as /criteria or /reagents/0. Without it, the whole record.",
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Rows per answer, default and at most 48.",
      +  "maximum": 48,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Row to start at when the field is an array; default 0. Use nextOffset from the last answer.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / field
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present when field was given and found.",
      +  "properties": {
      +    "nextOffset": {
      +      "description": "Present when more rows remain: pass it as offset.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "pointer": {
      +      "type": "string"
      +    },
      +    "value": {
      +      "description": "The value at the pointer. An array is one page of up to 48 rows."
      +    }
      +  },
      +  "required": [
      +    "pointer",
      +    "value"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / hit / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "extId": {
      -        "description": "The source's own id, such as a wiki page title.",
      -        "type": "string"
      -      },
      -      "gameVersion": {
      -        "enum": [
      -          "forever",
      -          "classic",
      -          "retail",
      -          "lore"
      -        ],
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "The record id, for get_entity.",
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "enum": [
      -          "item",
      -          "npc",
      -          "object",
      -          "quest",
      -          "zone",
      -          "spell",
      -          "lore_page",
      -          "creator",
      -          "realm"
      -        ],
      -        "type": "string"
      -      },
      -      "licence": {
      -        "description": "The source's licence, such as CC-BY-SA-4.0.",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "retrievedAt": {
      -        "description": "When the source was read.",
      -        "type": "string"
      -      },
      -      "snippet": {
      -        "description": "A short excerpt, in the source's words.",
      -        "type": "string"
      -      },
      -      "sourceId": {
      -        "type": "string"
      -      },
      -      "sourceUrl": {
      -        "description": "Where the record came from. Keep it with the text.",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "The record's page on everloot.app, absolute: an indexed lore page. Absent for a record the site has no page for.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "extId",
      -      "kind",
      -      "name",
      -      "snippet",
      -      "gameVersion",
      -      "sourceUrl",
      -      "sourceId",
      -      "licence",
      -      "retrievedAt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirmed": {
      +        "additionalProperties": false,
      +        "description": "Present when player uploads confirm this game-file entry (3 or more installs agree). asOf is the date the rollup was current.",
      +        "properties": {
      +          "asOf": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "asOf"
      +        ],
      +        "type": "object"
      +      },
      +      "extId": {
      +        "description": "The source's own id, such as a wiki page title.",
      +        "type": "string"
      +      },
      +      "gameVersion": {
      +        "enum": [
      +          "forever",
      +          "classic",
      +          "retail",
      +          "lore"
      +        ],
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "The record id, for get_entity.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "enum": [
      +          "item",
      +          "npc",
      +          "object",
      +          "quest",
      +          "zone",
      +          "spell",
      +          "lore_page",
      +          "creator",
      +          "realm",
      +          "achievement",
      +          "faction",
      +          "title",
      +          "quest_chain",
      +          "mount",
      +          "legacy_perk",
      +          "race",
      +          "instance",
      +          "build"
      +        ],
      +        "type": "string"
      +      },
      +      "licence": {
      +        "description": "The source's licence, such as CC-BY-SA-4.0.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "retrievedAt": {
      +        "description": "When the source was read.",
      +        "type": "string"
      +      },
      +      "snippet": {
      +        "description": "A short excerpt, in the source's words.",
      +        "type": "string"
      +      },
      +      "sourceId": {
      +        "type": "string"
      +      },
      +      "sourceUrl": {
      +        "description": "Where the record came from. Keep it with the text.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "The record's page on everloot.app, absolute: an indexed lore page or a catalog page. Absent for a record the site has no page for.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "extId",
      +      "kind",
      +      "name",
      +      "snippet",
      +      "gameVersion",
      +      "sourceUrl",
      +      "sourceId",
      +      "licence",
      +      "retrievedAt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / keys
      Added value: +{
      +  "description": "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.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / hit / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "extId": {
      -        "description": "The source's own id, such as a wiki page title.",
      -        "type": "string"
      -      },
      -      "gameVersion": {
      -        "enum": [
      -          "forever",
      -          "classic",
      -          "retail",
      -          "lore"
      -        ],
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "The record id, for get_entity.",
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "enum": [
      -          "item",
      -          "npc",
      -          "object",
      -          "quest",
      -          "zone",
      -          "spell",
      -          "lore_page",
      -          "creator",
      -          "realm"
      -        ],
      -        "type": "string"
      -      },
      -      "licence": {
      -        "description": "The source's licence, such as CC-BY-SA-4.0.",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "retrievedAt": {
      -        "description": "When the source was read.",
      -        "type": "string"
      -      },
      -      "snippet": {
      -        "description": "A short excerpt, in the source's words.",
      -        "type": "string"
      -      },
      -      "sourceId": {
      -        "type": "string"
      -      },
      -      "sourceUrl": {
      -        "description": "Where the record came from. Keep it with the text.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "extId",
      -      "kind",
      -      "name",
      -      "snippet",
      -      "gameVersion",
      -      "sourceUrl",
      -      "sourceId",
      -      "licence",
      -      "retrievedAt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "extId": {
      +        "description": "The source's own id, such as a wiki page title.",
      +        "type": "string"
      +      },
      +      "gameVersion": {
      +        "enum": [
      +          "forever",
      +          "classic",
      +          "retail",
      +          "lore"
      +        ],
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "The record id, for get_entity.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "enum": [
      +          "item",
      +          "npc",
      +          "object",
      +          "quest",
      +          "zone",
      +          "spell",
      +          "lore_page",
      +          "creator",
      +          "realm"
      +        ],
      +        "type": "string"
      +      },
      +      "licence": {
      +        "description": "The source's licence, such as CC-BY-SA-4.0.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "retrievedAt": {
      +        "description": "When the source was read.",
      +        "type": "string"
      +      },
      +      "snippet": {
      +        "description": "A short excerpt, in the source's words.",
      +        "type": "string"
      +      },
      +      "sourceId": {
      +        "type": "string"
      +      },
      +      "sourceUrl": {
      +        "description": "Where the record came from. Keep it with the text.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "The record's page on everloot.app, absolute: an indexed lore page. Absent for a record the site has no page for.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "extId",
      +      "kind",
      +      "name",
      +      "snippet",
      +      "gameVersion",
      +      "sourceUrl",
      +      "sourceId",
      +      "licence",
      +      "retrievedAt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations it discloses real behavior: null-hit instead of an error on unknown ids, array results paged at up to 48 rows with nextOffset as the continuation token, and bad JSON pointers answering with the keys that would have worked rather than failing. It also notes that game-file records carry build info and when player uploads confirm them.

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

Conciseness4/5

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

Front-loaded with purpose and return shape, then alternatives, then the field/paging variant - a sensible order. It is dense but not padded; the only mild redundancy is explaining the field pointer both as a value-reader and again in the trailing error sentence.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, yet the description still covers paging, continuation, and both error-softening behaviors an agent must plan around. Nothing needed to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds the relationship the fields have to each other: field reads one value instead of the excerpt, an array result is paged with nextOffset pointing at the next offset. The example pointer (/questIds) and the lenient bad-pointer behavior are meaningfully beyond the schema text.

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

Purpose5/5

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

Opens with a concrete verb+resource: 'Returns one knowledge record's summary, by the numeric id'. It enumerates what comes back (title, excerpt, URL, source, licence, date) and explicitly contrasts with fetch ('for the whole text, call fetch with the same id as a string'), so it is distinguishable from its nearest sibling without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('Use it to read one hit again by its id'), names the alternative and the condition that selects it (fetch for the full text), and covers the field-pointer variant with its own trigger. It also sets expectations for the miss case ('an id no record has returns a null hit, not an error').

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.