MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

RuneScape Wiki

RS3 Grand Exchange prices, item lookup, player hiscores, and RuneScape Wiki content

Checks passed
15 / 22

0 failed · 7 not measured

Median response
883 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
14

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 871 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name runescape-wiki-mcp.

  • Pass
    Lists tools

    tools/list returned 14 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 883 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 893 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    57 of 57 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Pass
    Repo owner matches

    The GitHub repository owner matches the namespace login.

  • Pass
    Recently updated

    Updated 2026-10-16T04:14:31.176127Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using RuneScape Wiki

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http runescape-wiki https://runescape-wiki-mcp.fly.dev/mcp

Capabilities

Tools 14

browse_items

List GE items within one numeric category. Use list_wiki_category_members for Wiki Category: titles, lookup_item for names, or get_item_details for individual records. - Discover IDs with get_ge_info view=categories and nonempty letters with view=category_counts. IDs 0 and 42 both say Miscellaneous but identify separate groups. - {"category":24,"alpha":"#","page":2} selects the second numeric-name page of high-level melee weapons. Pass literal #, not %23; the server encodes it. - Restart page at 1 when category or alpha changes. Stop on empty items; isError signals failure rather than completion. - Jagex total counts the category, not the letter. Guide prices lag activity. - Each call makes one uncached Jagex read without credentials. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
estimate_flip

Calculate RS3 resale-profit scenarios after seller tax. ESTIMATE ONLY; never places an order. Use get_item_details for current records/comparisons or lookup_item to resolve names. - itemId=4151 means Abyssal whip, not a quantity. quantity scales total investment, tax and profit without changing per-unit margin. - Omitting both prices gives identical buy/sell prices, usually a tax loss. Supply itemId and both prices to calculate without network access. - Seller tax is 2% of each unit's sell price, rounded down. Bonds and sales at 50 coins or less are exempt. - With quantity=20 and buyLimitRemaining=5, quota profit covers five units while requested totals still cover twenty. fillTimeMinutes converts full-request profit into an hourly rate, including assumed quota waits. Both inputs are caller assumptions, not observed limits or fill predictions. - Sampled prices lag live offers. Reads are uncached and require no credentials. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
get_ge_info

