Remote MCP server exposing the Old School RuneScape Wiki and live player data as tools, on Cloudflare Workers
Strong naming conventions (all verb_noun pattern), comprehensive descriptions (avg 180 chars, well within 10-1024 range), and complete input schemas with type constraints. All 13 tools have descriptions and parameters are well-documented. However, output schemas are not explicitly documented in the code, responses are text-wrapped rather than structured JSON with typed fields. Error handling is present but minimal (no recovery guidance or categorization). Missing tool annotations (readOnlyHint, idempotentHint). No pagination support despite tools returning lists (search_pages returns top 5, but no cursor/limit params). Parameter descriptions are strong but some lack format/constraint details (e.g., 'period' in get_gains accepts free-form strings like 'week', 'month', 'year' but no enum constraint visible).
Check whether a player owns all the materials needed to make or do something. Provide a list of item names and quantities, and this tool will check the player's bank, inventory, equipment and rune pouch. Returns what they have, what they are missing, and what they have in excess.
Get the latest Grand Exchange price for a tradeable Old School RuneScape item, resolved by item name. Returns the most recent high (buy) and low (sell) prices with their timestamps. Use this for current prices; do not answer price questions from memory.
Get a comprehensive summary of a player's account: overall level, total experience, combat level, account type (standard/ironman/hardcore/ultimate), and links to their hiscores and Wise Old Man profile. Combines data from the hiscores and Wise Old Man.
Get a player's bank contents from the Item Sync RuneLite plugin. Requires the Item Sync plugin to be installed and configured. Returns items sorted by quantity with their IDs and stack sizes. Large banks are summarized to the top 50 items by quantity.
Get a player's currently equipped items from the Item Sync RuneLite plugin. Requires the Item Sync plugin to be installed and configured. Returns items by equipment slot.
Output schemas not documented. Tools return text-wrapped responses via text() helper rather than structured JSON with typed fields. LLMs cannot plan downstream calls or extract specific fields without parsing unstructured text.
Missing tool annotations. No readOnlyHint, idempotentHint, or destructiveHint declared. All tools are read-only but this is not formally signaled to clients.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Get a player's recent experience and boss killcount gains from Wise Old Man. Specify a time period (week, month, year, etc.) to see what they have gained in that window. Requires at least two snapshots in the period to show gains.
Get the structured infobox data for an Old School RuneScape Wiki page as JSON. ALWAYS use this for item recipes, crafting materials, level requirements, quest requirements, monster stats, and drop sources. Do not answer OSRS item/recipe questions from memory. Returns the parsed template fields, including Recipe templates (materials as mat1/mat2/..., skill requirements as skill1/skill1lvl) and a versions array for items with multiple variants such as charge levels.
Get a player's current inventory contents from the Item Sync RuneLite plugin. Requires the Item Sync plugin to be installed and configured. Returns items with quantities and reports inventory slot usage.
Read the prose of an Old School RuneScape Wiki page as cleaned plain text. Use this for narrative topics such as quest walkthroughs, strategy, mechanics and lore. For item recipes, stats and requirements prefer get_infobox, which returns exact structured fields instead of prose.
Get a player's current skill levels, experience and boss killcounts from the official hiscores. Requires a username; if the server has a DEFAULT_PLAYER configured, that is used when no username is supplied. Returns overall level, total experience, and per-skill breakdowns with ranks.
Get the stored quest journal for a player's current progress on a specific quest. Requires the WikiSync RuneLite plugin to be installed and enabled, and the player to have opened the quest's journal page in-game. Returns the journal text with parsed sections and the player's current progress variable.
Get a player's quest completion status and diary progress from WikiSync. Requires the WikiSync RuneLite plugin to be installed and enabled. Returns quest states (not started, in progress, complete) and achievement diary regions with their tiers.
[osrs-wiki v3] Search the Old School RuneScape Wiki and return the top 5 matching page titles with a plain-text snippet each. Use this to find the exact page title before calling get_page or get_infobox. Note: this server ALSO provides live player-account tools — get_player_stats, get_quest_progress, get_gains and get_account_summary for the user's real levels, quests and progress, and get_bank, get_equipment and check_materials for what they actually own.
Unconstrained enum parameters. 'period' in get_gains accepts free-form strings ('week', 'month', 'year', etc.) but no enum constraint is visible. LLMs may hallucinate invalid values like 'fortnight' or 'decade'.
Error handling lacks recovery guidance. Errors return plain text (e.g., 'No page titled X exists') but do not categorize as retryable/user-fixable/fatal or suggest next steps. LLMs cannot self-correct without explicit guidance.
No pagination support. search_pages hardcodes top 5 results with no limit/offset params or cursor. Large result sets (e.g., 100+ matching pages) cannot be retrieved, and no next_cursor is returned.