Discover games
discover_gamesFind Steam games across the full catalog by combining filters like discount, release recency, review quality, Steam Deck compatibility, OS, and tags. Returns price, reviews, compat status, and store links in one call.
Instructions
Find games across the whole Steam catalog (keyless), filtered by ANY combination of: discount (min_discount — for 'what's on sale'), release recency (released_after / released_within_days — for 'new games'), hardware compatibility (steam_deck/steam_os/steam_machine/steam_frame — see each field's own description), native OS build (platform — windows/mac/linux), review quality (min_review / min_reviews), and user tags (tags — e.g. ['Roguelike', 'Deckbuilding'] for 'games like X'). Each result returns price/discount, review %, all four compat statuses, a vr_support flag (none/supported/required), popular tags, a clickable store_url, discount_end (when a deal expires) and release date in one call. Examples: '>80% off with 90%+ reviews' → set min_discount + min_review; 'recent well-reviewed games that run on Steam Deck' → set released_within_days + steam_deck + min_review; 'roguelike deckbuilders on sale' → tags:['Roguelike','Deckbuilding'] + min_discount. Base games only: DLC, soundtracks, demos and tools are filtered out, so a 'find DLC on sale' question returns nothing here — price a known DLC appid with get_items instead. No appids needed — unlike get_items, which prices a list you already have. For 'games like X' from a SINGLE named title, get its tags via get_items and pass them here; for taste inferred from the player's WHOLE library instead, use get_recommended_games (key-gated). Filtering: min_discount, released_after/released_within_days, tags, min_review and ONE of steam_deck/steam_machine/steam_frame are applied by Steam across the whole catalog, so a niche combination still finds its games, most popular first (total_matching is Steam's count of them). steam_os, platform, min_reviews and a second hardware filter have no server-side form and are applied afterwards to the count entries fetched, so those can return fewer — raise count for them. min_review only counts games with a Steam rating (10+ reviews). At most 50 results come back per call, best discount first: compare returned against matched to see whether the list was capped, and narrow the filters or page with start for the rest.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Keep only games carrying ALL of these user tags (case-insensitive), e.g. ['Roguelike','Deckbuilding']. Use exact Steam tag names — a misspelled/unrecognized one isn't an error, it just matches nothing. Filtered by Steam across the whole catalog. | |
| count | No | How many matching catalog entries to fetch (1-200). Default 50. Most filters run server-side, so these already match them; steam_os, platform, min_reviews and a second hardware filter are then applied to this page and can leave fewer — raise it for those. Not the result cap (see the tool description). (Tools that cap what they RETURN call that `limit`.) | |
| start | No | Pagination offset into the catalog (default 0). | |
| country | No | Country (cc) for prices/currency and regional availability; overrides STEAM_COUNTRY for this call. Must be a real Steam store region — the two-letter shape is all that's checked here, and Steam answers an unrecognized code with US prices rather than an error, so a typo returns plausible numbers for the wrong country. | |
| language | No | Store language for the text fields. Use Steam's own language NAME — english, russian, schinese/tchinese — not an ISO code like en/ru/zh. An unrecognized value is never an error: text comes back in English and any `tags` list comes back EMPTY, which reads as 'this game has no tags' rather than as a bad language. (Filtering BY tags is the one loud case — it fails outright.) Overrides STEAM_LANGUAGE for this call. This is the content language only — prices and regional availability follow `country`. | |
| platform | No | NATIVE-build filter: keep only games shipping a native build for this OS (windows/mac/linux). 'linux' = a native Linux/SteamOS port. This is NOT Proton — for games that run via Proton compatibility use steam_os / steam_deck instead. Each result's `platforms` field lists its native builds, while steam_os/steam_deck report Proton compatibility, so native vs Proton stay distinct. | |
| steam_os | No | SteamOS compatibility — how well it runs on SteamOS in general (via Proton): 'verified' = SteamOS-Verified only; 'playable' = Playable or Verified. For a NATIVE Linux build instead, use platform:'linux'; for the Steam Machine console specifically, use steam_machine. | |
| min_review | No | Minimum positive-review %, e.g. 85. Filtered by Steam across the catalog (by its rating bucket) and re-checked exactly; only games with a Steam rating (10+ reviews) qualify. | |
| steam_deck | No | Steam Deck compatibility (runs via Proton): 'verified' = Deck-Verified only; 'playable' = Playable or Verified. Not a native Linux build — see `platform` for that. | |
| min_reviews | No | Minimum review count, e.g. 500 — filters out games too obscure to trust a % on. No server-side form: applied to the `count` entries fetched, so raise `count` if it returns too few. | |
| steam_frame | No | Steam Frame (VR headset) compatibility: 'verified' = Frame-Verified only; 'playable' = Playable or Verified. | |
| min_discount | No | Minimum discount %, e.g. 80 for '80%+ off' — this is the 'deals' filter. Omit to include full-price games. | |
| steam_machine | No | Steam Machine (Valve's console) compatibility (via Proton): 'verified' = Steam-Machine-Verified only; 'playable' = Playable or Verified. Its own rating, distinct from the general steam_os one. | |
| released_after | No | Keep only games released on/after this date (YYYY-MM-DD). | |
| released_within_days | No | Alternative to released_after: released within the last N days, as a rolling window from now. The two are alternatives, not a combination — pass both and released_after wins and this is ignored, so pick whichever one the question actually asks for. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| deals | Yes | ||
| matched | Yes | How many results in the fetched page (see `count`) survived every filter. | |
| returned | Yes | How many of `matched` are in `deals` below. Lower than `matched` when the result was capped for response size — narrow the filters (or page with `start`) to see the rest. | |
| total_matching | Yes | Steam's count of catalog games matching the server-side filters (min_discount, release date, tags, min_review's rating bucket, one hardware filter). Filters with no server-side form (steam_os, platform, min_reviews, a second hardware filter) and the exact review-% check are not reflected, so this can overstate; `matched` is exact for the fetched page. null when a requested tag isn't a Steam tag (nothing could match, so the catalog wasn't queried). |