# rust.wiki (remote · rust.wiki)

Live data for the game Rust: skin prices and history, items, item store, loot tables, servers.

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

## Components

- remote · `rust.wiki`: 80/100 (this document), [markdown](https://verifymcp.io/servers/wiki-rust-rust-wiki/rust.md), [page](https://verifymcp.io/servers/wiki-rust-rust-wiki/rust)

## Channel facts

- Endpoint: `https://rust.wiki/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

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

Scored 2026-11-04.

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

## Install

### How do I install the rust.wiki MCP server?

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

### Claude

```bash
claude mcp add --transport http wiki-rust-rust-wiki 'https://rust.wiki/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "wiki-rust-rust-wiki": {
      "url": "https://rust.wiki/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "wiki-rust-rust-wiki": {
      "type": "http",
      "url": "https://rust.wiki/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.wiki-rust-rust-wiki]
url = "https://rust.wiki/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wiki-rust-rust-wiki": {
      "type": "remote",
      "url": "https://rust.wiki/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add wiki-rust-rust-wiki --url 'https://rust.wiki/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  wiki-rust-rust-wiki:
    url: "https://rust.wiki/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "wiki-rust-rust-wiki": {
      "Transport": "http",
      "Url": "https://rust.wiki/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add wiki-rust-rust-wiki -t streamable-http -u 'https://rust.wiki/mcp'
```

### Other

```json
{
  "mcpServers": {
    "wiki-rust-rust-wiki": {
      "type": "http",
      "url": "https://rust.wiki/mcp"
    }
  }
}
```

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

## Changelog

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

### 2026-11-04 (score 80, +1)

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

### 2026-11-02 (score 79, +1)

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

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

- [functional] New tool “get_skin_marketplace_history”

### 2026-10-29 (score 77, +1)

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

### 2026-10-27 (score 76, +1)

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

### 2026-10-26 (score 75, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_inventory” rewrote its description, which is the text the model reads
- [security] Tool “list_inventory_snapshots” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 8550 → 11992
- [functional improvement] Stability: unverified → 0.03
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “find_server”
- [functional] New prompt “item_store”
- [functional] New prompt “price_check”
- [functional] New prompt “raid_cost”
- [functional] New prompt “value_inventory”
- [functional] New tool “calculate_craft_cost”
- [functional] New tool “calculate_raid_cost”
- [functional] New tool “calculate_recycle_yield”
- [functional] New tool “calculate_upkeep”
- [functional] New tool “compare_market”
- [functional] New tool “genetics_best_layout”
- [functional] New tool “genetics_predict”
- [functional] New tool “get_inventory_valuation”
- [functional] New tool “get_inventory_value_history”
- [functional] New tool “get_market_index”
- [functional] New tool “get_player_stats”
- [functional] New tool “get_server_player_history”
- [functional] New tool “get_server_stats”
- [functional] New tool “get_skin_orderbook”
- [functional] New tool “get_twitch_drops”
- [functional] New tool “resolve_steam_profile”
- [functional] New tool “search_guides”

### 2026-10-25 (score 73)

First indexed and scored.

## MCP tools (57)

### `search_items` (~156 tokens)

Item name / shortname typeahead

Item name / shortname typeahead. Up to 25 live items matching `q`, best match first: a case-insensitive substring match on the display
name OR the shortname, plus trigram similarity on the display name so typos still resolve (`asault` finds
the Assault Rifle) - the same ILIKE + similarity search the site's item pickers use. Each result is
\`{shortname, display_name, category, icon_url}`; use the shortname with `/items/{shortname}`. For filtered,
paginated results use `/items?search=` instead. Cached for 5 minutes per query.

Input parameters:

- `q` (string, required): Part of an item's display name or shortname (2+ characters).

### `browse_items` (~216 tokens)

Browse or search the item catalogue

Browse or search the item catalogue. One page of live items (seasonal, obsolete and unreleased items are excluded from browsing but still
resolve by shortname). Each result carries `shortname`, `display_name`, `category`, `icon_url` and
\`is_craftable`; fetch `/items/{shortname}` for everything else. Same ordering and cache as the /items page
on the site (15 minutes).

Input parameters:

- `category` (string): Restrict to one of the 14 wiki.facepunch.com item categories.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Fuzzy name search: substring match plus trigram similarity, so a typo like `asault` still finds the Assault Rifle. Results are ranked by similarity unless `sort=category`.
- `sort` (string): `name` = alphabetical (similarity-ranked while searching); `category` = grouped by category, then name.

### `get_item` (~224 tokens)

Full item detail bundle

Full item detail bundle. Everything the item page shows, in one response: `item` (name, description, category, icon, stack size,
despawn seconds, craftable flag), `recipe` (components with quantities), `blueprint_costs` (unlock source,
scrap cost, workbench tier), `recycle` (yields per recycler type with chance), `repair`, `loot_sources`
(every crate/NPC/barrel that drops it, with `chance_pct` and `amount`, highest chance first), `used_in`
(items this one is an ingredient of), `skins` (the first 24 skins by price, each with `price` and
\`store_price` in USD cents, `subscriptions` and `released`), `skins_total` and `similar` (six items from the
same category). Page through all skins with `/items/{shortname}/skins`. Cached for 15 minutes.

Input parameters:

- `shortname` (string, required): The item's shortname, e.g. `rifle.ak` or `metal.fragments`.

### `get_item_skins` (~208 tokens)

All skins for an item, priced

All skins for an item, priced. Every skin for one base item, most expensive first (unpriced skins last, then by name) - the same list
and order as the Skins tab on the item page. Each skin carries `itemdefid`, `name`, `icon_url`,
\`market_hash_name`, `item_collection`, `workshopid`, `price` (canonical wiki price, USD cents, null when
nothing is listed), `store_price` (its original Rust item-store price, USD cents), `store_change_pct`,
\`subscriptions` (Workshop subscriber count), `released` and the tradable/marketable/banned flags. Prices
refresh about every 12 minutes; this list is cached for 15.

Input parameters:

- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `shortname` (string, required): The item's shortname, e.g. `rifle.ak`.

### `search_skins` (~103 tokens)

Skin name typeahead

Skin name typeahead. Up to 10 skins whose name matches `q`, best match first (the same ILIKE + trigram search the site's search
boxes use). Each result is `{itemdefid, name, icon_url}`; use the `itemdefid` with the other skin endpoints.
For filtered, paginated results use GET /skins with `search=` instead.

Input parameters:

- `q` (string, required): Part of a skin name (2+ characters).

### `browse_skins` (~548 tokens)

Browse skins with the site's filters and sorts

Browse skins with the site's filters and sorts. One page of skin cards exactly as the /skins browser shows them: `itemdefid`, `name`, icons, `category`,
\`item_collection`, `market_hash_name`, flags (`is_twitch_drop`, `is_limited_time`, `marketable`, `tradable`,
\`is_permanent`...), `price` (canonical wiki price in cents, null when Steam has no listing), `subscriptions`
(Workshop subscribers, the site's supply proxy), `store_price` (the original item-store price in cents),
\`store_change_pct` (market price vs store price) and `released` (date accepted into the store). Filters combine
with AND. `total` is the filtered count; results are cached for 120 seconds per filter combination.

Input parameters:

- `breakable` (boolean): Only skins with a recycle yield (`recycle_hint`).
- `category` (string): Skin category.
- `collection` (string): Exact collection name, e.g. `Forest Raiders` (see /skins/collections).
- `color` (string): Dominant icon colour bucket; matches any of a skin's up to five dominant colours.
- `commodity` (boolean): Only Steam commodity items.
- `creator` (string): Workshop creator: a 17-digit SteamID64 for an exact match, or part of the creator's display name.
- `glows` (boolean): Only skins with glow-in-the-dark elements.
- `hide_drops` (boolean): Hide loot-crate drops, publisher drops and Twitch drops (what the site calls DLCs and drops).
- `item` (string): Base item shortname, e.g. `rifle.ak` - every skin of that one item.
- `limited_time` (boolean): Only limited-time store items.
- `marketable` (boolean): Only Steam-marketable skins.
- `min_subs` (string): Minimum Steam Workshop subscriber count of the skin's original submission.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `permanent` (boolean): Only permanent store items.
- `released` (string): Year the skin was accepted into the item store.
- `search` (string): Fuzzy name search (trigram similarity; with sort=name results are relevance-ordered). Searches are never cached server-side.
- `sort` (string): Ordering. `popularity` and `supply_asc` use Workshop subscribers; `trending` is the 7-day price change; `marketcap_desc` is price x subscribers.
- `tradable` (boolean): Only tradable skins.

### `get_skin` (~425 tokens)

Full skin detail: price, order book, history, cross-market prices

Full skin detail: price, order book, history, cross-market prices. Everything the skin's wiki page shows, as data. `skin` is the full catalogue record (creator, workshop
title and dates, collection, flags, store price and availability, crafting components, glow/cutout ratios,
colours). `price` is the canonical wiki price in cents and `price_source` says which side of the book it came
from. `orderbook` is Steam's live book: lowest sell order, highest buy order, order counts, the `buy_orders`
and `sell_orders` depth ladders (`{price, quantity}`, best first) and `fetched_at`; the headline price
refreshes more often than the ladders, so they can briefly trail it. `steam_history` is the last year of
Steam's own sale history (`recorded_at`, median sale `price`, `volume`; `sale_basis` false means Steam has no
sale series and the points are our ask-price readings instead) - wider ranges via /skins/{itemdefid}/history.
\`market_stats` is the page's Community & Market Stats card: an archived SCMM snapshot (frozen September 2026)
of `supply_total`/`supply_total_estimated`/`supply_total_owners_estimated`, Workshop `subscriptions_current`/
\`subscriptions_lifetime`, `favourited_current`, `views`, `votes_up`/`votes_down`, `market_24hr_value`,
\`market_168hr_value`, `market_last_30d_sales`, `market_rank_index`, `market_liquidity_score`, the market
high/low with their dates, `change_7d_percent`/`change_30d_percent`/`change_90d_percent` and `ath_percent`;
null for skins SCMM never covered. `cros

Input parameters:

- `itemdefid` (integer, required): The skin's Steam item definition id (also its rust.wiki URL: /skin/{itemdefid}).

### `get_skin_price` (~280 tokens)

Live price, order book depth, extremes and 7d/30d change for one skin

Live price, order book depth, extremes and 7d/30d change for one skin. The compact price card the rust.wiki Discord bot's /price command shows, as data. All prices are integer USD
cents: `price_cents` (the canonical wiki price - Steam's lowest sell order, or the highest buy order when
nothing is listed), `ask_cents` and `bid_cents` (the two sides of Steam's book), `sell_orders`/`buy_orders`
(how many orders stand on each side), `sell_ladder` and `buy_ladder` (the top five price levels on each side,
best first, as `{price, quantity}`), `ath_cents`/`atl_cents` (the skin's all-time high and low from Steam's
sale history), `change_7d`/`change_30d` (percent move of today's price against our closest Steam price reading
7 and 30 days back; null without enough history) and `sales_30d` (units sold on Steam in the last 30 days,
null when none). Plus `name`, `icon_url`, `market_hash_name` and `category`. Cached for 5 minutes.

Input parameters:

- `itemdefid` (integer, required): The skin's item definition id.

### `get_skin_price_history` (~218 tokens)

Steam sale history for one skin

Steam sale history for one skin. Steam Community Market's own sale history for the skin, scraped from Steam's listing page: `points` of
\`{recorded_at, price, volume}` where `price` is Steam's median sale price for that interval in cents and
\`volume` the number of sales. Steam reports roughly hourly points for the recent month and daily beyond; ranges
of a year or more are condensed to one point per day (median price, summed volume). Empty when Steam has no
sale series for the item (unmarketable skins). History goes back to the skin's first sale, as far as 2015.
Refreshed continuously; the full series is cached for an hour.

Input parameters:

- `itemdefid` (integer, required): The skin's item definition id.
- `range` (string): How far back: `1d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `5y` or `all`.

### `list_skin_collections` (~200 tokens)

Skin collections with counts and values

Skin collections with counts and values. Every skin collection (about 750, e.g. `Forest Raiders`, `Abyss`): `name`, `count` (members), `total_value`
and `avg_value` (cents, over the priced members only; null when nothing in it is priced) and `icons`, one
\`{url, name}` per member skin. The collection's URL slug is its lower-cased name with non-alphanumerics
collapsed to `-` (`Forest Raiders` -> `forest-raiders`), which is what GET /skins/collections/{slug} takes.
Cached for 30 minutes.

Input parameters:

- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `sort` (string): `value_*` sorts by the summed wiki price of the collection's skins, `count_*` by member count.

### `get_skin_collection` (~133 tokens)

One collection with all its skins

One collection with all its skins. The collection's `name`, `slug`, `count`, `total_value` and `avg_value` (cents), `released` (the earliest
member's store-acceptance date) and `skins`: every member as `{itemdefid, name, icon_url, rarity, category,
price}` ordered by price, highest first. The collection's value-over-time series is GET
/market/collection-value. Cached for 30 minutes.

Input parameters:

- `slug` (string, required): Collection slug (lower-case, hyphenated name), e.g. `forest-raiders`.

### `find_skin_deals` (~414 tokens)

Executable buy-on-marketplace, sell-on-Steam flips

Executable buy-on-marketplace, sell-on-Steam flips. Every skin that can be bought on a third-party marketplace for less than it nets on Steam Community Market
right now, as rust.wiki/skins/deals computes it. Per deal: `buy_market` and `buy_price` (the cheapest in-stock
listing we poll, cents), `sell_url` (the Steam listing page), the two Steam references `bid_gross`/`bid_net`
(highest buy order, and what you actually receive after Steam's 15% fee) and `ask_gross`/`ask_net` (lowest
sell order, same), then for the chosen `steam_ref`: `sell_price` (the net proceeds), `sell_gross`,
\`spread_abs` (cents) and `spread_pct`. Only rows profitable under the chosen reference are returned. A stale
buy order above a fresher ask is capped at the ask. Filters combine with AND; `search` matches the skin name
case-insensitively. Marketplace links are not included. Recomputed every ~5 minutes from the marketplace
poll.

