Skip to main content
Glama

Get a player's wishlist

get_wishlist
Read-only

List a player's Steam wishlist by SteamID64. Filter by tags, discount, reviews, or Deck compatibility, and return full store cards in one call.

Instructions

List a player's Steam wishlist by SteamID64. No API key required, but the wishlist/profile must be public — otherwise it returns found:false, which is ALSO what an empty but public wishlist returns; read reason to tell those apart. By default returns a light list of appids (sorted by priority, no names), capped at the first 100 (check returned vs total). Set include_details for full store cards in ONE call (name, price/discount, review %, Deck/SteamOS/Machine/Frame compat, vr_support, tags, release) — no need to follow up with get_items. Narrow it in the SAME call with tags (e.g. ['Metroidvania']), platform (NATIVE windows/mac/linux build), steam_deck/steam_os/steam_machine/steam_frame (Proton compatibility — see each field), min_review, min_discount / on_sale_only, or country / language. Any of these filters switches to the detailed card view, since the light appid list has no price/tags/compat to filter on. Filters apply before the output cap (the detailed card list returns at most 50 items), so a deeply-discounted niche match past the display cap is never hidden by it (e.g. 'top metroidvanias on my wishlist with a good discount and reviews' → tags:['Metroidvania'] + min_discount + min_review). Results ranked by discount when a discount filter is set, else by wishlist priority; matched reports the pre-cap count. tags, steam_deck, mac/linux and the discount floor are applied by Steam over the whole wishlist; min_review, the exact own-package discount and the other compat/platform filters are checked by this server over up to 1000 matching entries, and note says when a bigger match set left some unchecked. Convert a vanity name with resolve_vanity_url first (that conversion itself needs STEAM_API_KEY, even though this tool doesn't).

Input Schema

