Server definition
- Hash
- sha256:7c194f9234c6d4d15b9f754bb83c7f75568d2c3745886c3ec8438009b9d05d68
- What it is
- What a remote MCP server returned when asked what it offers: 9 tools
The blob, as servednamed by its sha256
{
"instructions": "SkinGrind is a Counter-Strike 2 skin database and market analysis service.\n\nThis server exposes read-only reference data: skins and their prices, collections,\ncases with their drop odds and expected return, Armory rotation tiles, cheap-skin\nbargain listings, and cosmetic items (stickers, charms, agents, patches, graffiti,\nmusic kits).\n\nPrices come from CSFloat listings and are refreshed hourly. All money values are\ninteger cents. Rates are basis points where a field name ends in _bps. Case odds\nfollow the standard CS2 tier weights.\n\nTrade Up data on this server is limited to the free preview: the featured Trade Ups\nand locked teasers for recent finds. Full recipes require a SkinGrind account and\nare served by the authenticated server at /mcp/pro.\n\nA Trade Up recipe is not just a list of skins. Every input carries a target_float\nand has to be bought at a float at or below it, since a higher float moves the\ncontract average and can drop the outcome into a worse wear. Every price is the\ncheapest listing seen at the last refresh, and the listing that meets the float\nrequirement is often dearer, so the real cost can run above the quoted one. Give\nthe float ceiling alongside each input and tell the user to check live prices and\nfloats before buying. The preview response repeats this in its execution_notes\nfield.\n\nThis is informational only, not financial advice and not a gambling service.\nOutcomes are random within fixed probabilities, so a contract can lose money\neven when its expected value is positive.\n\nSkinGrind is not affiliated with Valve Corporation.",
"tools": [
{
"description": "Find cheap Counter-Strike 2 skins grouped into price-threshold pages, for example AK-47 skins under 10 dollars or the cheapest knives. Without a slug it lists every available page; with a slug it returns the skins on that page with their current cheapest listing price.",
"inputSchema": {
"properties": {
"slug": {
"description": "Bargain page slug, for example \"ak-47-skins-under-10-dollars\" or \"cheapest-knives\". Omit to list every available page.",
"type": "string"
}
},
"type": "object"
},
"name": "browse_bargains",
"outputSchema": null
},
{
"description": "List Counter-Strike 2 cases, capsules and souvenir packages, or get one container with its contents plus its drop odds and expected opening value. Odds use the standard CS2 tier weights and are renormalised over the tiers actually present.",
"inputSchema": {
"properties": {
"page": {
"description": "Page number.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"per_page": {
"description": "Results per page, 1 to 25.",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Free-text container name search.",
"type": "string"
},
"slug": {
"description": "Container slug. When set, returns that container with its contents and opening odds instead of the list.",
"type": "string"
},
"sort": {
"description": "List ordering: newest, oldest or name. For a single container the contents order: rarity, name, price_asc or price_desc.",
"type": "string"
},
"type": {
"description": "Filter the list by container type.",
"enum": [
"weapon_case",
"souvenir_package",
"autograph_capsule",
"sticker_capsule",
"graffiti_box",
"sticker_collection"
],
"type": "string"
}
},
"type": "object"
},
"name": "browse_cases",
"outputSchema": null
},
{
"description": "List Counter-Strike 2 collections, or get one collection with its contents. Optionally includes the collection Trade Up map: which rarity tiers exist in the collection and what each tier can produce. That map is catalog contract math, not scanner output.",
"inputSchema": {
"properties": {
"include_tradeup_map": {
"description": "Only with slug. Adds the collection Trade Up map showing each rarity tier and its possible outputs.",
"type": "boolean"
},
"page": {
"description": "Page number.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"per_page": {
"description": "Results per page, 1 to 25.",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Free-text collection name search.",
"type": "string"
},
"slug": {
"description": "Collection slug. When set, returns that collection with its contents instead of the list.",
"type": "string"
},
"sort": {
"description": "List ordering: newest, oldest or name. For a single collection the contents order: rarity, name, price_asc or price_desc.",
"type": "string"
},
"type": {
"description": "Filter the list by what the collection contains.",
"enum": [
"skin",
"sticker",
"charm",
"agent"
],
"type": "string"
}
},
"type": "object"
},
"name": "browse_collections",
"outputSchema": null
},
{
"description": "List the current Counter-Strike 2 Armory rotation tiles with their credit cost and expected value, or get one tile with every item it can produce and the rarity weighting. Use this to compare what Armory credits are worth across the current rotation.",
"inputSchema": {
"properties": {
"slug": {
"description": "Armory tile slug. When set, returns that tile with its full item list instead of the rotation overview.",
"type": "string"
}
},
"type": "object"
},
"name": "get_armory_roi",
"outputSchema": null
},
{
"description": "Rank Counter-Strike 2 cases by expected return on opening. Each entry gives the case price, expected value, return in basis points and the chance of an opening being profitable, all computed from current listing prices plus the key price. Cases whose contents are not sufficiently priced are excluded.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_case_roi_ranking",
"outputSchema": null
},
{
"description": "Get one Counter-Strike 2 skin with its float range, per-wear prices, collections and cases. Optionally includes the catalog Trade Up context: which rarity tier the skin sits in and what it can be traded up into.",
"inputSchema": {
"properties": {
"include_tradeup_context": {
"description": "Include the catalog Trade Up context for this skin. This is contract math derived from the collection, not scanner output.",
"type": "boolean"
},
"skin_slug": {
"description": "Skin slug, for example \"redline\".",
"type": "string"
},
"weapon_slug": {
"description": "Weapon slug, for example \"ak-47\".",
"type": "string"
}
},
"required": [
"weapon_slug",
"skin_slug"
],
"type": "object"
},
"name": "get_skin_detail",
"outputSchema": null
},
{
"description": "Get the free preview of the SkinGrind Trade Up scanner: the featured Trade Ups with their full recipes, the number of contracts currently active, and locked teasers for recent finds showing their economics and when they unlock. Every input has to be bought at or below its target float, and the costs are hourly price estimates, so the response carries execution_notes explaining what to verify before buying. Full recipes for the whole feed need a SkinGrind account and the authenticated server.",
"inputSchema": {
"properties": {
"type": {
"description": "Which Trade Up feed to preview: \"profitable\" for contract Trade Ups, \"knife\" for knife and glove Trade Ups, or \"all\". Defaults to all.",
"enum": [
"profitable",
"knife",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_tradeup_preview",
"outputSchema": null
},
{
"description": "Search Counter-Strike 2 cosmetic items that are not weapon skins: stickers, charms, agents, patches, graffiti and music kits. Returns names and cheapest listing prices, or one item with its full detail including per-marketplace prices.",
"inputSchema": {
"properties": {
"category": {
"description": "Which kind of cosmetic item to search.",
"enum": [
"stickers",
"charms",
"agents",
"patches",
"graffiti",
"music-kits"
],
"type": "string"
},
"page": {
"description": "Page number.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"per_page": {
"description": "Results per page, 1 to 25.",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Free-text item name search.",
"type": "string"
},
"slug": {
"description": "Item slug. When set, returns that single item with full detail.",
"type": "string"
},
"sort": {
"description": "Result ordering. Defaults to name.",
"enum": [
"name",
"price_asc",
"price_desc"
],
"type": "string"
}
},
"required": [
"category"
],
"type": "object"
},
"name": "search_cosmetics",
"outputSchema": null
},
{
"description": "Search and filter Counter-Strike 2 weapon skins by name, weapon, rarity, collection or case. Returns skin names, rarities, wear ranges and the cheapest current listing price in cents. Use get_skin_detail for a single skin with per-wear prices.",
"inputSchema": {
"properties": {
"collection": {
"description": "Collection slug.",
"type": "string"
},
"crate": {
"description": "Case or capsule slug.",
"type": "string"
},
"page": {
"description": "Page number.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"per_page": {
"description": "Results per page, 1 to 25. Defaults to 10.",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"rarity": {
"description": "Rarity name, for example \"Covert\", \"Classified\", \"Restricted\", \"Mil-Spec Grade\".",
"type": "string"
},
"search": {
"description": "Free-text skin name search, for example \"Redline\". Used alone it also returns matching weapons; combined with any other argument it filters the paginated skin list instead.",
"type": "string"
},
"sort": {
"description": "Result ordering. Defaults to name. \"popularity\" ranks by listing quantity.",
"enum": [
"name",
"rarity",
"price_asc",
"price_desc",
"popularity"
],
"type": "string"
},
"souvenir": {
"description": "Only skins available as Souvenir.",
"type": "boolean"
},
"stattrak": {
"description": "Only skins available as StatTrak.",
"type": "boolean"
},
"weapon": {
"description": "Weapon slug, for example \"ak-47\" or \"desert-eagle\".",
"type": "string"
}
},
"type": "object"
},
"name": "search_skins",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:7c194f9234c6d4d15b9f754bb83c7f75568d2c3745886c3ec8438009b9d05d68 | sha256sum