Input parameters:

- `category` (string): Only skins of this category.
- `marketplace` (array): Only deals whose cheapest listing is on one of these marketplaces (repeat the parameter).
- `max_price` (integer): Maximum buy price in cents.
- `min_price` (integer): Minimum buy price in cents.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Case-insensitive substring of the skin name (or Steam market name).
- `sort` (string): Best `pct` (spread as % of buy price) or `abs` (spread in cents) first.
- `steam_ref` (string): Steam exit price: `buy` = sell instantly into the highest buy order (default), `sell` = list just under the lowest sell order.

### `get_market_cap` (~146 tokens)

Market cap of the Rust skin market

Market cap of the Rust skin market. The rust.wiki Market Cap page as data: `total_value` (cents), `skin_count`, `unit_count`, `by_category`
(`{category, value}`) and `top`, every skin ranked by value with `{itemdefid, name, icon_url, price, amount,
value}`. Supply is not something Steam exposes, so `amount` is the skin's Steam Workshop subscriber count -
a stated approximation (subscribing is not owning) - and `value` is price x amount. Only marketable skins with
a live Steam price and a linked Workshop submission are included. Cached for 15 minutes.

### `get_market_movers` (~158 tokens)

Stonking, crashing and most-anticipated skins

Stonking, crashing and most-anticipated skins. The rust.wiki Insights page: `stonking` - the 10 skins trading closest to (or above) their all-time high,
\`crashing` - the 10 closest to their all-time low (each `{itemdefid, name, icon_url, price, reference_price}`,
cents; the reference is that skin's own all-time high or low from Steam's multi-year history, skins with under
30 history points excluded), and `anticipated` - the 50 marketable skins with the most Steam Workshop
subscribers (`{itemdefid, name, icon_url, subscriptions}`). Refreshed with each price-history run, about every
6 hours.