Read RS3 GE catalogue metadata. Do not use this for item prices: use get_item_details. For entries use browse_items; for Wiki categories use list_wiki_category_members. - view=status reports configuration date/age, not price freshness. - view=categories lists all 44 built-in IDs; duplicate names identify separate groups. - view=category_counts requires category 0-43, e.g. 24 for high-level melee weapons. Category 0 is one Miscellaneous group, not an all-groups sentinel. The response counts entries by starting letter (# means numbers), not stock or offers. category is rejected outside category_counts; it cannot filter the full list. categories needs no network; other views make one uncached Jagex read. No credentials required. HTTP defaults to 60 requests/IP/minute; honor 429 Retry-After.

Discovered
get_item_details

Read current RS3 catalogue records or compare candidate snapshots. Resolve names with lookup_item; use get_price_series for dated history and estimate_flip for profit calculations. - records reads Jagex identity, examine/type/membership, icon URLs and guide prices. itemId=4151 means Abyssal whip. Arrays always return results[] in caller order, including errors at failed IDs, even for one entry. - includeLiveData adds reported trades and numeric Wiki facts without replacing guide fields. Trades are not executable offers; buy limits are not remaining quota. - comparison reads compact Weirdgloop daily price/volume snapshots for itemIds in caller order. Missing metrics remain absent and unresolved IDs become error rows. It does not rank the whole GE. - Record batches retain successful rows and error if all fail. At most two reads run concurrently; 429 stops queued reads. Invalid selectors fail before fetching. - Guide/comparison reads are uncached and lag activity. Trades cache for 30 seconds and facts for 10 minutes; cache hits preserve fetchedAt. No credentials are required. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
get_player_quests

Read a public RS3 character's complete RuneMetrics quest journal. Use recommend_next_activity for paid advice, get_player_stats for levels, or get_wiki_entity_facts with kind=quest for one quest's metadata. - username is the character's display name, not a Jagex login, account ID or quest name. No signed-in-player default exists; ask which character when unknown. - Send {"username":"A B"}, not {"username":"A%20B"}. The server trims outer whitespace and encodes the name once. The returned username echoes that input; no alias or canonical-identity lookup is performed. - No gameMode or quest/status selector applies. Filter the complete returned journal locally; there is no pagination. A quest's members flag does not establish current account membership. - Invalid names, private/unavailable or malformed journals return isError/text, not an empty journal or guessed progress. - Sends the display name to Jagex RuneMetrics for one fresh uncached read, with a 12-second default deadline and no automatic retry. No Jev, API key, login or game changes. HTTP shares 60 requests/IP/minute by default; honor Retry-After on 429.

Discovered
get_player_stats

Read an RS3 player's published hiscores ranks, levels and experience, including Overall. Use search_wiki for training guides rather than player data. - username is the literal in-game display name, including spaces; the server URL-encodes it. gameMode chooses a separate leaderboard, not a filter on normal stats. Omit it for normal mode. - Normal, ironman and hardcore boards are supported. A player absent from the selected board returns a 404 tool error; the tool never substitutes another board. Unranked skills use rank Unranked; unavailable level/XP becomes 0. - No login, account changes or local cache. HTTP shares a default 60 requests/IP/minute budget; honor Retry-After on 429.

Discovered
get_price_series

Read dated RS3 price history for one known GE item. Resolve names with lookup_item; use get_item_details for current records or candidate comparisons. - itemId=4151 means Abyssal whip, not a quantity. For observations, choose Jagex for provider averages over roughly 180 days or Weirdgloop for daily samples with reported volume over roughly 90 days. - from/to include whole UTC days. Equal bounds cover that day; omitted bounds retain all available history. Requested dates cannot extend retention. - statistics computes min/max, unweighted mean and start-to-end change from a fixed 90-day Weirdgloop fetch. For example, days=7 takes the last seven usable samples even if missing dates make them span more than a week. - Each call returns its full retained series or statistics in one bounded response; there is no cursor or next page. Unavailable observation dates return empty data; unusable statistics history returns an error. Invalid bounds fail before fetching. - Reads are uncached and require no credentials. Provider errors surface without switching sources or retrying automatically. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
get_wiki_drop_table

Read indexed RS3 drop items, quantities and listed rarities. Use get_wiki_entity_facts for combat stats or lookup_item for GE identities. - page resolves redirects; put #variant only in variant. A supplied variant must match a returned sourceReference; omission includes all variants. - offset counts source rows from zero, including malformed rows that are skipped. Follow nextOffset even after a short usable result. limit bounds rows, not kills/rolls; edits or tied names can shift boundaries. - Missing/non-article sources error; unindexed articles yield empty rows. Unknown facts stay null. - Listed probabilities are per row. Rolls and omitted conditions can change actual chances; consult the returned source link when hasOmittedAnnotations is true. Each call reads article identity and the dropsline index without returning article prose/images. Uncached reads may lag and require no credentials. HTTP defaults to 60 requests/IP/minute; honor 429 Retry-After.

Discovered
get_wiki_entity_facts

Read RS3 monster combat stats or quest metadata. Use search_wiki for titles, get_wiki_page_content for reviewed text/links, or get_item_details for GE records. - page is a literal main-article title with spaces; the server URL-encodes it. URLs, #variants, |separators and Category: titles are rejected. - kind chooses a dataset, not a name filter: quest includes miniquests, subquests and sagas; a title in the wrong dataset errors. - limit expands a prefix instead of advancing a page: raising 5 to 10 repeats the first five variants before adding more. Select variants by returned references. If truncated, increase limit or visit the source link; there is no cursor. - Missing fields are omitted instead of zero-filled. Article prose/images are excluded, and the uncached index can lag edits. - No credentials are required. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
get_wiki_page_content

Get reviewed Wiki article text, or a source reference when text is unavailable. Use search_wiki for titles; get_item_details for prices. - page takes one unencoded title; pages takes 1-10, e.g. ["Abyssal whip"]. URLs, #fragments and |separators reject the call before fetching. - For page, read the flat response. For pages, even one title, check results[i].error before reading results[i].data. Rows preserve order and duplicates; redirects resolve. - The server sets output contentStatus: reviewed_extract includes approved, unchanged text and attribution; successful link_only has null text, url and reason. Inputs cannot approve content. - In valid batches, missing-page/API errors are per row; the call fails only if all rows fail. At most two requests run concurrently; 429 stops queued work. - No authentication is required and responses are not cached here. Shared HTTP budget: 60 requests/IP/minute. Honor Retry-After.

Discovered
list_wiki_category_members

List direct articles, subcategories and files in an RS3 Wiki category. Use search_wiki to discover category titles; get_ge_info (view=categories) lists GE groups instead. category is a literal Category: title, not a GE number. limit bounds this page of members, not recursion depth. Supply nextCursor unchanged with the same category to continue. You may change limit between pages, but changing categories invalidates the cursor. There is no recursive expansion or snapshot lock, so edits can affect later pages. An empty set can mean an empty or missing category. Results contain metadata links, never article bodies or images. Reads are uncached and need no credentials. HTTP defaults to 60 requests/IP/minute; honor 429 Retry-After.

Discovered
lookup_item

Resolve tradeable RS3 names to GE IDs. Use search_wiki for quests, NPCs or guides; non-GE items cannot match here. - query="Abyssal whip" tries an exact match; "abyssal" discovers alternatives. An exact match ends the search regardless of limit. - limit also bounds Wiki candidates checked against Weirdgloop. Non-GE candidates are discarded, so results can be fewer; increasing limit widens that screening. Values outside 1–10 error before fetching rather than being clamped. - Pass a chosen ID to get_item_details for current records, get_price_series for history, or estimate_flip for profit math. No matches is a tool error; optional price/volume fields may be absent and samples lag activity. - Reads are uncached and need no credentials. HTTP defaults to 60 requests/IP/minute; wait for Retry-After after 429.

Discovered
recommend_next_activity

Plan the next RS3 activity, training milestone or unlock prerequisite. Use get_player_quests for progress, get_player_stats for levels, get_wiki_entity_facts for one quest's facts, or search_wiki for references. - Routing: unlock overrides goalType, otherwise goalType overrides inference. targetSkill sets focus, not the planner. - Example: {"goal":"Train Mining","goalType":"skill_training","targetSkill":"Mining","targetLevel":70,"context":{"skills":{"Mining":52}}}. Without a target or goal-specified level, 52 defaults to 55. - Account: caller levels override hiscores; fresh journals override completion claims. Quest comparison needs a public context.username. Membership, gear and bank balances are not fetched. - Setup/privacy: operator RUNESCAPE_RECOMMENDATIONS_ENABLED=true and TYPESAFE_API_KEY. Goal/account context goes to TypeSafe; display-name lookups go to Jagex. - Cost: at most 24 paid Jev calls for quests, three otherwise, including routing. Repeated calls can incur fresh charges. No automatic paid retries; rounds completed before an error may already be billed. - Timing/errors: 55 seconds for routing/non-quest work, plus five minutes for quest comparison. Invalid input/configuration or fatal provider failures return isError/text. HTTP shares 60 requests/IP/minute by default; honor Retry-After on 429. - Freshness: public Wiki reads cache five minutes or six hours by planner. Player journals and decisions are not cached; no game account changes. General activity requires reviewed extracts; withheld text can yield no_match. - Outcomes: needs_context may still include a conditional recommendation; use missingContext to clarify it. no_match means no supported option; goal_met refers to the selected target. Communicate warnings and source conditions.

Discovered
search_wiki

Find RS3 Wiki sources for items, NPCs/monsters, quests and guides. Use get_wiki_page_content for reviewed text/page references, lookup_item for GE identities or get_item_details for catalogue records. query accepts raw Wiki syntax; the server URL-encodes it. "Abyssal demon" "drop" requires both phrases; intitle:"Cook's Assistant" focuses titles. prefix:Category:Weapons selects Wiki categories instead of articles. limit caps one relevance-ranked set, not an offset. No continuation cursor exists: refine the query for different matches. No matches returns an empty set; invalid queries or API failures return errors. Public reads require no credentials and are uncached. The shared HTTP budget defaults to 60 requests/IP/minute; honor 429 Retry-After.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected871 ms14
Connected894 ms14