Skip to main content
Glama

Get game reviews

get_game_reviews
Read-only

Fetch a Steam game's review summary and recent reviews by appid. See score label, positive/negative totals, percentages, and review excerpts.

Instructions

Get the review summary (score label, positive/negative counts, %) and a few recent reviews for a game by appid. Review text over 600 characters is truncated. An unknown appid comes back as summary 'No user reviews' with zero counts rather than an error — Steam answers success for any id — so that result means either no such appid or a game nobody has reviewed yet; confirm the appid with get_game if that distinction matters. For long-term trend instead of a snapshot, use get_review_histogram. Get the appid from search_games. No API key required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoOnly positive or negative reviews. Default 'all'. Steam only computes the summary (score label, totals, %) for 'all' — filtering to positive/negative nulls those fields out, leaving only the review excerpts.all
appidYesSteam application id (appid). Get it from search_games.
limitNoHow many recent reviews (1-20). Default 5.
review_languageNoFilter reviews by language. Use Steam's full language name — english, russian, schinese — NOT an ISO code like en/ru/zh: Steam answers an unrecognized value with zero reviews rather than an error, so a 9M-review game reads as having none. Default 'all'. Setting this ALSO rescopes the summary counts (total_reviews / positive / negative / %) to that language — they are no longer the game's global totals. Leave it at 'all' when you want those.all

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
reviewsYes
summaryYes
positive_pctYes
total_reviewsYes
total_negativeYes
total_positiveYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv0.14.0
    • removedOutput schema / properties / positive_pct / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / positive_pct / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / reviews / items / properties / author_playtime_hours / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / reviews / items / properties / author_playtime_hours / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / reviews / items / properties / text / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / reviews / items / properties / text / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / reviews / items / properties / voted_up / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / reviews / items / properties / voted_up / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / summary / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / summary / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / total_negative / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / total_negative / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / total_positive / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / total_positive / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / total_reviews / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / total_reviews / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  2. Changed2 schema fields changedv0.13.1
    • changedInput schema / properties / review_language / description
      Previous value: -"Filter reviews by language, e.g. 'english'. Default 'all'."New value: +"Filter reviews by language. Use Steam's full language name — english, russian, schinese — NOT an ISO code like en/ru/zh: Steam answers an unrecognized value with zero reviews rather than an error, so a 9M-review game reads as having none. Default 'all'. Setting this ALSO rescopes the summary counts (total_reviews / positive / negative / %) to that language — they are no longer the game's global totals. Leave it at 'all' when you want those."
    • addedInput schema / properties / review_language / minLength
      Added value: +1
  3. Changed6 schema fields changedv0.12.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / limit / default
      Added value: +5
    • addedInput schema / properties / limit / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / limit / minimum
      Removed value: -1
    • addedInput schema / properties / review_language / default
      Added value: +"all"
    • addedInput schema / properties / type / default
      Added value: +"all"
  4. Addedv0.10.2
  5. Removedv0.9.0
  6. Addedv0.8.0
  7. Removedv0.8.0
  8. 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 carry readOnlyHint and openWorldHint, and the description adds significant behavior beyond that: 600-character truncation, no API key required, unknown appids returning a zero-count summary instead of an error, and language filtering rescoping summary counts. 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.

Conciseness5/5

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

The description is dense but front-loaded with the core behavior, then adds edge cases, alternatives, input sourcing, and auth-free confirmation. Every sentence earns its place and none merely restates the schema.

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?

The description covers result contents, truncation, unknown-appid behavior, the alternative tool for trends, appid provenance, and the side effect of language filtering. The output schema handles return shape, so no redundant explanation is needed. An agent has everything required to call it correctly.

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 the baseline is 3. The description goes further by explaining that an unknown appid yields a zero-count result rather than an error and by clarifying that language filtering changes the meaning of the summary counts, which adds practical semantic value beyond the schema.

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 states a specific verb and resource: get the review summary (score label, positive/negative counts, %) and a few recent reviews for a game by appid. It explicitly differentiates from the sibling get_review_histogram by naming it as the trend alternative, so an agent can distinguish snapshot vs trend use cases.

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?

Provides explicit when-not-to-use guidance: 'For long-term trend instead of a snapshot, use get_review_histogram.' It also tells the agent where to source the appid (search_games) and when to confirm an ambiguous empty result with get_game. Clear context with an exclusion and alternative.

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