### `get_item_store` (~262 tokens)

The current Rust item store

The current Rust item store. What is purchasable in Rust's item store right now, in the three sections the wiki shows: `limited_time`
(this week's rotation, most Workshop subscribers first), `general` (the permanent catalogue) and `dlc_packs`
(bundles, by name). Each item carries `itemdefid`, `name`, `icon_url`, `category`, `store_price` (cents),
\`market_price` (its Steam Community Market price in cents, null when unlisted), `rarity`, `item_collection`,
\`creator_name`/`creator_avatar_url`, `subscriptions`, `est_supply` with `est_supply_source` (`workshop`
subscribers for brand-new items, the market estimate otherwise), `base_item_name` and the usual flags. Also
\`recent_rotations` (the last six, newest first, `is_current` marks the open one), `active_rotation_id` and
\`next_rotation_at` (the open rotation's start + 7 days; rotations land on Thursdays). Steam's own purchase URL
for any item is `https://store.steampowered.com/buyitem/252490/{itemdefid}/{quantity}`. Cached 30 minutes.

### `get_item_store_history` (~219 tokens)

Past item-store rotations

Past item-store rotations. Every weekly rotation, newest first (the open one included): `id` (the rotation slug, `YYYY-MM-DD-HHMM`, or
\`General` for the permanent catalogue), `name` (Facepunch's label when it had one, usually null), `start`,
\`end` (null while current), `itemdefid_count` and `icons` - every skin in it as `{url, name}`, DLC packs
excluded. With `search`, only the rotations that sold a matching skin are returned (same shape, newest first),
which answers "when was X in the store?". Full item lists via GET /store/rotations/{rotation_id}. Cached for an
hour; searches are computed live.

Input parameters:

- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Only rotations that contained a skin whose name matches this (case-insensitive substring), e.g. `Tempered`.

### `get_store_rotation` (~156 tokens)

One rotation's full item list

One rotation's full item list. One rotation as the wiki's /store/rotation page shows it: `rotation` (`id`, `name`, `start`, `end`,
\`itemdefid_count` - the number of items that still resolve in the catalogue) and its items split into
\`limited_time`, `general` and `dlc_packs`, each item in the same shape as GET /store, including today's
\`market_price` and `is_available_on_store` (a past rotation can still contain evergreen catalogue items).
Cached for an hour.

Input parameters:

- `rotation_id` (string, required): Rotation id from /store/history, e.g. `2017-07-13-2006`, or `General`.

### `search_workshop` (~286 tokens)

Browse or search Workshop submissions

Browse or search Workshop submissions. One page of submissions. Each carries `workshopid` (the Steam published-file id), `title`,
\`author_steamid64`, `preview_image_url`, `submitted_at` (UTC ISO-8601, may be null), `accepted` and
\`accepted_itemdefid` (the in-game item definition id when Facepunch accepted it - use it with
\`/skins/{itemdefid}`), `target_item_tag`, `subscriptions` and `vote_score` (Steam's 0-1 score; both null
when Steam has not reported them). Same filters, ordering and cache as the /workshop page.

Input parameters:

- `accepted` (string): `yes` = only submissions Facepunch accepted into the game; `no` = only ones it has not.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Case-insensitive substring match on the submission title.
- `sort` (string): `newest` = most recently submitted first; `popular` = most subscribers first.
- `target` (string): Only submissions for this target item, exactly as the Workshop tags it (e.g. `AK47`, `Garage Door`); `/workshop/targets` lists every value.

### `list_monuments` (~146 tokens)

All 60 fixed monuments

All 60 fixed monuments. Every fixed-location monument, alphabetical, in one response (no pagination - the set is 60 and static).
Each carries `slug`, `name`, `tier` (1-3, null for safe zones and minor monuments), `is_safezone`,
\`has_radiation` and `radiation_level`, `recyclers` (count on site), `has_tunnel_entrance` (underground rail),
\`has_chinook_drop_zone`, `allows_patrol_heli_crash`, `no_build_area_sqm` and `icon_url`. Moving monuments
(Cargo Ship) are not included. Cached for one hour.

### `get_monument` (~94 tokens)

One monument with its loot sources

One monument with its loot sources. The same fields as `/monuments` for one monument plus `loot_sources`: every crate/NPC loot table that
spawns at it (`id`, `name`, `drop_count`), alphabetical - fetch each with `/loot-tables/{id}`. Cached for
one hour.

Input parameters:

- `slug` (string, required): Monument slug from `/monuments`, e.g. `airfield`.

### `list_loot_sources` (~134 tokens)

Every loot source (crates, NPCs, barrels)

Every loot source (crates, NPCs, barrels). One page of loot sources, alphabetical. Each carries `id`, `name` (Facepunch's own loot-table name, e.g.
\`Elite Tier Crate`), `drop_count` (how many distinct items it can drop) and `icons` (the icons of its four
likeliest drops). Fetch the full drop table with `/loot-tables/{id}`. Cached for 30 minutes.

Input parameters:

- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).

### `get_loot_table` (~134 tokens)

One loot table with every drop

One loot table with every drop. The loot source's `id` and `name` plus `drops`, highest chance first: for each item `shortname`,
\`display_name`, `icon_url`, `chance_pct` (0-100), `amount_min`/`amount_max` and, for items that spawn
damaged, `condition_min_pct`/`condition_max_pct`. Scraped from wiki.facepunch.com; cached for 30 minutes.

Input parameters:

- `source_id` (integer, required): Loot source id from `/loot-tables`, `/monuments/{slug}` or an item's `loot_sources`.

### `get_cctv_codes` (~107 tokens)

CCTV camera codes by monument

CCTV camera codes by monument. The 12 monuments with working CCTV cameras and their Computer Station identifiers (60 codes). `codes`
are the literal in-game console codes; when `randomized` is true the trailing `****` is a per-wipe random
4-digit suffix posted near the camera in-game, not a fixed code. `slug` links to `/monuments/{slug}` (null for
Cargo Ship, which is a moving monument). Fixed reference data.

### `search_commands` (~178 tokens)

Console and server commands

Console and server commands. One page of Rust console/server commands, alphabetical. Each carries `command`, `syntax`, `description`,
\`category` (Rust's own ConVar namespace, e.g. `server`, `gather`), `command_type` (`command` or `variable`),
\`default_value` (variables only) and `permission_required` (null when any player can run it). Cached for
30 minutes.

Input parameters:

- `admin_only` (boolean): `true` = only commands that need admin/moderator permission.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Case-insensitive substring match on the command name, its description OR its category (so `workbench` finds every workbench ConVar).

### `search_world_entities` (~148 tokens)

World entities: animals, NPCs, resource nodes

World entities: animals, NPCs, resource nodes. One page of world entities (anything not tied to one monument), alphabetical. Each carries `slug`,
\`display_name`, `is_npc`, `npc_hp` (null for resources) and `icon_url`. Cached for one hour.

Input parameters:

- `kind` (string): `npc` = anything with hit points (animals, scientists, bosses, vehicles); `resource` = nodes, trees, barrels and other harvestables.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Case-insensitive substring match on the display name.

### `get_world_entity` (~139 tokens)

One world entity with its loot

One world entity with its loot. The entity's `slug`, `display_name`, `is_npc`, `npc_hp`, `icon_url` and `loot_source_id` (null when it
drops nothing), plus `drops` - its five likeliest drops (`shortname`, `display_name`, `icon_url`,
\`chance_pct`, `amount_min`, `amount_max`) - and `drop_count`, the full number of distinct drops. The complete
table is `/loot-tables/{loot_source_id}`. Cached for one hour.

Input parameters:

- `slug` (string, required): Entity slug from `/world`, e.g. `bear`.

### `get_building_piece` (~190 tokens)

One building piece: costs, durability, siblings

One building piece: costs, durability, siblings. The piece's `slug`, `display_name`, `grade`, `health` and `decay_hours`, plus `costs` (`build`, `repair`
and `upkeep` lists of `item_name`, `amount` or `min_amount`/`max_amount`, with `shortname`/`icon_url` when
the material maps to a catalogue item), `durability` (up to ten entries each for `explosive`, `melee` and
\`bullet` damage: `item_name`, `seconds_taken` to destroy, `required_items` = how many of that weapon/explosive)
and `siblings` - the same piece at every other grade, Twig to Armored. Cached for one hour.

Input parameters:

- `slug` (string, required): Piece slug from `/building`, e.g. `stone-wall`.

### `get_raid_costs` (~359 tokens)

Raid cost table: explosives and sulfur per building piece

Raid cost table: explosives and sulfur per building piece. The dataset behind the raid calculator. `explosives` lists every explosive the building durability data
covers: `shortname`, `name`, `icon_url`, `group` (`staples`, `other` or `siege`), `staple` (true for rockets,
C4, satchel charges, explosive 5.56 ammo and beancans - the page's default set), `sulfur_per_unit` and
\`raw_cost_per_unit` (the crafting recipe resolved down to raw resources such as sulfur, charcoal, metal
fragments and low grade fuel, per single unit; both null for loot-only explosives like MLRS rockets), `batch`
(units one craft makes: explosive ammo 2, mortar shells 2) and `recipe_source` (`wiki` = the wiki's own
crafting data, `fallback` = Rust's standard recipe where that data has none yet, e.g. rockets). `targets` is
every building piece with explosive data (`slug`, `name`, `grade`, `health`), each with `costs` - for every
explosive that can damage it, `required` (how many destroy one piece), `damage_per_unit` and `sulfur` (null
for loot-only) - and `cheapest_staple`, the single staple explosive that destroys it for the least sulfur.
Damage from different explosives adds up, so a cheaper mix can be computed from `damage_per_unit`. Doors and
deployables are not covered yet. Cached for 24 hours.

Input parameters:

- `grade` (string): Restrict `targets` to one building grade.

### `get_upkeep_rules` (~178 tokens)

Upkeep decay brackets and decay times

Upkeep decay brackets and decay times. Rust's dedicated-server upkeep defaults (the `decay.bracket_*` and `decay.duration_*` ConVars, as most
servers run them). `brackets` are applied in order to a base's block count: the first 15 blocks cost 10% of
their build cost per day, the next 35 cost 15%, the next 75 cost 20%, and every block beyond 125 costs 33.3%
(`blocks` null = unbounded); a base's blended daily rate is the block-weighted average of the brackets it
fills, paid in the resources each piece was built from. `decay_hours` is how long an unmaintained piece of
each grade takes to decay completely. Fixed constants, no computation happens server-side.

### `get_rust_updates` (~149 tokens)

Facepunch's Rust updates and devblogs

Facepunch's Rust updates and devblogs. Every post from rust.facepunch.com/news, newest first. Each carries `slug`, `title`, `summary`,
\`category` (`devblog`, `news`, `update`, ...), `published_date` (UTC date), `thumbnail_url`, `url` (the
official post, or this network's own write-up when `has_blog_post` is true) and `has_blog_post`. Polled every
few minutes; the first page is refreshed the moment a new post is found.

Input parameters:

- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).

### `search_servers` (~719 tokens)

Browse, filter and search the server list

Browse, filter and search the server list. One page of servers with the same filters, ordering and five-minute cache as the servers.rustprofit.com
list and its hub pages (/country/de, /vanilla, /solo, /gather/2x ...). Each result is the full public server
record: identity and connect details (`ip`, `game_port`, `query_port`, `connect` as a `steam://` URI), `map`,
\`world_seed`, `world_size`, `country`/`country_name`, live `current_players`/`max_players`/`queued_players`,
the `kind` (official/modded/vanilla) and `is_*` flags, `password_protected`, `vac_enabled`, `gather_rate` with
its `gather_bucket`, `group_limit` with its `group` label, `tags`, owner-supplied `description` (first 500
characters), `banner_url`, `website_url`, `discord_url`, `first_seen_at`/`last_seen_at`/`last_polled_at`, the
aggregates `votes`, `rating` (1-5 average, null when unrated) and `last_wipe_at`, and the server's page `url`
plus embeddable `widget_url`/`badge_url`. Ties in every sort are broken by `id` so pages never overlap.

Input parameters:

- `biome` (string): Only servers whose generated map preview is mostly this biome (its percentage is the highest of the five).
- `country` (string): ISO 3166-1 alpha-2 country the server is hosted in (GeoIP of its address); `/servers/countries` lists the values in use.
- `gather` (string): Gather-rate bucket parsed from the server name: `2x` (2-2.99), `3x` (3-4.99), `5x` (5-9.99) or `10x` (10 and above). Servers with no `Nx` in their name never match.
- `group` (string): Team-size cap: `solo` (1), `duo` (2) or `trio` (3). Only servers whose cap is known match.
- `kind` (string): `vanilla` = not modded; `modded` = reports a modded flag over A2S; `official` = a Facepunch-run public server (by name convention).
- `min_players` (integer): Only servers with at least this many players online right now.
- `min_rating` (number): Only servers whose average community rating (1-5) is at least this.
- `monument` (string): Only servers whose current map (when a preview has been generated) contains this monument type, exactly as `/servers/monument-types` lists it.
- `online` (boolean): `true` (default) = only servers that were online at their last poll; `false` = only servers currently marked offline.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).
- `search` (string): Case-insensitive substring match on the server name.
- `sort` (string): `players` = most players online first (default); `votes` = most community votes; `rating` = highest average rating; `wiped` = most recently wiped; `name` = alphabetical.

### `get_top_servers` (~129 tokens)

Most populated servers right now

Most populated servers right now. The online servers with the most players right now - the same query behind the rust.wiki Discord bot's
\`/servers` command - as a compact list: `id`, `name`, `players`, `max_players`, `country` and the server's page
\`url`. Use `/servers?sort=players` for the full records. Cached for 60 seconds.

Input parameters:

- `country` (string): Restrict to one ISO 3166-1 alpha-2 country.
- `limit` (integer): How many servers to return (1-50).

### `get_recent_wipes` (~190 tokens)

Recently wiped servers

Recently wiped servers. Wipes detected across every online server in the window, newest first - the feed behind
servers.rustprofit.com/wipes. A wipe is detected when a server's `world_seed` or `world_size` changes between
two polls, or when the last-wipe time it advertises moves past our previous poll (for servers with A2S rules
disabled). Each entry has `detected_at`, the old and new seed/size, and the full server record. Expect
thousands of entries in the 24 hours after Rust's monthly forced wipe (first Thursday). Cached for five minutes.

Input parameters:

- `hours` (integer): Look-back window in hours (1-168). The site's /wipes page shows 24.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page (max 200).

### `get_server` (~263 tokens)

One server in full

One server in full. Everything the server's page shows except the live player names: the full public record (see `/servers`)
read fresh, plus `votes`, `rating` (1-5 average) and `rating_count`, the last ten detected `wipes` (newest
first, with the seed/size before and after), `last_wipe_at`, `avg_wipe_cycle_hours` across those wipes,
\`next_wipe_estimate_at` (last wipe + average cycle; a guess, not a schedule), `next_force_wipe_at` (Rust's
monthly forced wipe) and `map_preview` - null until a RustMaps render exists for the server's seed/size,
otherwise `image_url`, `thumbnail_url`, `total_monuments`, `monuments` (`{type, x, y}`), `monument_types`,
\`land_percentage` and the five `biome_*` percentages. Offline servers still resolve; unknown ids are 404.
Player-count history is at `/servers/{id}/history`. Aggregates are cached for five minutes.

Input parameters:

- `server_id` (integer, required): The server's numeric id (from `/servers`, or the number in its servers.rustprofit.com/server/{id} URL).

### `get_data_freshness` (~139 tokens)

When each dataset last changed and how often it refreshes

When each dataset last changed and how often it refreshes. The quota-saver: for every dataset the API serves, `updated_at` (the newest timestamp actually in the
table, UTC) and `refresh_seconds` (how often it can change), with the endpoints it feeds. Poll this cheap
endpoint and only re-fetch a heavy payload such as /market/prices or /servers when its dataset's `updated_at`
has moved; cache reference data (items, monuments, ...) locally since it only changes with Facepunch's monthly
patch. Timestamps are read live from the database and cached for 60 seconds.

### `get_skin_orderbook` (~200 tokens)

Full Steam order book for one skin

Full Steam order book for one skin. Steam Community Market's current order book for the skin, straight from our scraper's latest snapshot:
\`lowest_sell_order` and `highest_buy_order` (cents; null when that side is empty), `sell_order_count` and
\`buy_order_count`, the COMPLETE `sell_orders` and `buy_orders` depth ladders as `[{price, quantity}, ...]`
best price first (every level Steam publishes, not a top-N cut), and `fetched_at`, when the snapshot was taken.
The headline ask is refreshed by a market-wide sweep every ~12 minutes; the depth ladders come from the
per-item rotation (every few hours), so they can trail it slightly. 404 when the skin has no Steam order book
(unmarketable items). Not cached: this is one indexed row.

Input parameters:

- `itemdefid` (integer, required): The skin's item definition id.

### `get_skin_marketplace_history` (~296 tokens)

Price and sales history for one skin on each marketplace

Price and sales history for one skin on each marketplace. The skin's history on every marketplace rust.wiki tracks, Steam included. Per site in `sites`:
\`listing` is `[day, low, close, qty]` per UTC day - the lowest listing price we read that day (`low` the day's
lowest reading, `close` the last) and how many listings stood behind it; `sales` maps a period to
\`[day, volume, avg_price]` rows - `day` and `week` are real sales buckets (DMarket's own sales graph, `day` =
the bucket's first day), `r7` and `r30` a site's rolling 7- and 30-day sales figures as we read them that day
(Skinport, Rust.tm, CS.Deals and TradeRust only publish those). Prices are integer USD cents. Listing history
starts 2026-10-30; DMarket sales go back about a year (weekly) and two months (daily). Steam's own sale history
is GET /skins/{itemdefid}/history. Updated through the day (listings every ~5 minutes).

Input parameters:

- `itemdefid` (integer, required): The skin's item definition id.
- `range` (string): How far back: `1m`, `3m`, `6m`, `1y` or `all`.

### `get_market_index` (~471 tokens)

Skin market index series

Skin market index series. The rust.wiki Market Index: a basket of skins rebased to 100 at the start of the window, like a stock
index, built from Steam's daily price history (one point per day; weekly beyond two years). Returns `dates`
(ISO dates), `values` (index level, 100 = the window's first day), `constituent_count` (skins that had a price
at the baseline; baskets are capped at 300 constituents) and `label`. A skin whose history starts inside the
window joins from its first price. Cached for 24 hours per parameter combination (history only gains a point
every 6 hours); the full catalogue, every category and every collection are kept warm server-side.

Input parameters:

- `basket_type` (string): Which skins form the index: `all`, `high_value`/`low_value` (300 priciest/cheapest), `category`, `collection`, `color`, `item` (one base item's skins) or `custom` (your own list).
- `basket_value` (string): The category, collection name, colour, item shortname, or for `custom` a comma-separated list of up to 300 itemdefids. Ignored for all/high_value/low_value.
- `end_date` (string): Custom range end (YYYY-MM-DD, inclusive). Only read when range=custom.
- `range` (string): Window: `7d`, `30d`, `90d`, `1y`, `2y`, `3y`, `4y`, `5y`, `all`, or `custom` with `start_date`/`end_date`. Spans over two years are downsampled to one point per week.
- `smooth` (boolean): Apply a trailing 30-day moving average.
- `start_date` (string): Custom range start (YYYY-MM-DD, inclusive). Only read when range=custom.
- `trim_days` (integer): Mask each constituent's first N days of history (0-90) to drop launch-week volatility.
- `weight_mode` (string): `equal`: every constituent's % move counts the same. `marketcap`: weighted by price x Workshop subscribers, like an S&P-style index.

### `compare_market` (~413 tokens)

Overlay skins, baskets and indices on one date axis

Overlay skins, baskets and indices on one date axis. The data behind rust.wiki/skins/compare: one shared `dates` axis and a `series` entry per token with
\`key`, `name`, `icon_url`, `is_basket`, `is_index` and `prices` aligned to the axis (null where that entry has
no data yet). Skin and basket entries are prices in cents (a basket is the plain average of its members'
prices); index entries are index levels rebased to 100. Spans over two years are downsampled to weekly points.
Cached for 24 hours per parameter combination.

Input parameters:

- `end_date` (string): Custom range end (YYYY-MM-DD, inclusive). Only read when range=custom.
- `entries` (string, required): Comma-separated, up to 8: an `itemdefid` (that skin's price), `category:weapon` / `collection:Forest Raiders` / `item:shoes.boots` (the basket's average price) or `index:all` / `index:category:weapon…
- `index_weight_mode` (string): Weighting for any `index:` entries (see /market/index).
- `range` (string): Window: `7d`, `30d`, `90d`, `1y`, `2y`, `3y`, `4y`, `5y`, `all`, or `custom` with `start_date`/`end_date`. Spans over two years are downsampled to one point per week.
- `smooth` (boolean): Apply a trailing 30-day moving average.
- `start_date` (string): Custom range start (YYYY-MM-DD, inclusive). Only read when range=custom.
- `trim_days` (integer): Mask each constituent's first N days of history (0-90) to drop launch-week volatility.

### `get_server_player_history` (~212 tokens)

Player-count history for one server

Player-count history for one server. The per-poll `player_count`/`queued_count` readings behind the server page's 24-hour chart, oldest first,
as `points` of `{t, players, queued}`. One reading lands per poll cycle (roughly hourly); when the window
holds more than 500 readings they are averaged into equal time buckets (`resolution_seconds`, null when the
points are raw) so a response never exceeds 500 points. Also `peak_players`, `avg_players` and `point_count`.
A server that has never answered a poll has an empty series. Cached for five minutes.

Input parameters:

- `days` (integer): How many days back to return (1-30). Snapshots are pruned nightly to the configured retention window (7 days by default - see `snapshot_retention_days` on `/servers/stats`), so longer ranges come bac…
- `server_id` (integer, required): The server's numeric id.

### `get_server_stats` (~206 tokens)

Site-wide totals and data freshness

Site-wide totals and data freshness. The headline numbers from the servers.rustprofit.com homepage: `online_servers`, `total_players` and
\`queued_players` summed across every online server, `tracked_servers` (every row ever discovered, offline
included), `steam_global_players` (Rust's concurrent player count from Steam, null if Steam did not answer),
\`next_force_wipe_at` (the first Thursday of the month at 2 PM US Eastern: 18:00 UTC during US daylight saving time, 19:00 UTC otherwise), the poller's
configuration (`poll_interval_seconds` between cycles, `offline_after_seconds` before an unanswering server
is marked offline, `snapshot_retention_days` of per-server history kept) and `workers` - the live heartbeat
status of the discovery, polling and map-generation jobs, so you can tell how fresh the data is. Includes next_force_wipe_at (Rust's monthly forced wipe).

### `get_twitch_drops` (~68 tokens)

Current Rust Twitch and Kick drops

Current Rust Twitch and Kick drops. The live drops campaigns (Twitch and Kick: round, dates, general and streamer drops with the skin each one
gives), the most valuable drop skins ever by Steam price, and past rounds - the data behind rust.wiki/drops.

### `search_guides` (~140 tokens)

Search the RustProfit blog's Rust guides

Search the RustProfit blog's Rust guides. Published guides from blog.rustprofit.com (monuments, recyclers, farming, base building, raiding, gear, NPCs,
wipes, update explainers), best match first: every word must appear somewhere in the guide, and title matches
rank above summary and tag matches, which rank above body-text matches. Link the `url` when citing one. Rust how-to guides from blog.rustprofit.com; cite and link the url.

Input parameters:

- `limit` (integer): Most results to return.
- `q` (string, required): Words to find in guide titles, summaries, tags and text.

### `calculate_craft_cost` (~118 tokens)

Raw materials to craft a list of items

Raw materials to craft a list of items. Resolves every recipe down to raw materials, per unit (items made in batches, like gunpowder, are divided by
their batch size), exactly as the craft calculator page does. `raw_materials` is the total, largest first;
\`items` echoes each input with its direct recipe; `unknown` lists inputs that matched no item.

Input parameters:

- `items` (string, required): Comma-separated `shortname:quantity` pairs (display names work too; quantity defaults to 1).

### `calculate_recycle_yield` (~99 tokens)

What recycling a list of items yields

What recycling a list of items yields. Expected outputs (quantity x per-unit yield x chance) per input and in total, for the chosen recycler.

Input parameters:

- `items` (string, required): Comma-separated `shortname:quantity` pairs (display names work too; quantity defaults to 1).
- `recycler` (string): `recycler` (monument) or `safe_zone` (Outpost/Bandit Camp, lower yields).

### `calculate_raid_cost` (~161 tokens)

Explosives needed to destroy a set of building pieces

Explosives needed to destroy a set of building pieces. For every explosive that can destroy all the given pieces: total units and sulfur, cheapest sulfur first;
\`cheapest` is the best single option. Single-explosive totals - damage adds up across explosives, so a mix can
be cheaper (use /calculators/raid's damage_per_unit for that). Doors and deployables aren't covered yet.

Input parameters:

- `explosives` (string): `staples` (rockets, C4, satchels, explosive ammo, beancans), `all`, or a comma list of explosive shortnames.
- `targets` (string, required): Comma-separated `slug:count` building pieces (slugs from /building, or display names).

### `calculate_upkeep` (~134 tokens)

Daily upkeep for a base

Daily upkeep for a base. The upkeep calculator page's math: the block count walks Rust's default upkeep brackets to a blended daily
rate, and each resource's daily upkeep is what was spent building times that rate (`per_week` = 7 days).

Input parameters:

- `blocks` (integer, required): Number of building blocks (foundations, walls, floors... each counts one).
- `high_quality_metal` (number): Total high quality metal spent.
- `metal_fragments` (number): Total metal fragments spent.
- `stone` (number): Total stone spent.
- `wood` (number): Total wood spent building the base.

### `genetics_best_layout` (~179 tokens)

Best crossbreeding layout from a pool of plant clones

Best crossbreeding layout from a pool of plant clones. The gene calculator's beam search, ported exactly: which clones to plant around the centre, how many of each,
and what the centre will most likely become (with every outcome's chance). Uses the game's gene weights (red
W/X 1.0, green G/Y/H 0.6).

Input parameters:

- `centre` (string): Optional genes of the plant in the centre slot (default: unknown).
- `clones` (string, required): Comma-separated 6-letter gene strings of the clones you have (G Y H W X).
- `max_neighbours` (integer): Most neighbouring plants to use (a planter grid allows 8).
- `target` (string): Optional 6-letter target such as GGGGYY; default: as many G and Y as possible.

### `genetics_predict` (~67 tokens)

What a plant will grow into from its neighbours

What a plant will grow into from its neighbours. Every possible result for the centre plant with its probability, most likely first.

Input parameters:

- `centre` (string): Genes of the centre plant, if known.
- `neighbours` (string, required): Comma-separated 6-letter gene strings of the neighbouring plants.

### `resolve_steam_profile` (~100 tokens)

Resolve a profile URL or vanity name to a SteamID64

Resolve a profile URL or vanity name to a SteamID64. Turns any of the accepted identifier forms into a 17-digit SteamID64. Does not fetch the profile. Turn a steamcommunity.com/id/... or /profiles/... link, or a custom URL name, into the SteamID64 the inventory and player tools need.

Input parameters:

- `q` (string, required): A steamcommunity.com profile URL, a custom URL name, or a SteamID64.

### `get_player_stats` (~160 tokens)

Player profile, Rust stats and achievements

Player profile, Rust stats and achievements. Profile summary (name, avatar, country, Steam level, account age), VAC/game bans, Rust playtime, every Rust
stat Steam exposes grouped into Combat / Animals & NPCs / How you died / Gathering & loot / Building / Travel /
Life on the island / Fishing / Music / Everything else, six headline figures (kills, deaths, K/D, headshots,
bullet and arrow accuracy), and all 116 achievements with unlock dates. `stats_private` is true when the
profile hides game details, in which case `groups` and `achievements` are empty.

Input parameters:

- `steamid` (string, required): 17-digit SteamID64. Use /players/resolve for URLs and vanity names.

### `get_inventory_leaderboard` (~96 tokens)

Most valuable inventories ever checked

Most valuable inventories ever checked. The rust.wiki/inventory leaderboard: every inventory anyone has looked up, ranked by total value at its
last check (values are re-priced each time an inventory is viewed or by the daily warmer for the top 20). Includes
the network-wide totals. 20 per page. No key needed.

Input parameters:

- `page` (integer): 1-based page; 20 inventories per page.

### `get_inventory` (~336 tokens)

Value a Steam account's Rust skins

Value a Steam account's Rust skins. Every Rust skin the account holds with `quantity`, unit `price` and `value` (cents), sorted by value, and the
same attributes /skins filters on (`collection`, `creator`, `item_shortname`, `item_name`, `est_supply`,
\`released_year`, `colors`, and `flags`: limited_time, permanent, marketable, tradable, breakable, glows,
commodity, drop), plus
\`total_value`, `item_count`, `distinct_skins`, a `categories` breakdown with share percentages, the owner's
display name and avatar, and `value_history` (the current holdings re-priced at each of the last 365 days, in USD
DOLLARS, not cents, at each day's Steam sale price - so its latest point can be below `total_value`, which is at
current asking prices).
\`found` is false for private or empty inventories; `stale` is true when Steam was unreachable and the last
stored snapshot was re-priced instead. Takes a 17-digit SteamID64 (use resolve_steam_profile for a profile URL or custom name); the inventory must be public. Served from the stored copy when the inventory was checked in the last 24 hours, otherwise read live from Steam. No key needed: keyless clients share a daily inventory cap; send your own free key (https://rust.wiki/api-keys) as X-API-Key for a private quota.

Input parameters:

- `steamid` (string, required): 17-digit SteamID64 (resolve URLs and vanity names with /players/resolve).

### `get_inventory_value_history` (~329 tokens)

Inventory value over time

Inventory value over time. The inventory's value over time: the account's current holdings re-priced at each day's Steam SALE price
(median sale), `values` in USD cents, oldest first - the line on the rust.wiki inventory chart. It shows how the
market moved, not when items were bought. `headline_total_value` is the total at current Steam ASKING prices
(lowest sell order) as of `headline_checked_at`, the number shown at the top of the inventory page; for thinly
traded skins it can sit well above the latest point here. Only inventories that have been looked up have a
series. Read from stored data: never a live Steam call. No key needed. Use this for the value-over-time graph's data points (any range, daily/weekly/monthly); get_inventory only carries a thinned one-year series. Look the inventory up with get_inventory first if it returns found=false.

Input parameters:

- `end_date` (string): YYYY-MM-DD, with range=custom.
- `interval` (string): daily, weekly, monthly, or auto (daily up to 400 points, then weekly, then monthly past 400 weeks).
- `range` (string): 7d, 30d, 90d, 1y, 2y, 3y, 4y, 5y, all, or custom (with start_date/end_date).
- `start_date` (string): YYYY-MM-DD, with range=custom.
- `steamid` (string, required): 17-digit SteamID64.

### `get_inventory_valuation` (~272 tokens)

What an inventory is realistically worth

What an inventory is realistically worth. The inventory valued three ways, plus what selling would actually raise. `at_asks` is the headline number
(each skin at its cheapest Steam listing, falling back to the best buy order); `at_bids` is every skin at its
best buy order; `at_recent_sales` is every skin at its latest Steam median sale price (the inventory chart's
basis). `sell_now` walks each skin's real buy-order ladder for the quantity held: `units_sellable` of
\`units_held` could be sold instantly for `gross` (what buyers pay) and `net_after_fees` (after Steam's 15%).
\`biggest_ask_gaps` lists the skins whose cheapest listing sits furthest above their recent sales - thin order
books where the headline is least reliable. All cents. Uses the stored holdings (the last lookup) and current
order books: never a live Steam call; look the inventory up first if `found` is false. No key needed. Use when asked what an inventory is REALLY worth or would sell for: asks vs bids vs recent sales, and instant-sell proceeds after Steam's 15% fee.

Input parameters:

- `steamid` (string, required): 17-digit SteamID64.

### `list_inventory_snapshots` (~136 tokens)

Dates with a saved daily snapshot

Dates with a saved daily snapshot. Every date (newest first, up to 400) on which a daily snapshot of this inventory was stored, plus `totals`:
each of those days' total value in cents (that day's holdings at that day's prices). Snapshots are written when
an inventory is looked up; fetch one with /inventory/{steamid}/snapshots/{date}. No key needed. Only inventories someone has looked up have snapshots. `totals` gives each saved day's total value (that day's holdings at that day's prices).

Input parameters:

- `steamid` (string, required): 17-digit SteamID64.

### `get_inventory_snapshot` (~93 tokens)

One saved daily snapshot

One saved daily snapshot. The inventory exactly as it was priced on that day: items with quantity and that day's price, total value and
item count. Useful for 'what was this worth last month' comparisons. No key needed.

Input parameters:

- `date` (string, required): ISO date (YYYY-MM-DD) from /inventory/{steamid}/snapshots.
- `steamid` (string, required): 17-digit SteamID64.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/wiki-rust-rust-wiki/rust#diagnostics

## Score history

- 2026-11-04: 80
- 2026-11-03: 79
- 2026-11-02: 79
- 2026-11-01: 78
- 2026-10-31: 78
- 2026-10-30: 77
- 2026-10-29: 77
- 2026-10-28: 76
- 2026-10-27: 76
- 2026-10-26: 75
- 2026-10-25: 73

## Common questions

### What is the rust.wiki MCP server?

rust.wiki is an MCP server listed in the public MCP registry as wiki.rust/rust-wiki. Live data for the game Rust: skin prices and history, items, item store, loot tables, servers. This page covers its hosted endpoint (https://rust.wiki/mcp).

### Is the rust.wiki MCP server safe to use?

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

### What tools does the rust.wiki MCP server expose?

rust.wiki exposes 57 tools: search_items, browse_items, get_item, get_item_skins, search_skins, and 52 more. Their descriptions and schemas cost roughly 12,034 tokens of context every time the server is loaded.

### Does the rust.wiki MCP server require authentication?

No. We connected to rust.wiki without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the rust.wiki MCP server still maintained?

rust.wiki is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://rust.wiki/mcp
- Website: https://rust.wiki/mcp
- Changelog RSS feed: https://verifymcp.io/servers/wiki-rust-rust-wiki/rust.xml
- Changelog JSON feed: https://verifymcp.io/servers/wiki-rust-rust-wiki/rust.json
- HTML version of this page: https://verifymcp.io/servers/wiki-rust-rust-wiki/rust