NameRequiredDescriptionDefault
tagsNoKeep only wishlist items carrying ALL of these user tags (case-insensitive), e.g. ['Metroidvania']. Use exact Steam tag names — a misspelled/unrecognized one isn't an error, it just matches nothing. Implies include_details.
countryNoCountry (cc) for prices; overrides STEAM_COUNTRY. Implies include_details. 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.
steamidNo17-digit SteamID64. Omit to use the STEAM_ID configured on the server. Convert a vanity/custom URL name with resolve_vanity_url first.
languageNoStore language; overrides STEAM_LANGUAGE. Implies include_details. 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.)
platformNoNATIVE-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_osNoSteamOS 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_reviewNoKeep only items with at least this positive-review %. Implies include_details.
steam_deckNoSteam Deck compatibility (runs via Proton): 'verified' = Deck-Verified only; 'playable' = Playable or Verified. Not a native Linux build — see `platform` for that.
steam_frameNoSteam Frame (VR headset) compatibility: 'verified' = Frame-Verified only; 'playable' = Playable or Verified.
min_discountNoKeep only items discounted at least this %, ranked by discount. Implies include_details.
on_sale_onlyNoOnly wishlist items currently discounted, ranked by discount %. Implies include_details.
steam_machineNoSteam 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.
include_detailsNoReturn full store cards (name, price, discount, reviews, compatibility, tags) per item in one call, instead of just appids. Implied by any filter below.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.17.0
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "not": {}
      -        },
      -        "type": "array"
      -      },
      -      "reason": {
      -        "type": "string"
      -      },
      -      "total": {
      -        "const": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "reason",
      -      "total",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "added": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "appid": {
      -              "type": "number"
      -            },
      -            "priority": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "store_url": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "store_url",
      -            "priority",
      -            "added"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "returned": {
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "returned",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "enriched": {
      -        "description": "How many of `total` Steam actually attached store data to (it caps around the first 100) — every filter below only runs over these, never the full `total`.",
      -        "type": "number"
      -      },
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "added": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "appid": {
      -              "type": "number"
      -            },
      -            "discount_end": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "discount_pct": {
      -              "type": "number"
      -            },
      -            "name": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "original": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "platforms": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "price": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "priority": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "release_date": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "review_count": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "review_label": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "review_percent": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "steam_deck": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_frame": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_machine": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_os": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "store_url": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "tags": {
      -              "description": "The game's most-weighted user tags, most-relevant first — a display sample capped well below the full set, not the complete list. Tag FILTERS (discover_games' and get_wishlist's `tags`) match against the game's COMPLETE tag list, so a filtered result can legitimately not show the tag you filtered on in this array. Absence here is not evidence the game lacks that tag.",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "vr_support": {
      -              "enum": [
      -                "none",
      -                "supported",
      -                "required"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "appid",
      -            "name",
      -            "store_url",
      -            "review_percent",
      -            "review_count",
      -            "review_label",
      -            "platforms",
      -            "steam_deck",
      -            "steam_os",
      -            "steam_machine",
      -            "steam_frame",
      -            "vr_support",
      -            "tags",
      -            "release_date",
      -            "discount_pct",
      -            "discount_end",
      -            "original",
      -            "price",
      -            "priority",
      -            "added"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "matched": {
      -        "description": "How many of the enriched items satisfied the filters, BEFORE the display cap — a big gap between this and `returned` means results were capped, not that fewer items matched.",
      -        "type": "number"
      -      },
      -      "note": {
      -        "type": "string"
      -      },
      -      "returned": {
      -        "description": "How many items are actually in `items` below, after the display cap.",
      -        "type": "number"
      -      },
      -      "total": {
      -        "description": "The player's full wishlist size, including entries Steam never sent store data for (see `enriched`).",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "enriched",
      -      "matched",
      -      "returned",
      -      "items"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "not": {}
      +        },
      +        "type": "array"
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "total": {
      +        "const": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "reason",
      +      "total",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "added": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "appid": {
      +              "type": "number"
      +            },
      +            "priority": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "store_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "store_url",
      +            "priority",
      +            "added"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "returned": {
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "returned",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "enriched": {
      +        "description": "How many entries came with store data. Filters Steam applies itself (tags, steam_deck, mac/linux, the discount floor) cover the whole wishlist; the review %, own-package discount and other compat/platform checks run over these entries only (see `note`).",
      +        "type": "number"
      +      },
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "added": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "appid": {
      +              "type": "number"
      +            },
      +            "discount_end": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "discount_pct": {
      +              "type": "number"
      +            },
      +            "name": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "original": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "platforms": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "price": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "priority": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "release_date": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "review_count": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "review_label": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "review_percent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "steam_deck": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_frame": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_machine": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_os": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "store_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "tags": {
      +              "description": "The game's most-weighted user tags, most-relevant first — a display sample capped well below the full set, not the complete list. Tag FILTERS (discover_games' and get_wishlist's `tags`) match against the game's COMPLETE tag list, so a filtered result can legitimately not show the tag you filtered on in this array. Absence here is not evidence the game lacks that tag.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "vr_support": {
      +              "enum": [
      +                "none",
      +                "supported",
      +                "required"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "appid",
      +            "name",
      +            "store_url",
      +            "review_percent",
      +            "review_count",
      +            "review_label",
      +            "platforms",
      +            "steam_deck",
      +            "steam_os",
      +            "steam_machine",
      +            "steam_frame",
      +            "vr_support",
      +            "tags",
      +            "release_date",
      +            "discount_pct",
      +            "discount_end",
      +            "original",
      +            "price",
      +            "priority",
      +            "added"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "matched": {
      +        "description": "How many wishlist items satisfied the filters, BEFORE the display cap — a big gap between this and `returned` means results were capped, not that fewer items matched.",
      +        "type": "number"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "returned": {
      +        "description": "How many items are actually in `items` below, after the display cap.",
      +        "type": "number"
      +      },
      +      "total": {
      +        "description": "The player's full wishlist size, before any filter.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "enriched",
      +      "matched",
      +      "returned",
      +      "items"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changedv0.14.0
    • changedInput schema / properties / country / description
      Previous value: -"Country (cc) for prices; overrides STEAM_COUNTRY. Implies include_details."New value: +"Country (cc) for prices; overrides STEAM_COUNTRY. Implies include_details. 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."
    • changedInput schema / properties / language / description
      Previous value: -"Store language; overrides STEAM_LANGUAGE. Implies include_details."New value: +"Store language; overrides STEAM_LANGUAGE. Implies include_details. 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.)"
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "not": {}
      -        },
      -        "type": "array"
      -      },
      -      "reason": {
      -        "type": "string"
      -      },
      -      "total": {
      -        "const": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "reason",
      -      "total",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "added": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "appid": {
      -              "type": "number"
      -            },
      -            "priority": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "store_url": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            }
      -          },
      -          "required": [
      -            "store_url",
      -            "priority",
      -            "added"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "returned": {
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "returned",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "enriched": {
      -        "description": "How many of `total` Steam actually attached store data to (it caps around the first 100) — every filter below only runs over these, never the full `total`.",
      -        "type": "number"
      -      },
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "added": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "appid": {
      -              "type": "number"
      -            },
      -            "discount_end": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "discount_pct": {
      -              "type": "number"
      -            },
      -            "name": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "original": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "platforms": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "price": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "priority": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "release_date": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "review_count": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "review_label": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "review_percent": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "steam_deck": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_frame": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_machine": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "steam_os": {
      -              "enum": [
      -                "unknown",
      -                "unsupported",
      -                "playable",
      -                "verified"
      -              ],
      -              "type": "string"
      -            },
      -            "store_url": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "tags": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "vr_support": {
      -              "enum": [
      -                "none",
      -                "supported",
      -                "required"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "appid",
      -            "name",
      -            "store_url",
      -            "review_percent",
      -            "review_count",
      -            "review_label",
      -            "platforms",
      -            "steam_deck",
      -            "steam_os",
      -            "steam_machine",
      -            "steam_frame",
      -            "vr_support",
      -            "tags",
      -            "release_date",
      -            "discount_pct",
      -            "discount_end",
      -            "original",
      -            "price",
      -            "priority",
      -            "added"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "matched": {
      -        "description": "How many of the enriched items satisfied the filters, BEFORE the display cap — a big gap between this and `returned` means results were capped, not that fewer items matched.",
      -        "type": "number"
      -      },
      -      "note": {
      -        "type": "string"
      -      },
      -      "returned": {
      -        "description": "How many items are actually in `items` below, after the display cap.",
      -        "type": "number"
      -      },
      -      "total": {
      -        "description": "The player's full wishlist size, including entries Steam never sent store data for (see `enriched`).",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "enriched",
      -      "matched",
      -      "returned",
      -      "items"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "not": {}
      +        },
      +        "type": "array"
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "total": {
      +        "const": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "reason",
      +      "total",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "added": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "appid": {
      +              "type": "number"
      +            },
      +            "priority": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "store_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "store_url",
      +            "priority",
      +            "added"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "returned": {
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "returned",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "enriched": {
      +        "description": "How many of `total` Steam actually attached store data to (it caps around the first 100) — every filter below only runs over these, never the full `total`.",
      +        "type": "number"
      +      },
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "added": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "appid": {
      +              "type": "number"
      +            },
      +            "discount_end": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "discount_pct": {
      +              "type": "number"
      +            },
      +            "name": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "original": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "platforms": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "price": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "priority": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "release_date": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "review_count": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "review_label": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "review_percent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "steam_deck": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_frame": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_machine": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "steam_os": {
      +              "enum": [
      +                "unknown",
      +                "unsupported",
      +                "playable",
      +                "verified"
      +              ],
      +              "type": "string"
      +            },
      +            "store_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "tags": {
      +              "description": "The game's most-weighted user tags, most-relevant first — a display sample capped well below the full set, not the complete list. Tag FILTERS (discover_games' and get_wishlist's `tags`) match against the game's COMPLETE tag list, so a filtered result can legitimately not show the tag you filtered on in this array. Absence here is not evidence the game lacks that tag.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "vr_support": {
      +              "enum": [
      +                "none",
      +                "supported",
      +                "required"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "appid",
      +            "name",
      +            "store_url",
      +            "review_percent",
      +            "review_count",
      +            "review_label",
      +            "platforms",
      +            "steam_deck",
      +            "steam_os",
      +            "steam_machine",
      +            "steam_frame",
      +            "vr_support",
      +            "tags",
      +            "release_date",
      +            "discount_pct",
      +            "discount_end",
      +            "original",
      +            "price",
      +            "priority",
      +            "added"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "matched": {
      +        "description": "How many of the enriched items satisfied the filters, BEFORE the display cap — a big gap between this and `returned` means results were capped, not that fewer items matched.",
      +        "type": "number"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "returned": {
      +        "description": "How many items are actually in `items` below, after the display cap.",
      +        "type": "number"
      +      },
      +      "total": {
      +        "description": "The player's full wishlist size, including entries Steam never sent store data for (see `enriched`).",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "enriched",
      +      "matched",
      +      "returned",
      +      "items"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed2 schema fields changedv0.13.1
    • changedInput schema / properties / country / description
      Previous value: -"Country (cc) for prices; overrides STEAM_COUNTRY. Only meaningful for store cards, so setting it implies include_details — the light appid list carries no price."New value: +"Country (cc) for prices; overrides STEAM_COUNTRY. Implies include_details."
    • changedInput schema / properties / language / description
      Previous value: -"Store language; overrides STEAM_LANGUAGE. Only meaningful for store cards, so setting it implies include_details — the light appid list carries no price."New value: +"Store language; overrides STEAM_LANGUAGE. Implies include_details."
  4. Changed4 schema fields changedv0.12.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / min_discount / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / min_discount / minimum
      Removed value: -1
    • changedInput schema / properties / tags / description
      Previous value: -"Keep only wishlist items carrying ALL of these user tags (case-insensitive), e.g. ['Metroidvania']. Implies include_details."New value: +"Keep only wishlist items carrying ALL of these user tags (case-insensitive), e.g. ['Metroidvania']. Use exact Steam tag names — a misspelled/unrecognized one isn't an error, it just matches nothing. Implies include_details."
  5. Addedv0.10.4
  6. Removedv0.10.2
  7. Addedv0.10.2
  8. Removedv0.8.0
  9. Changed2 schema fields changedv0.7.0
    • addedInput schema / properties / steam_machine
      Added value: +{
      +  "description": "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.",
      +  "enum": [
      +    "playable",
      +    "verified"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / steam_os / description
      Previous value: -"SteamOS compatibility — how well it runs on SteamOS / the Steam Machine (via Proton): 'verified' = SteamOS-Verified only; 'playable' = Playable or Verified. For a NATIVE Linux build instead, use platform:'linux'."New value: +"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."
  10. Changed11 schema fields changedv0.5.0
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "Country (cc) for prices; overrides STEAM_COUNTRY. Only meaningful for store cards, so setting it implies include_details — the light appid list carries no price.",
      +  "pattern": "^[A-Za-z]{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / include_details
      Added value: +{
      +  "description": "Return full store cards (name, price, discount, reviews, compatibility, tags) per item in one call, instead of just appids. Implied by any filter below.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "Store language; overrides STEAM_LANGUAGE. Only meaningful for store cards, so setting it implies include_details — the light appid list carries no price.",
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / min_discount
      Added value: +{
      +  "description": "Keep only items discounted at least this %, ranked by discount. Implies include_details.",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / min_review
      Added value: +{
      +  "description": "Keep only items with at least this positive-review %. Implies include_details.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / on_sale_only
      Added value: +{
      +  "description": "Only wishlist items currently discounted, ranked by discount %. Implies include_details.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / platform
      Added value: +{
      +  "description": "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.",
      +  "enum": [
      +    "windows",
      +    "mac",
      +    "linux"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steam_deck
      Added value: +{
      +  "description": "Steam Deck compatibility (runs via Proton): 'verified' = Deck-Verified only; 'playable' = Playable or Verified. Not a native Linux build — see `platform` for that.",
      +  "enum": [
      +    "playable",
      +    "verified"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steam_frame
      Added value: +{
      +  "description": "Steam Frame (VR headset) compatibility: 'verified' = Frame-Verified only; 'playable' = Playable or Verified.",
      +  "enum": [
      +    "playable",
      +    "verified"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steam_os
      Added value: +{
      +  "description": "SteamOS compatibility — how well it runs on SteamOS / the Steam Machine (via Proton): 'verified' = SteamOS-Verified only; 'playable' = Playable or Verified. For a NATIVE Linux build instead, use platform:'linux'.",
      +  "enum": [
      +    "playable",
      +    "verified"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / tags
      Added value: +{
      +  "description": "Keep only wishlist items carrying ALL of these user tags (case-insensitive), e.g. ['Metroidvania']. Implies include_details.",
      +  "items": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
  11. Changed2 schema fields changedv0.3.0
    • changedInput schema / properties / steamid / description
      Previous value: -"17-digit SteamID64. Convert a vanity/custom URL name with resolve_vanity_url first."New value: +"17-digit SteamID64. Omit to use the STEAM_ID configured on the server. Convert a vanity/custom URL name with resolve_vanity_url first."
    • removedInput schema / required
      Removed value: -[
      -  "steamid"
      -]
  12. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, but the description adds the behaviors that actually matter for correct interpretation: found:false is ambiguous between private and empty (read `reason`), the 100-item light cap and 50-item detailed cap, pre-cap vs post-cap counting (`matched`, `returned` vs `total`), and which filters run on Steam's side versus this server's over up to 1000 entries with a `note` when truncation occurred. This is well beyond annotation coverage; only the return-shape details are left implicit, and an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb, cap, and the found:false trap, which is correct ordering. But the body is one very long parenthetical-heavy paragraph where filter semantics, ranking, and server-vs-Steam execution are interleaved; a reader must re-scan to extract the cap and ranking rules. Nearly every clause earns its place, but the density hurts scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with an output schema, this covers what the schema cannot: the found:false ambiguity and how to disambiguate, cap behavior, ranking rules, partial-coverage warnings via `note`, and the region/language silent-fallback traps. Nothing an agent needs in order to call it correctly or interpret a surprising result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter definitions already carry the load and a 3 would be the floor. The description still adds cross-parameter semantics the schema states only piecemeal: that every filter implicitly switches to detailed cards, that results re-rank by discount when a discount filter is set, and that filters apply before the cap. It doesn't add syntax detail beyond the schema, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List a player's Steam wishlist by SteamID64') and immediately distinguishes the default light mode from the detailed-card mode. It also names the two siblings an agent would confuse it with (resolve_vanity_url for ID conversion, get_items for follow-up details), so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use include_details ('no need to follow up with get_items') versus the default light list, and that any filter implies the detailed view because the appid list has nothing to filter on. It also gives a worked example ('top metroidvanias on my wishlist with a good discount and reviews' → tags + min_discount + min_review) and points to resolve_vanity_url for vanity names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.