_ registry / mcp streamable-http · checked 1h ago

rust-wiki

https://rust.wiki

Registry code: bf6fdc76c5a02529

api record

rust.wiki: live data for Rust, the Facepunch survival game - every item with recipes, recycle yields and loot sources; every skin with live Steam prices, sale history and third-party marketplace prices; the weekly item store; monuments, loot tables, CCTV codes, raid costs and upkeep; Facepunch updates; the Rust server directory, and Steam inventory valuations (get_inventory needs the caller's own API key; the inventory leaderboard and saved snapshots don't). Money is integer USD cents unless a field says otherwise; timestamps are UTC ISO-8601. Skins are keyed by numeric itemdefid and items by…

endpoint
https://rust.wiki/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is rust-wiki live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is rust-wiki free to use?
Not measured yet.
What tools does rust-wiki have?
39 tools: find_skin_deals, search_workshop, get_upkeep_rules, search_items, browse_items, get_item, get_item_skins, search_skins, ….
Is rust-wiki safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
144ms

last good check

priced tools
0

of 39 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 39 tools
39 never probed 0 of 39 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • find_skin_deals unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "pct",
            "abs"
          ],
          "type": "string",
          "default": "pct",
          "examples": [
            "pct"
          ],
          "description": "Best `pct` (spread as % of buy price) or `abs` (spread in cents) first."
        },
        "search": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1,
          "description": "Case-insensitive substring of the skin name (or Steam market name)."
        },
        "category": {
          "enum": [
            "weapon",
            "clothing",
            "deployable",
            "decoration",
            "crate",
            "resource",
            "mask",
            "none"
          ],
          "type": "string",
          "description": "Only skins of this category."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        },
        "max_price": {
          "type": "integer",
          "minimum": 0,
          "description": "Maximum buy price in cents."
        },
        "min_price": {
          "type": "integer",
          "minimum": 0,
          "description": "Minimum buy price in cents."
        },
        "steam_ref": {
          "enum": [
            "buy",
            "sell"
          ],
          "type": "string",
          "default": "buy",
          "examples": [
            "buy"
          ],
          "description": "Steam exit price: `buy` = sell instantly into the highest buy order (default), `sell` = list just under the lowest sell order."
        },
        "marketplace": {
          "type": "array",
          "items": {
            "enum": [
              "Skinport",
              "CSDealsMarketplace",
              "DMarket",
              "RustTM",
              "CSTrade",
              "Waxpeer",
              "LISSkins",
              "ManncoStore",
              "SwapGGTrade",
              "TradeitGG",
              "RapidSkins",
              "LootFarm",
              "RustSkins"
            ],
            "type": "string"
          },
          "default": [],
          "description": "Only deals whose cheapest listing is on one of these marketplaces (repeat the parameter)."
        }
      },
      "additionalProperties": false
    }
    arguments 96 lines
  • search_workshop unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "newest",
            "popular"
          ],
          "type": "string",
          "default": "newest",
          "description": "`newest` = most recently submitted first; `popular` = most subscribers first."
        },
        "search": {
          "type": "string",
          "examples": [
            "dragon"
          ],
          "maxLength": 120,
          "minLength": 1,
          "description": "Case-insensitive substring match on the submission title."
        },
        "target": {
          "type": "string",
          "examples": [
            "AK47"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Only submissions for this target item, exactly as the Workshop tags it (e.g. `AK47`, `Garage Door`); `/workshop/targets` lists every value."
        },
        "accepted": {
          "enum": [
            "any",
            "yes",
            "no"
          ],
          "type": "string",
          "default": "any",
          "description": "`yes` = only submissions Facepunch accepted into the game; `no` = only ones it has not."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 56 lines
  • get_upkeep_rules unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • search_items unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string",
          "examples": [
            "assault"
          ],
          "maxLength": 80,
          "minLength": 2,
          "description": "Part of an item's display name or shortname (2+ characters)."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • browse_items unknown never probed

    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).

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "name",
            "category"
          ],
          "type": "string",
          "default": "name",
          "description": "`name` = alphabetical (similarity-ranked while searching); `category` = grouped by category, then name."
        },
        "search": {
          "type": "string",
          "examples": [
            "assault"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "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`."
        },
        "category": {
          "enum": [
            "weapon",
            "construction",
            "general",
            "resource",
            "attire",
            "tool",
            "medical",
            "food",
            "ammo",
            "trap",
            "component",
            "electrical",
            "fun",
            "misc"
          ],
          "type": "string",
          "examples": [
            "weapon"
          ],
          "description": "Restrict to one of the 14 wiki.facepunch.com item categories."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 60 lines
  • get_item unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "shortname"
      ],
      "properties": {
        "shortname": {
          "type": "string",
          "examples": [
            "rifle.ak"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "The item's shortname, e.g. `rifle.ak` or `metal.fragments`."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_item_skins unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "shortname"
      ],
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        },
        "shortname": {
          "type": "string",
          "examples": [
            "rifle.ak"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "The item's shortname, e.g. `rifle.ak`."
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • search_skins unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string",
          "examples": [
            "tempered"
          ],
          "maxLength": 100,
          "minLength": 2,
          "description": "Part of a skin name (2+ characters)."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • browse_skins unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "item": {
          "type": "string",
          "maxLength": 80,
          "description": "Base item shortname, e.g. `rifle.ak` - every skin of that one item."
        },
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "price_desc",
            "price_asc",
            "name",
            "popularity",
            "supply_asc",
            "released_desc",
            "released_asc",
            "trending",
            "marketcap_desc"
          ],
          "type": "string",
          "default": "price_desc",
          "examples": [
            "price_desc"
          ],
          "description": "Ordering. `popularity` and `supply_asc` use Workshop subscribers; `trending` is the 7-day price change; `marketcap_desc` is price x subscribers."
        },
        "color": {
          "enum": [
            "red",
            "orange",
            "yellow",
            "green",
            "cyan",
            "blue",
            "purple",
            "pink",
            "brown",
            "white",
            "gray",
            "black",
            "tan",
            "olive",
            "navy",
            "maroon",
            "silver"
          ],
          "type": "string",
          "description": "Dominant icon colour bucket; matches any of a skin's up to five dominant colours."
        },
        "glows": {
          "type": "boolean",
          "default": false,
          "description": "Only skins with glow-in-the-dark elements."
        },
        "search": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1,
          "description": "Fuzzy name search (trigram similarity; with sort=name results are relevance-ordered). Searches are never cached server-side."
        },
        "creator": {
          "type": "string",
          "maxLength": 100,
          "description": "Workshop creator: a 17-digit SteamID64 for an exact match, or part of the creator's display name."
        },
        "category": {
          "enum": [
            "weapon",
            "clothing",
            "deployable",
            "decoration",
            "crate",
            "resource",
            "mask",
            "none"
          ],
          "type": "string",
          "examples": [
            "weapon"
          ],
          "description": "Skin category."
        },
        "min_subs": {
          "enum": [
            "1000",
            "5000",
            "10000",
            "25000",
            "50000"
          ],
          "type": "string",
          "description": "Minimum Steam Workshop subscriber count of the skin's original submission."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        },
        "released": {
          "enum": [
            "2026",
            "2025",
            "2024",
            "2023",
            "2022",
            "2021",
            "2020",
            "2019",
            "2018",
            "2017",
            "2016",
            "2015"
          ],
          "type": "string",
          "description": "Year the skin was accepted into the item store."
        },
        "tradable": {
          "type": "boolean",
          "default": false,
          "description": "Only tradable skins."
        },
        "breakable": {
          "type": "boolean",
          "default": false,
          "description": "Only skins with a recycle yield (`recycle_hint`)."
        },
        "commodity": {
          "type": "boolean",
          "default": false,
          "description": "Only Steam commodity items."
        },
        "permanent": {
          "type": "boolean",
          "default": false,
          "description": "Only permanent store items."
        },
        "collection": {
          "type": "string",
          "maxLength": 120,
          "description": "Exact collection name, e.g. `Forest Raiders` (see /skins/collections)."
        },
        "hide_drops": {
          "type": "boolean",
          "default": false,
          "description": "Hide loot-crate drops, publisher drops and Twitch drops (what the site calls DLCs and drops)."
        },
        "marketable": {
          "type": "boolean",
          "default": false,
          "description": "Only Steam-marketable skins."
        },
        "limited_time": {
          "type": "boolean",
          "default": false,
          "description": "Only limited-time store items."
        }
      },
      "additionalProperties": false
    }
    arguments 168 lines
  • get_skin unknown never probed

    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

    mcp-tool

    {
      "type": "object",
      "required": [
        "itemdefid"
      ],
      "properties": {
        "itemdefid": {
          "type": "integer",
          "minimum": 1,
          "examples": [
            10138
          ],
          "description": "The skin's Steam item definition id (also its rust.wiki URL: /skin/{itemdefid})."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_skin_price unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "itemdefid"
      ],
      "properties": {
        "itemdefid": {
          "type": "integer",
          "minimum": 1,
          "examples": [
            10138
          ],
          "description": "The skin's item definition id."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_skin_price_history unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "itemdefid"
      ],
      "properties": {
        "range": {
          "enum": [
            "1d",
            "1w",
            "1m",
            "3m",
            "6m",
            "1y",
            "2y",
            "5y",
            "all"
          ],
          "type": "string",
          "default": "1y",
          "examples": [
            "1y"
          ],
          "description": "How far back: `1d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `5y` or `all`."
        },
        "itemdefid": {
          "type": "integer",
          "minimum": 1,
          "examples": [
            10138
          ],
          "description": "The skin's item definition id."
        }
      },
      "additionalProperties": false
    }
    arguments 36 lines
  • list_skin_collections unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "value_desc",
            "value_asc",
            "count_desc",
            "count_asc",
            "name"
          ],
          "type": "string",
          "default": "value_desc",
          "examples": [
            "value_desc"
          ],
          "description": "`value_*` sorts by the summed wiki price of the collection's skins, `count_*` by member count."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • get_skin_collection unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "examples": [
            "forest-raiders"
          ],
          "maxLength": 120,
          "description": "Collection slug (lower-case, hyphenated name), e.g. `forest-raiders`."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_market_cap unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_market_movers unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_item_store unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_item_store_history unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "search": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1,
          "description": "Only rotations that contained a skin whose name matches this (case-insensitive substring), e.g. `Tempered`."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • get_store_rotation unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "rotation_id"
      ],
      "properties": {
        "rotation_id": {
          "type": "string",
          "examples": [
            "2017-07-13-2006"
          ],
          "maxLength": 40,
          "description": "Rotation id from /store/history, e.g. `2017-07-13-2006`, or `General`."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • list_monuments unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_monument unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "examples": [
            "airfield"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Monument slug from `/monuments`, e.g. `airfield`."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • list_loot_sources unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • get_loot_table unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "source_id"
      ],
      "properties": {
        "source_id": {
          "type": "integer",
          "minimum": 1,
          "examples": [
            1
          ],
          "description": "Loot source id from `/loot-tables`, `/monuments/{slug}` or an item's `loot_sources`."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_cctv_codes unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • search_commands unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "search": {
          "type": "string",
          "examples": [
            "gather"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Case-insensitive substring match on the command name, its description OR its category (so `workbench` finds every workbench ConVar)."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        },
        "admin_only": {
          "type": "boolean",
          "default": false,
          "description": "`true` = only commands that need admin/moderator permission."
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
  • search_world_entities unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "kind": {
          "enum": [
            "npc",
            "resource"
          ],
          "type": "string",
          "examples": [
            "npc"
          ],
          "description": "`npc` = anything with hit points (animals, scientists, bosses, vehicles); `resource` = nodes, trees, barrels and other harvestables."
        },
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "search": {
          "type": "string",
          "examples": [
            "scientist"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Case-insensitive substring match on the display name."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 39 lines
  • get_world_entity unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "examples": [
            "bear"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Entity slug from `/world`, e.g. `bear`."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_building_piece unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "examples": [
            "stone-wall"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Piece slug from `/building`, e.g. `stone-wall`."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_raid_costs unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "grade": {
          "enum": [
            "Twig",
            "Wood",
            "Stone",
            "Metal",
            "Armored",
            "Boat"
          ],
          "type": "string",
          "examples": [
            "Stone"
          ],
          "description": "Restrict `targets` to one building grade."
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • get_rust_updates unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • search_servers unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "kind": {
          "enum": [
            "vanilla",
            "modded",
            "official"
          ],
          "type": "string",
          "examples": [
            "vanilla"
          ],
          "description": "`vanilla` = not modded; `modded` = reports a modded flag over A2S; `official` = a Facepunch-run public server (by name convention)."
        },
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "sort": {
          "enum": [
            "players",
            "votes",
            "rating",
            "wiped",
            "name"
          ],
          "type": "string",
          "default": "players",
          "examples": [
            "players"
          ],
          "description": "`players` = most players online first (default); `votes` = most community votes; `rating` = highest average rating; `wiped` = most recently wiped; `name` = alphabetical."
        },
        "biome": {
          "enum": [
            "snow",
            "desert",
            "forest",
            "tundra",
            "jungle"
          ],
          "type": "string",
          "examples": [
            "snow"
          ],
          "description": "Only servers whose generated map preview is mostly this biome (its percentage is the highest of the five)."
        },
        "group": {
          "enum": [
            "solo",
            "duo",
            "trio"
          ],
          "type": "string",
          "examples": [
            "solo"
          ],
          "description": "Team-size cap: `solo` (1), `duo` (2) or `trio` (3). Only servers whose cap is known match."
        },
        "gather": {
          "enum": [
            "2x",
            "3x",
            "5x",
            "10x"
          ],
          "type": "string",
          "examples": [
            "2x"
          ],
          "description": "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."
        },
        "online": {
          "type": "boolean",
          "default": true,
          "description": "`true` (default) = only servers that were online at their last poll; `false` = only servers currently marked offline."
        },
        "search": {
          "type": "string",
          "examples": [
            "rustoria"
          ],
          "maxLength": 120,
          "minLength": 1,
          "description": "Case-insensitive substring match on the server name."
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "examples": [
            "DE"
          ],
          "maxLength": 2,
          "minLength": 2,
          "description": "ISO 3166-1 alpha-2 country the server is hosted in (GeoIP of its address); `/servers/countries` lists the values in use."
        },
        "monument": {
          "type": "string",
          "examples": [
            "Launch Site"
          ],
          "maxLength": 80,
          "minLength": 1,
          "description": "Only servers whose current map (when a preview has been generated) contains this monument type, exactly as `/servers/monument-types` lists it."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        },
        "min_rating": {
          "type": "number",
          "maximum": 5,
          "minimum": 1,
          "examples": [
            4
          ],
          "description": "Only servers whose average community rating (1-5) is at least this."
        },
        "min_players": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1,
          "examples": [
            50
          ],
          "description": "Only servers with at least this many players online right now."
        }
      },
      "additionalProperties": false
    }
    arguments 136 lines
  • get_top_servers unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 50,
          "minimum": 1,
          "examples": [
            10
          ],
          "description": "How many servers to return (1-50)."
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "examples": [
            "US"
          ],
          "maxLength": 2,
          "minLength": 2,
          "description": "Restrict to one ISO 3166-1 alpha-2 country."
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • get_recent_wipes unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page number."
        },
        "hours": {
          "type": "integer",
          "default": 24,
          "maximum": 168,
          "minimum": 1,
          "examples": [
            24
          ],
          "description": "Look-back window in hours (1-168). The site's /wipes page shows 24."
        },
        "per_page": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Results per page (max 200)."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • get_server unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "server_id"
      ],
      "properties": {
        "server_id": {
          "type": "integer",
          "minimum": 1,
          "examples": [
            1
          ],
          "description": "The server's numeric id (from `/servers`, or the number in its servers.rustprofit.com/server/{id} URL)."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_data_freshness unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_inventory_leaderboard unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "description": "1-based page; 20 inventories per page."
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • get_inventory unknown never probed

    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). `found` is false for private or empty inventories; `stale` is true when Steam was unreachable and the last stored snapshot was re-priced instead. Requires your own free rust.wiki API key (send it as the X-API-Key header from your MCP client; create one at https://rust.wiki/api-keys) - a live inventory read can be a paid Steam call, so it is not on the shared keyless quota. Takes a 17-digit SteamID64. Served from the stored copy when the inventory was checked in the last 24 hours.

    mcp-tool

    {
      "type": "object",
      "required": [
        "steamid"
      ],
      "properties": {
        "steamid": {
          "type": "string",
          "examples": [
            "76561198869732295"
          ],
          "description": "17-digit SteamID64 (resolve URLs and vanity names with /players/resolve)."
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • list_inventory_snapshots unknown never probed

    Dates with a saved daily snapshot. Every date (newest first, up to 400) on which a daily snapshot of this inventory was stored. 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "steamid"
      ],
      "properties": {
        "steamid": {
          "type": "string",
          "examples": [
            "76561198869732295"
          ],
          "description": "17-digit SteamID64."
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_inventory_snapshot unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "steamid",
        "date"
      ],
      "properties": {
        "date": {
          "type": "string",
          "examples": [
            "2026-09-30"
          ],
          "description": "ISO date (YYYY-MM-DD) from /inventory/{steamid}/snapshots."
        },
        "steamid": {
          "type": "string",
          "examples": [
            "76561198869732295"
          ],
          "description": "17-digit SteamID64."
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id bf6fdc76c5a02529.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/bf6fdc76c5a02529/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/bf6fdc76c5a02529/badge.svg)](https://brick.blue/agent/bf6fdc76c5a02529?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.