Skip to main content
Glama

Batch store card for many games

get_items
Read-only

Retrieve price, discount, review score, hardware compatibility, user tags, and release date for multiple Steam games by appid in one call. Check a wishlist or library without per-game requests.

Instructions

Get price/discount, review % (positive), hardware compatibility, popular user tags and release date for a LIST of games by appid in ONE keyless call. The efficient way to price-, rating-, tag- and compat-check a wishlist or library without a request per game. For a bigger batch (up to 250 appids) when you only need price, use get_prices instead. An unknown/invalid appid comes back as its own row marked available:false — rows stay in the order you passed them, one per id, never dropped, same as get_prices. Each item carries four compatibility fields, each verified/playable/unsupported/unknown: steam_deck (Steam Deck), steam_os (SteamOS in general), steam_machine (the Steam Machine console specifically), and steam_frame (Steam Frame VR headset); a vr_support flag (none/supported/required — distinct from steam_frame, which is a Steam Frame HARDWARE compat rating, not whether the game itself has a VR mode); a tags list (top user tags like 'Roguelike', 'Souls-like', most-relevant first); a clickable store_url to the game's Steam page; and, when on sale, discount_end (ISO UTC time the discount expires — for 'how long is this deal valid'). To find NEW games by filter (discount, rating, tags, compat) instead of pricing a list you already have, use discover_games instead. Get appids from search_games / get_wishlist / get_owned_games.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appidsYesSteam appids (1-50). Split a longer list across calls.
countryNoCountry (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.
languageNoStore 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`.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
itemsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.14.0
    • changedInput schema / properties / country / description
      Previous value: -"Country (cc) for prices/currency; overrides STEAM_COUNTRY for this call."New value: +"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."
    • changedInput schema / properties / language / description
      Previous value: -"Store language (e.g. english, russian); overrides STEAM_LANGUAGE for this call."New value: +"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`."
    • changedOutput schema / properties / items / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "No store data for this appid: either it doesn't exist, or it isn't sold in the requested country. Never dropped from the list, so rows line up with the given appids.",
      -    "properties": {
      -      "appid": {
      -        "type": "number"
      -      },
      -      "available": {
      -        "const": false,
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "appid",
      -      "available"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "appid": {
      -        "type": "number"
      -      },
      -      "available": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "coming_soon": {
      -        "type": "boolean"
      -      },
      -      "is_free": {
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "platforms": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "price": {
      -        "anyOf": [
      -          {
      -            "anyOf": [
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "discount_end": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "discount_pct": {
      -                    "type": "number"
      -                  },
      -                  "final": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "original": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "discount_pct",
      -                  "discount_end",
      -                  "final",
      -                  "original"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "is_free": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "is_free"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "null does NOT mean free: Steam returns no price block when the game isn't sold in the requested country, isn't released yet, or has no purchase option. Check is_free and coming_soon before concluding anything, and re-check under another `country`."
      -      },
      -      "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",
      -      "available",
      -      "is_free",
      -      "price",
      -      "coming_soon"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "No store data for this appid: either it doesn't exist, or it isn't sold in the requested country. Never dropped from the list, so rows line up with the given appids.",
      +    "properties": {
      +      "appid": {
      +        "type": "number"
      +      },
      +      "available": {
      +        "const": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "appid",
      +      "available"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "appid": {
      +        "type": "number"
      +      },
      +      "available": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "coming_soon": {
      +        "type": "boolean"
      +      },
      +      "is_free": {
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "platforms": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "discount_end": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "discount_pct": {
      +                    "type": "number"
      +                  },
      +                  "final": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "original": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "discount_pct",
      +                  "discount_end",
      +                  "final",
      +                  "original"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "is_free": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "is_free"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "null does NOT mean free: Steam returns no price block when the game isn't sold in the requested country, isn't released yet, or has no purchase option. Check is_free and coming_soon before concluding anything, and re-check under another `country`."
      +      },
      +      "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",
      +      "available",
      +      "is_free",
      +      "price",
      +      "coming_soon"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changedv0.13.1
    • changedInput schema / properties / appids / description
      Previous value: -"Steam appids (1-100)."New value: +"Steam appids (1-50). Split a longer list across calls."
    • changedInput schema / properties / appids / maxItems
      Previous value: -100New value: +50
    • changedOutput schema / properties / items / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "appid": {
      -        "type": "number"
      -      },
      -      "available": {
      -        "const": false,
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "appid",
      -      "available"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "appid": {
      -        "type": "number"
      -      },
      -      "coming_soon": {
      -        "type": "boolean"
      -      },
      -      "is_free": {
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "platforms": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "price": {
      -        "anyOf": [
      -          {
      -            "anyOf": [
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "discount_end": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "discount_pct": {
      -                    "type": "number"
      -                  },
      -                  "final": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "original": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "discount_pct",
      -                  "discount_end",
      -                  "final",
      -                  "original"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "is_free": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "is_free"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          {
      -            "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",
      -      "is_free",
      -      "price",
      -      "coming_soon"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "No store data for this appid: either it doesn't exist, or it isn't sold in the requested country. Never dropped from the list, so rows line up with the given appids.",
      +    "properties": {
      +      "appid": {
      +        "type": "number"
      +      },
      +      "available": {
      +        "const": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "appid",
      +      "available"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "appid": {
      +        "type": "number"
      +      },
      +      "available": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "coming_soon": {
      +        "type": "boolean"
      +      },
      +      "is_free": {
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "platforms": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "discount_end": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "discount_pct": {
      +                    "type": "number"
      +                  },
      +                  "final": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "original": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "discount_pct",
      +                  "discount_end",
      +                  "final",
      +                  "original"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "is_free": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "is_free"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "null does NOT mean free: Steam returns no price block when the game isn't sold in the requested country, isn't released yet, or has no purchase option. Check is_free and coming_soon before concluding anything, and re-check under another `country`."
      +      },
      +      "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",
      +      "available",
      +      "is_free",
      +      "price",
      +      "coming_soon"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changedv0.12.1
    • addedInput schema / additionalProperties
      Added value: +false
  4. Addedv0.10.4
  5. Removedv0.10.2
  6. Addedv0.10.2
  7. Removedv0.8.1
  8. Changed2 schema fields changedv0.5.0
    • changedInput schema / properties / country / description
      Previous value: -"Country (cc) for prices; overrides STEAM_COUNTRY."New value: +"Country (cc) for prices/currency; overrides STEAM_COUNTRY for this call."
    • changedInput schema / properties / language / description
      Previous value: -"Store language; overrides STEAM_LANGUAGE."New value: +"Store language (e.g. english, russian); overrides STEAM_LANGUAGE for this call."
  9. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the call read-only. The description adds important behavior beyond that: unknown appids come back as available:false rows, row order is preserved, no rows are dropped, discount_end is ISO UTC, and language failures silently return English/empty tags. It also clarifies the VR/compat distinction. No contradiction with annotations.

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

Conciseness4/5

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

The description is long but dense and front-loaded with the core purpose. Every major behavioral detail earns its place, though a couple of parenthetical clarifications could be tightened. It is appropriately structured for a tool with this many edge-case semantics.

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 3-parameter tool with an output schema, the description covers the remaining context completely: batch limits, alternatives, error/edge behavior, field semantics, and input gotchas. An agent has everything needed to select and invoke this tool correctly.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds meaning beyond the schema: appids are positional and never dropped, country typos silently resolve to US prices, and language must be a Steam language name rather than an ISO code, with empty tags as a failure symptom. This materially improves correct invocation.

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?

The description names a specific verb and resource: get price/discount, review %, hardware compatibility, tags, and release date for a list of appids in one call. It also differentiates itself from get_prices and discover_games, so an agent can tell which tool is which.

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?

The description explicitly states when to use an alternative: use get_prices for price-only batches up to 250 appids, and use discover_games to find new games by filter. It also points to search_games, get_wishlist, and get_owned_games as sources for appids. This is strong routing guidance.

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