tibiawiki-mcp
An MCP server that gives AI assistants offline, millisecond-speed answers from a SQLite snapshot of TibiaWiki, with tools for searching pages, fetching full details, and filtering creatures/items by stats.
tibia_search: find exact page names across all 14 page types (creatures, items, NPCs, quests, spells, etc.).tibia_get: return full detail for any named page, including loot tables, abilities, vendor info, quest/achievement data, and more.tibia_find_creatures: find creatures by experience, hitpoints, boss status, bestiary class, location, or elemental weaknesses/resistances.tibia_find_items: find items by class, type, vocation, weapon type, attack, defense, armor, weight, and required level.tibia_how_to_obtain: get all sources for an item at once — creature drops with chances, NPC sellers with prices, and quest rewards.Works offline with no network calls after install; also available as a hosted remote server; each response includes
indexGeneratedAtdata freshness.
Provides tools to search and retrieve TibiaWiki content (hosted on Fandom), including creature stats and elemental weaknesses, item attributes, drops, vendor prices, and quest rewards.
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., "@tibiawiki-mcpwhich creatures are weak to fire and give over 500 experience?"
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.
tibiawiki-mcp
An MCP server for TibiaWiki. It lets an AI assistant answer the questions the wiki itself cannot:
Which creatures are weak to fire and give over 500 experience?
What drops a Dragon Shield, and how likely is it?
Where do I buy a Steel Helmet, and for how much?
Every answer comes from a SQLite snapshot of the wiki that installs with the server. Queries return in milliseconds and work offline. The server makes no network calls.
Use it
Hosted, nothing to install
Add https://mcp.tibia.sh/wiki to your MCP client as a remote server. It needs no account and no
key. In claude.ai, add it as a custom connector.
It allows about 300 messages a minute per IP address and writes no request logs. The landing page at
https://mcp.tibia.sh shows the versions it runs.
tibia-sh/mcp.tibia.sh has the details.
Claude Code
Install it as a plugin, from your terminal. You get the server and a skill that teaches the agent the traps in the data, like damage modifiers where 100 is neutral:
claude plugin marketplace add tibia-sh/tibiawiki-mcp
claude plugin install tibiawiki-mcp@tibiawiki-mcpAny other MCP client
Add this to your client's MCP configuration, for example claude_desktop_config.json for Claude
Desktop or .cursor/mcp.json for Cursor. It needs Node 22.13 or later:
{
"mcpServers": {
"tibiawiki": { "command": "npx", "args": ["-y", "@tibia.sh/tibiawiki-mcp"] }
}
}The first start downloads the package and its 18 MB index. After that it works offline.
Related MCP server: tibiawiki_en_mcp
Tools
You ask questions, and your assistant calls these:
Tool | Answers |
| "Is there a page called roughly X?" |
| "Tell me everything about X." X can be a creature, item, NPC, quest or spell |
| "Which creatures match these stats?" |
| "Which items match these stats?" |
| "Where do I get X?" Drops, vendors and quest rewards in one call |
The server tells your assistant how to read the data, for example that a damage modifier of 100 is neutral. What the skill adds lists the traps.
How fresh the data is
The index is a snapshot. Every answer says when it was taken, as indexGeneratedAt. It ships as
its own package, @tibia.sh/tibiawiki-data, rebuilt
every week and released when the wiki changed. A fresh install gets the newest one. The hosted
server follows each release by itself.
Why it exists
TibiaWiki runs on Fandom without Cargo, Semantic MediaWiki or CirrusSearch, so there is
no way to query it by attribute. Every structured value is trapped inside Infobox
wikitext, and the built-in search returns Dragon Necklace for fire resistant dragon.
The public REST API over the same wiki exposes exactly one query parameter. Building a
local index is the only way to ask a real question.
More
docs/USAGE.md => the plugin in detail, serving over HTTP yourself, building your own index
docs/MAINTAINING.md => working on the server and releasing it
Attribution
Data from TibiaWiki (https://tibia.fandom.com), licensed CC BY-SA. Tibia is made by CipSoft; game content and images are copyright CipSoft GmbH.
The index is generated by tibiawiki-sql (Apache-2.0). Images are deliberately never fetched or stored.
This project's own code is MIT licensed, see LICENSE. That covers the code only. The
data it serves is CC BY-SA and not ours to relicense.
Available Tools
5 toolstibia_find_creaturesARead-onlyInspect
Find Tibia creatures matching stat filters. Damage modifiers are percentages where 100 is neutral: "weak_to" means the creature takes MORE than 100% damage from that element, "resistant_to" means less. Use this for questions like "which creatures are weak to fire and give over 500 experience".
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | experience | |
| limit | No | ||
| cursor | No | ||
| is_boss | No | ||
| weak_to | No | Elements the creature takes extra damage from. | |
| resistant_to | No | ||
| hitpoints_max | No | Creatures whose hitpoints are unrecorded are excluded from this filter. | |
| hitpoints_min | No | Creatures whose hitpoints are unrecorded are excluded from this filter. | |
| bestiary_class | No | e.g. "Dragon", "Human". | |
| experience_max | No | ||
| experience_min | No | ||
| include_inactive | No | ||
| location_contains | No | Substring of the location text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| nextCursor | No | |
| totalMatches | Yes | |
| indexGeneratedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint annotation by explaining the semantic meaning of the damage modifiers ('weak_to' means more than 100% damage, 'resistant_to' means less). This is critical for correct filter usage and is not derivable from the schema alone. It does not mention pagination or return format, but annotations already indicate a read-only, safe operation, and output schema exists.
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 with no filler. The first sentence states the purpose, the second immediately clarifies the most non-trivial semantic detail and provides an example. Information is front-loaded and 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 13 parameters and an output schema, the description covers the essential tricky part (damage modifiers) and gives a usage example. It does not explain defaults for parameters like limit, sort, or include_inactive, but those are present in the schema. The exclusion of unrecorded hitpoints is documented in the schema for the relevant parameters. Overall, the description is sufficient for an agent to call the tool correctly, though it could explicitly mention that filters combine logically and that results are returned as a list.
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 only 38%, leaving many parameters (sort, limit, cursor, is_boss, experience_min/max, etc.) undocumented in both schema and description. The description compensates for the damage-modifier parameters (weak_to, resistant_to) by explaining their meaning, but does not add value for the remaining parameters, which are fairly self-explanatory but still nominally under-documented. This partial compensation warrants a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Find') and the resource ('Tibia creatures') with a specific scope ('matching stat filters'). It distinguishes from siblings: tibia_get and tibia_search likely retrieve specific entities, tibia_find_items is for items, and tibia_how_to_obtain is a process. The tool's purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete example of when to use the tool ('which creatures are weak to fire and give over 500 experience'), which strongly implies typical usage scenarios. It does not explicitly mention alternatives or when not to use this tool, but the example is illustrative enough for an agent to recognize suitable queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tibia_find_itemsARead-onlyInspect
Find Tibia items matching class, type and stat filters such as attack, defense, armor and required level. Use this for questions like "which two-handed swords need level 100 or less". Vocation and weapon type match by membership, so "knight" matches "knights".
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | title | |
| limit | No | ||
| cursor | No | ||
| vocation | No | Matches required_vocation, e.g. "knight". | |
| armor_min | No | ||
| item_type | No | e.g. "Sword Weapons". | |
| attack_max | No | ||
| attack_min | No | ||
| item_class | No | e.g. "Weapons", "Armors". | |
| defense_min | No | ||
| weapon_type | No | e.g. "Sword", "Axe", "Club". | |
| include_inactive | No | ||
| required_level_max | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| nextCursor | No | |
| totalMatches | Yes | |
| indexGeneratedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering safety. The description adds behavioral nuance beyond annotations: the membership matching rule ('knight' matches 'knights') and the fact that filters are stat-based. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and a clarifying example. Every clause earns its place, and the membership nuance is integrated naturally without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filter-based search tool with 13 optional parameters, an output schema, and read-only annotations, the description covers the primary use case and key behavior. It doesn't explain pagination (cursor/limit) or the include_inactive flag, but these are secondary to the core query pattern. Adequate for an agent to invoke it correctly in most scenarios.
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 only 31%, and the description mentions 'attack, defense, armor and required level' but doesn't explain the min/max variants or that these are range filters. The example implies required_level_max, but many parameters (sort, limit, cursor, include_inactive) are left unexplained. It adds some meaning beyond the schema but does not fully compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find'), resource ('Tibia items'), and scope ('matching class, type and stat filters'). The example query clarifies the exact kind of question it answers, distinguishing it from sibling tools like tibia_search (likely broader) and tibia_find_creatures (creatures, not items).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('which two-handed swords need level 100 or less') and a membership nuance for vocation/weapon type. It doesn't explicitly state when not to use it or contrast with alternatives, but the example strongly implies the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tibia_getARead-onlyInspect
Full detail for one named Tibia page of any kind: creature (with its loot table, abilities and max damage), item, npc, quest, spell, achievement, house, imbuement, charm, mount, outfit, book, world or update. Takes an exact page name — use tibia_search first if it is uncertain. Pass type to disambiguate a shared name. Creature abilities may carry an area: Grid of map tiles, row-major, as the caster faces. '.' unaffected tile, '#' effect tile, '@' the caster, '*' the target tile, digits 4-8 extra sprite layers (a second effect the scene draws), '?' an unrecognised value. effectTiles counts effect tiles only. effectOnCaster says whether the caster is caught in its own effect; it is stated by the wiki, not read off the grid.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Page name, e.g. "Dragon Lord". Case-insensitive. | |
| type | No | Restrict the lookup to one kind of page. | |
| verbosity | No | "detailed" adds extra descriptive columns. | concise |
| include_inactive | No | Include deprecated, event-only and unavailable pages. Applies to the requested page. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description wisely does not repeat that. It adds substantial non-obvious behavior: the full grammar of creature ability `area` grids, the meaning of effectTiles, and the caveat that effectOnCaster is wiki-stated rather than read from the grid. That is exactly the kind of context structured fields cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage guidance are front-loaded, and the later area-grid passage is dense but not padded. Each clause adds a distinct semantic fact. It is longer than typical descriptions, but the length is justified by the genuinely complex output format it explains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, 100% schema coverage, an output schema, and readOnly annotations, the description covers lookup semantics and the one deeply non-obvious output field. It does not describe missing-page behavior in prose, but that is not required given the output schema and the search-first instruction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The prose adds meaning beyond the schema by explaining that `name` must be exact and that `type` resolves shared-name collisions. It does not add much for verbosity/include_inactive, but those are fully described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the operation ('Full detail') and the resource ('one named Tibia page') and enumerates every page kind, clearly distinguishing it from the search/find siblings. It even routes to tibia_search for uncertain names, so an agent can immediately tell what tibia_get is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use tibia_search first when the page name is uncertain and to pass `type` to disambiguate shared names. This gives concrete decision rules for the main usage choices without leaving them to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tibia_how_to_obtainARead-onlyInspect
Every in-game source for one item in a single call: which creatures drop it and how likely, which NPCs sell it and for how much (the price the player pays), and which quests reward it. Prefer this over three separate lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| item_name | Yes | Item page name, e.g. "Dragon Shield". | |
| include_inactive | No | Include deprecated or event-only creatures, NPCs and quests as sources. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | Yes | |
| note | Yes | |
| source | Yes | |
| status | Yes | |
| droppedBy | Yes | |
| soldByNpcs | Yes | |
| questRewards | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds no contradictory behavior. It adds useful context about the returned information (drop rates, NPC prices, quest rewards) without needing to restate the read-only nature. It does not cover rate limits or auth, but the simple read-only profile makes this adequate.
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 with zero filler: the first front-loads the core purpose and resource scope, the second gives the usage preference. 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?
For a simple two-parameter tool with an output schema and read-only annotations, the description covers what it does and when to use it. The only minor gap is not explicitly explaining when include_inactive should be true, but the schema already documents it, so no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both item_name and include_inactive described in the input schema. The description adds the single-item aggregation context but does not elaborate parameter behavior, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('one item') and action ('Every in-game source ... in a single call'), enumerating creature drops, NPC sales, and quest rewards. This clearly differentiates it from siblings like tibia_find_items and tibia_find_creatures by emphasizing aggregation across source types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance: 'Prefer this over three separate lookups,' which tells the agent when to choose this tool instead of performing multiple queries. It does not name the specific alternatives or exclusion conditions, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tibia_searchARead-onlyInspect
Find Tibia pages whose name contains a substring, across all fourteen kinds of page (creature, item, npc, quest, spell, achievement, house, imbuement, charm, mount, outfit, book, world, update). Turns an approximate name into the exact page name tibia_get expects. Ordered shortest-name-first, so the closest match leads.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Substring to match against page names, case-insensitive. | |
| types | No | Restrict to these kinds of page. Defaults to all fourteen. | |
| cursor | No | Opaque cursor from a previous call. | |
| include_inactive | No | Include deprecated, event-only and unavailable pages. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| nextCursor | No | |
| totalMatches | Yes | |
| indexGeneratedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, lowering the safety-disclosure burden. The description adds genuinely useful behavior beyond the schema: substring semantics, all-fourteen-types scope, and the shortest-name-first ordering with the rationale that 'the closest match leads.' It does not disclose pagination behavior, though the cursor parameter's schema description partially covers that.
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?
Three sentences with the purpose front-loaded, and each sentence earns its place: purpose/scope, the tibia_get relationship, and ordering behavior. The enumeration of all fourteen page types in the first sentence is somewhat redundant with the schema's types enum, so it is not maximally concise, but there is no wasted or filler content.
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?
Because an output schema exists and readOnlyHint is annotated, the description does not need to explain return values or safety. It covers the operational facts an agent needs — substring semantics, scope, ordering, and the tibia_get contract — while the schema covers the cursor mechanism. The only meaningful gap is guidance on when the specialized finder siblings should be preferred.
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 80%, so the schema already documents query, types, cursor, and include_inactive, and the description partly restates the fourteen-type scope that the types enum already lists. The ordering statement adds slight interpretive value for how limit selects results, but it does not add meaningful new parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb ('Find'), resource ('Tibia pages'), and matching mechanism (substring), then enumerates all fourteen page types to establish full scope at a glance. It also explicitly distinguishes itself from its siblings by framing the tool as the step that 'Turns an approximate name into the exact page name tibia_get expects.'
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 tibia_get linkage provides clear context: use this when you have an approximate name that must be resolved before calling tibia_get. However, it gives no exclusions and does not contrast itself with the specialized tibia_find_creatures and tibia_find_items siblings, so routing between the general and specialized finders is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.5.0- Changed
tibia_find_creatures15 fields changed- removed
Input schema / additionalPropertiesRemoved value: -{} - added
Input schema / properties / bestiary_classAdded value: +{ + "description": "e.g. \"Dragon\", \"Human\".", + "type": "string" +} - added
Input schema / properties / cursorAdded value: +{ + "type": "string" +} - added
Input schema / properties / experience_maxAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / experience_minAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / hitpoints_maxAdded value: +{ + "description": "Creatures whose hitpoints are unrecorded are excluded from this filter.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / hitpoints_minAdded value: +{ + "description": "Creatures whose hitpoints are unrecorded are excluded from this filter.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / include_inactiveAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / is_bossAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "default": 25, + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / location_containsAdded value: +{ + "description": "Substring of the location text.", + "type": "string" +} - added
Input schema / properties / resistant_toAdded value: +{ + "items": { + "enum": [ + "physical", + "earth", + "fire", + "ice", + "energy", + "death", + "holy", + "drown", + "lifedrain", + "healing" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sortAdded value: +{ + "default": "experience", + "enum": [ + "experience", + "hitpoints", + "title" + ], + "type": "string" +} - added
Input schema / properties / weak_toAdded value: +{ + "description": "Elements the creature takes extra damage from.", + "items": { + "enum": [ + "physical", + "earth", + "fire", + "ice", + "energy", + "death", + "holy", + "drown", + "lifedrain", + "healing" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "nextCursor": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "bestiaryClass": { + "type": [ + "string", + "null" + ] + }, + "experience": { + "type": [ + "number", + "null" + ] + }, + "hitpoints": { + "type": [ + "number", + "null" + ] + }, + "isBoss": { + "type": "boolean" + }, + "modifiers": { + "additionalProperties": { + "type": [ + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "title": { + "type": "string" + } + }, + "required": [ + "title", + "hitpoints", + "experience", + "bestiaryClass", + "isBoss", + "modifiers" + ], + "type": "object" + }, + "type": "array" + }, + "totalMatches": { + "type": "number" + } + }, + "required": [ + "results", + "totalMatches", + "indexGeneratedAt" + ], + "type": "object" +}
- Changed
tibia_find_items15 fields changed- removed
Input schema / additionalPropertiesRemoved value: -{} - added
Input schema / properties / armor_minAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / attack_maxAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / attack_minAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / cursorAdded value: +{ + "type": "string" +} - added
Input schema / properties / defense_minAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / include_inactiveAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / item_classAdded value: +{ + "description": "e.g. \"Weapons\", \"Armors\".", + "type": "string" +} - added
Input schema / properties / item_typeAdded value: +{ + "description": "e.g. \"Sword Weapons\".", + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "default": 25, + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / required_level_maxAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / sortAdded value: +{ + "default": "title", + "enum": [ + "title", + "weight", + "value" + ], + "type": "string" +} - added
Input schema / properties / vocationAdded value: +{ + "description": "Matches required_vocation, e.g. \"knight\".", + "type": "string" +} - added
Input schema / properties / weapon_typeAdded value: +{ + "description": "e.g. \"Sword\", \"Axe\", \"Club\".", + "type": "string" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "nextCursor": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": { + "type": [ + "string", + "number" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "itemClass": { + "type": [ + "string", + "null" + ] + }, + "itemType": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "valueBuy": { + "type": [ + "number", + "null" + ] + }, + "weight": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "title", + "itemClass", + "itemType", + "weight", + "valueBuy", + "attributes" + ], + "type": "object" + }, + "type": "array" + }, + "totalMatches": { + "type": "number" + } + }, + "required": [ + "results", + "totalMatches", + "indexGeneratedAt" + ], + "type": "object" +}
- Changed
tibia_get7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -{} - added
Input schema / properties / include_inactiveAdded value: +{ + "default": false, + "description": "Include deprecated, event-only and unavailable pages. Applies to the requested page.", + "type": "boolean" +} - added
Input schema / properties / nameAdded value: +{ + "description": "Page name, e.g. \"Dragon Lord\". Case-insensitive.", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / typeAdded value: +{ + "description": "Restrict the lookup to one kind of page.", + "enum": [ + "creature", + "item", + "npc", + "quest", + "spell", + "achievement", + "house", + "imbuement", + "charm", + "mount", + "outfit", + "book", + "world", + "update" + ], + "type": "string" +} - added
Input schema / properties / verbosityAdded value: +{ + "default": "concise", + "description": "\"detailed\" adds extra descriptive columns.", + "enum": [ + "concise", + "detailed" + ], + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "name" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "abilities": { + "items": { + "additionalProperties": false, + "properties": { + "area": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ascii": { + "type": "string" + }, + "cells": { + "items": { + "type": "number" + }, + "type": "array" + }, + "effectOnCaster": { + "type": "boolean" + }, + "effectTiles": { + "type": "number" + }, + "height": { + "type": "number" + }, + "key": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "key", + "width", + "height", + "cells", + "ascii", + "effectTiles", + "effectOnCaster" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "effect": { + "type": [ + "string", + "null" + ] + }, + "element": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "effect", + "element", + "area" + ], + "type": "object" + }, + "type": "array" + }, + "armor": { + "type": [ + "number", + "null" + ] + }, + "bestiaryClass": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "experience": { + "type": [ + "number", + "null" + ] + }, + "hitpoints": { + "type": [ + "number", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "isBoss": { + "type": "boolean" + }, + "loot": { + "items": { + "additionalProperties": false, + "properties": { + "chance": { + "type": [ + "number", + "null" + ] + }, + "item": { + "type": "string" + }, + "max": { + "type": [ + "number", + "null" + ] + }, + "min": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "item", + "chance", + "min", + "max" + ], + "type": "object" + }, + "type": "array" + }, + "maxDamage": { + "anyOf": [ + { + "additionalProperties": { + "type": [ + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "modifiers": { + "additionalProperties": { + "type": [ + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "sounds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "speed": { + "type": [ + "number", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "creature", + "type": "string" + } + }, + "required": [ + "type", + "image", + "title", + "hitpoints", + "experience", + "armor", + "speed", + "bestiaryClass", + "isBoss", + "status", + "modifiers", + "loot", + "abilities", + "maxDamage", + "sounds", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": { + "type": [ + "string", + "number" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "isMarketable": { + "type": [ + "boolean", + "null" + ] + }, + "itemClass": { + "type": [ + "string", + "null" + ] + }, + "itemType": { + "type": [ + "string", + "null" + ] + }, + "keys": { + "items": { + "additionalProperties": false, + "properties": { + "location": { + "type": [ + "string", + "null" + ] + }, + "material": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "number": { + "type": [ + "number", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "title", + "number", + "name", + "material", + "location", + "notes" + ], + "type": "object" + }, + "type": "array" + }, + "proficiencyPerks": { + "items": { + "additionalProperties": false, + "properties": { + "effect": { + "type": [ + "string", + "null" + ] + }, + "level": { + "type": [ + "number", + "null" + ] + }, + "skill": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "level", + "effect", + "skill" + ], + "type": "object" + }, + "type": "array" + }, + "sounds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "storeOffers": { + "items": { + "additionalProperties": false, + "properties": { + "amount": { + "type": [ + "number", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "price", + "amount", + "currency" + ], + "type": "object" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "type": { + "const": "item", + "type": "string" + }, + "typeSecondary": { + "type": [ + "string", + "null" + ] + }, + "valueBuy": { + "type": [ + "number", + "null" + ] + }, + "valueSell": { + "type": [ + "number", + "null" + ] + }, + "weight": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "type", + "image", + "title", + "itemClass", + "itemType", + "typeSecondary", + "weight", + "valueBuy", + "valueSell", + "isMarketable", + "status", + "attributes", + "keys", + "storeOffers", + "proficiencyPerks", + "sounds", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "destinations": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "name", + "price", + "notes" + ], + "type": "object" + }, + "type": "array" + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "gender": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "jobs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "position": { + "additionalProperties": false, + "properties": { + "x": { + "type": [ + "number", + "null" + ] + }, + "y": { + "type": [ + "number", + "null" + ] + }, + "z": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "x", + "y", + "z" + ], + "type": "object" + }, + "races": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rashidSchedule": { + "items": { + "additionalProperties": false, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "day": { + "type": "string" + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "position": { + "additionalProperties": false, + "properties": { + "x": { + "type": [ + "number", + "null" + ] + }, + "y": { + "type": [ + "number", + "null" + ] + }, + "z": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "x", + "y", + "z" + ], + "type": "object" + } + }, + "required": [ + "day", + "city", + "location", + "position" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "subarea": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "npc", + "type": "string" + } + }, + "required": [ + "type", + "image", + "title", + "gender", + "city", + "subarea", + "location", + "position", + "status", + "jobs", + "races", + "destinations", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "dangers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "isPremium": { + "type": [ + "boolean", + "null" + ] + }, + "legend": { + "type": [ + "string", + "null" + ] + }, + "levelRecommended": { + "type": [ + "number", + "null" + ] + }, + "levelRequired": { + "type": [ + "number", + "null" + ] + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "questLog": { + "type": [ + "boolean", + "null" + ] + }, + "rewards": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "quest", + "type": "string" + } + }, + "required": [ + "type", + "title", + "location", + "levelRequired", + "levelRecommended", + "isPremium", + "questLog", + "legend", + "status", + "dangers", + "rewards", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "areaShape": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "affectedTiles": { + "type": "number" + }, + "ascii": { + "type": "string" + }, + "cells": { + "items": { + "type": "number" + }, + "type": "array" + }, + "corroborated": { + "type": "boolean" + }, + "derivedFrom": { + "const": "animation", + "type": "string" + }, + "height": { + "type": "number" + }, + "sourceImage": { + "type": "string" + }, + "sourceUrl": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "width", + "height", + "cells", + "ascii", + "affectedTiles", + "derivedFrom", + "sourceImage", + "sourceUrl", + "corroborated" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Tiles a spell covers, read from its wiki animation." + }, + "cooldown": { + "type": [ + "number", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "element": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "isPremium": { + "type": [ + "boolean", + "null" + ] + }, + "level": { + "type": [ + "number", + "null" + ] + }, + "mana": { + "type": [ + "number", + "null" + ] + }, + "soul": { + "type": [ + "number", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "spellType": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "spell", + "type": "string" + }, + "words": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "areaShape", + "image", + "title", + "words", + "spellType", + "element", + "mana", + "level", + "soul", + "isPremium", + "cooldown", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "achievementId": { + "type": [ + "number", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "grade": { + "type": [ + "number", + "null" + ] + }, + "isPremium": { + "type": [ + "boolean", + "null" + ] + }, + "isSecret": { + "type": [ + "boolean", + "null" + ] + }, + "points": { + "type": [ + "number", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "spoiler": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "achievement", + "type": "string" + } + }, + "required": [ + "type", + "title", + "grade", + "points", + "description", + "spoiler", + "isSecret", + "isPremium", + "achievementId", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "beds": { + "type": [ + "number", + "null" + ] + }, + "city": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "floors": { + "type": [ + "number", + "null" + ] + }, + "houseId": { + "type": [ + "number", + "null" + ] + }, + "isGuildhall": { + "type": [ + "boolean", + "null" + ] + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "position": { + "additionalProperties": false, + "properties": { + "x": { + "type": [ + "number", + "null" + ] + }, + "y": { + "type": [ + "number", + "null" + ] + }, + "z": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "x", + "y", + "z" + ], + "type": "object" + }, + "rent": { + "type": [ + "number", + "null" + ] + }, + "rooms": { + "type": [ + "number", + "null" + ] + }, + "size": { + "type": [ + "number", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "street": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "house", + "type": "string" + } + }, + "required": [ + "type", + "title", + "houseId", + "city", + "street", + "location", + "beds", + "rent", + "size", + "rooms", + "floors", + "position", + "isGuildhall", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "category": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "effect": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "imbuementType": { + "type": [ + "string", + "null" + ] + }, + "materials": { + "items": { + "additionalProperties": false, + "properties": { + "amount": { + "type": [ + "number", + "null" + ] + }, + "item": { + "type": "string" + } + }, + "required": [ + "item", + "amount" + ], + "type": "object" + }, + "type": "array" + }, + "slots": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "tier": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "imbuement", + "type": "string" + } + }, + "required": [ + "type", + "image", + "title", + "tier", + "category", + "imbuementType", + "effect", + "slots", + "status", + "materials", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "charmType": { + "type": [ + "string", + "null" + ] + }, + "costs": { + "items": { + "type": [ + "number", + "null" + ] + }, + "type": "array" + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "effect": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "charm", + "type": "string" + } + }, + "required": [ + "type", + "image", + "title", + "charmType", + "effect", + "costs", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "achievement": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "descriptionUrl": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "height": { + "type": "number" + }, + "mimeType": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "fileName", + "url", + "descriptionUrl", + "width", + "height", + "mimeType" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Sprite image link. Dimensions are pixels, not map squares." + }, + "isBuyable": { + "type": [ + "boolean", + "null" + ] + }, + "lightColor": { + "type": [ + "number", + "null" + ] + }, + "lightRadius": { + "type": [ + "number", + "null" + ] + }, + "price": { + "type": [ + "number", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "speed": { + "type": [ + "number", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "tamingMethod": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "mount", + "type": "string" + } + }, + "required": [ + "type", + "image", + "title", + "speed", + "tamingMethod", + "isBuyable", + "price", + "achievement", + "lightColor", + "lightRadius", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "achievement": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "fullPrice": { + "type": [ + "number", + "null" + ] + }, + "isBought": { + "type": [ + "boolean", + "null" + ] + }, + "isPremium": { + "type": [ + "boolean", + "null" + ] + }, + "isTournament": { + "type": [ + "boolean", + "null" + ] + }, + "outfitType": { + "type": [ + "string", + "null" + ] + }, + "quests": { + "items": { + "additionalProperties": false, + "properties": { + "quest": { + "type": "string" + }, + "unlockType": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "quest", + "unlockType" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "outfit", + "type": "string" + } + }, + "required": [ + "type", + "title", + "outfitType", + "isPremium", + "isBought", + "isTournament", + "fullPrice", + "achievement", + "status", + "quests", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "author": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "type": [ + "string", + "null" + ] + }, + "bookType": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "itemId": { + "type": [ + "number", + "null" + ] + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "nextBook": { + "type": [ + "string", + "null" + ] + }, + "prevBook": { + "type": [ + "string", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "book", + "type": "string" + } + }, + "required": [ + "type", + "title", + "bookType", + "itemId", + "location", + "blurb", + "author", + "prevBook", + "nextBook", + "status", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "battleye": { + "type": [ + "boolean", + "null" + ] + }, + "battleyeType": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "isExperimental": { + "type": [ + "boolean", + "null" + ] + }, + "isPreview": { + "type": [ + "boolean", + "null" + ] + }, + "location": { + "type": [ + "string", + "null" + ] + }, + "mergedInto": { + "type": [ + "string", + "null" + ] + }, + "offlineSince": { + "type": [ + "string", + "null" + ] + }, + "onlineSince": { + "type": [ + "string", + "null" + ] + }, + "protectedSince": { + "type": [ + "string", + "null" + ] + }, + "pvpType": { + "type": [ + "string", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "title": { + "type": "string" + }, + "tradeBoard": { + "type": [ + "number", + "null" + ] + }, + "type": { + "const": "world", + "type": "string" + }, + "worldBoard": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "type", + "title", + "location", + "pvpType", + "isPreview", + "isExperimental", + "onlineSince", + "offlineSince", + "mergedInto", + "battleye", + "battleyeType", + "protectedSince", + "worldBoard", + "tradeBoard", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "changes": { + "type": [ + "string", + "null" + ] + }, + "detail": { + "additionalProperties": { + "type": [ + "string", + "number", + "null" + ] + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "newsId": { + "type": [ + "number", + "null" + ] + }, + "next": { + "type": [ + "string", + "null" + ] + }, + "previous": { + "type": [ + "string", + "null" + ] + }, + "releaseDate": { + "type": [ + "string", + "null" + ] + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "const": "update", + "type": "string" + }, + "typePrimary": { + "type": [ + "string", + "null" + ] + }, + "typeSecondary": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "title", + "releaseDate", + "newsId", + "typePrimary", + "typeSecondary", + "previous", + "next", + "summary", + "changes", + "source" + ], + "type": "object" + } + ], + "type": "object" +}
- Changed
tibia_how_to_obtain5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -{} - added
Input schema / properties / include_inactiveAdded value: +{ + "default": false, + "description": "Include deprecated or event-only creatures, NPCs and quests as sources.", + "type": "boolean" +} - added
Input schema / properties / item_nameAdded value: +{ + "description": "Item page name, e.g. \"Dragon Shield\".", + "minLength": 1, + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "item_name" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "droppedBy": { + "items": { + "additionalProperties": false, + "properties": { + "chance": { + "type": [ + "number", + "null" + ] + }, + "creature": { + "type": "string" + }, + "max": { + "type": [ + "number", + "null" + ] + }, + "min": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "creature", + "chance", + "min", + "max" + ], + "type": "object" + }, + "type": "array" + }, + "item": { + "type": "string" + }, + "note": { + "type": "string" + }, + "questRewards": { + "items": { + "type": "string" + }, + "type": "array" + }, + "soldByNpcs": { + "items": { + "additionalProperties": false, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "npc": { + "type": "string" + }, + "price": { + "type": "number" + } + }, + "required": [ + "npc", + "city", + "price", + "currency" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "page": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "page", + "url", + "indexGeneratedAt" + ], + "type": "object" + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "item", + "status", + "droppedBy", + "soldByNpcs", + "questRewards", + "note", + "source" + ], + "type": "object" +}
- Changed
tibia_search8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -{} - added
Input schema / properties / cursorAdded value: +{ + "description": "Opaque cursor from a previous call.", + "type": "string" +} - added
Input schema / properties / include_inactiveAdded value: +{ + "default": false, + "description": "Include deprecated, event-only and unavailable pages.", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "default": 25, + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Substring to match against page names, case-insensitive.", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / typesAdded value: +{ + "description": "Restrict to these kinds of page. Defaults to all fourteen.", + "items": { + "enum": [ + "creature", + "item", + "npc", + "quest", + "spell", + "achievement", + "house", + "imbuement", + "charm", + "mount", + "outfit", + "book", + "world", + "update" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / requiredAdded value: +[ + "query" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "indexGeneratedAt": { + "type": "string" + }, + "nextCursor": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "title", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "totalMatches": { + "type": "number" + } + }, + "required": [ + "results", + "totalMatches", + "indexGeneratedAt" + ], + "type": "object" +}
5 tool updates
v0.1.0- First observed
tibia_find_creatures - First observed
tibia_find_items - First observed
tibia_get - First observed
tibia_how_to_obtain - First observed
tibia_search
TDQS
Scored across 5 tools
Each tool serves a unique purpose: fetching page details, searching names, filtering creatures/items by stats, and retrieving item sources. No overlap; tibia_get handles all page types while the others are specialized queries.
All tools share the 'tibia_' prefix and follow a clear verb/resource pattern: get, search, find_creatures, find_items, how_to_obtain. Consistent and predictable.
Five tools cover the core wiki lookup operations without redundancy. The scope is well-defined for a read-only wiki server, neither too sparse nor bloated.
Covers retrieval comprehensively: exact lookup, fuzzy search, filtered searches for two resource types, and a combined source query. Minor gaps like listing all pages of a type or batch lookups exist but are not critical for typical usage.
Maintenance
Related MCP Connectors
Wikipedia, Wikidata and Wiktionary as clean JSON, not HTML. 1.9M searchable. Free, no auth.
Search and fetch Wikidata entities, execute SPARQL queries, and resolve external identifiers.
Search 2b2t locations, groups, highways, renders, Archive warps, and WDL metadata.
Query Klaaro datasets, documents, and extracted records from any agent.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables AI agents to query TibiaWiki data including creatures, items, NPCs, quests, and more via 19 MCP tools.8-
- FlicenseNot gradedqualityCmaintenanceA server that downloads, parses, and indexes TibiaWiki content, providing 19 MCP tools for AI agents to query structured data such as creatures, items, and quests.-
- AlicenseAqualityBmaintenanceProvides read-only Arknights intelligence over MCP, enabling structured queries about stages, enemies, operators, and modules with region tagging and evidence-backed analysis. It uses versioned SQLite snapshots and never fetches upstream data at query time.13Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables agents to search a local, fully offline personal document library (Markdown/txt/PDF/docx) via SQLite FTS5 trigram search with subject-terminology expansion, returning every hit with its domain, document title, section path, and page or offset provenance. It also exposes domain statistics, incremental ingestion, and document deprecation as tools, alongside a read-only, runtime-persona-scoped ask/coverage mode.-