# SkinGrind

> CS2 skin prices, case odds and ROI, Armory value, and Trade Up contracts.

- name: com.skingrind/skingrind
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.skingrind%2Fskingrind
- tools: https://api.protogrid.dev/v1/servers/com.skingrind%2Fskingrind/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "skingrind": {
      "type": "http",
      "url": "https://cloud.skingrind.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-84d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_skin_detail (destructiveHint, idempotentHint, openWorldHint); get_armory_roi (destructiveHint, idempotentHint, openWorldHint); browse_bargains (destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,847 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 1,847 tokens to load them all
- tool set hash: d2230e79180d2144c39d8342368a5d8a
- badge: [![protogrid quality](https://protogrid.dev/badge/com.skingrind/skingrind.svg)](https://protogrid.dev/servers/com.skingrind/skingrind)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://cloud.skingrind.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `browse_bargains`: 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.
- `browse_cases`: 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.
- `browse_collections`: 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.
- `get_armory_roi`: 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.
- `get_case_roi_ranking`: 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.
- `get_skin_detail`: 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.
- `get_tradeup_preview`: 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.
- `search_cosmetics`: 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.
- `search_skins`: 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.
