getcheapgames
Server Details
Cheapest legit PC and console game keys across stores in 40 countries, plus deals and free games.
- Status
- Healthy
- Uptime
- 99.8% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- getcheapgames/claude-plugin
- GitHub Stars
- 0
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: searching by title, finding by filters, listing deals, free-to-play games, franchise games, publisher games, individual offers, stores, and news. The descriptions explicitly cross-reference the correct tool for adjacent use cases (e.g., search_games vs find_games vs list_deals), leaving little room for misselection.
All tool names follow a consistent snake_case verb_noun pattern: find_games, get_franchise_games, get_game_offers, get_publisher_games, list_deals, list_free_to_play, list_news, list_stores, search_games. The verb choices (find/get/list/search) are predictable and align with the operation type.
Nine tools is well within the typical 3–15 range for a focused domain. Each tool earns its place by covering a distinct retrieval pattern without redundant or trivial entries.
The surface covers the core price-comparison workflows: title search, filtered discovery, franchise/publisher browsing, individual store offers, deals, free-to-play, stores, and editorial content. Minor gaps remain—such as no dedicated tool to fetch a single game’s full detail page or a full news article body—but agents can work around these via existing summaries and offer data.
Available Tools
9 toolsfind_gamesFind games by genre, platform and priceARead-onlyInspect
Find paid games by genre, platform and highest price, most popular and best rated first. Use it for open requests such as "a strategy game under 20 on PC"; to look up a named game use search_games, for free games list_free_to_play, and for the biggest discounts list_deals. Every filter is optional and they combine: genre is a Steam genre, platform pc, xbox, playstation or switch, and max_price is in the currency country sets (20 means 20 GBP for gb), met by an in-stock key's listed price. The ranking weights Steam's share of positive reviews by review count, games with 500 reviews or more ahead of the rest; no match gives an empty list. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | A Steam genre, spelled as Steam spells it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy. Any other value matches nothing. | |
| limit | No | Games to return, 1-20. Defaults to 5. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). | |
| platform | No | Only keys for this platform: pc, xbox, playstation or switch. Omit for all. | |
| max_price | No | The highest listed price, in the currency of `country` (e.g. 20 means 20 EUR for ie, 20 GBP for gb). |
Output Schema
| Name | Required | Description |
|---|---|---|
| genre | No | |
| market | No | |
| ranking | No | |
| results | Yes | |
| currency | No | |
| maxPrice | No | |
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description goes well beyond them: it discloses the ranking formula (Steam review share weighted by count, 500+ review games promoted), that no match yields an empty list, that links route through getcheapgames.com with partner tracking, and that listed prices exclude marketplace checkout fees. That is real behavioral context an agent could not infer. The only gap is a lack of anything about result ordering stability or pagination beyond `limit`.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then routing, then parameter notes, then behavioral caveats — a sensible order with no filler. It runs long as a single unbroken paragraph, which makes the routing sentence easy to miss on a fast read, but each sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return shape needn't be explained, annotations carry the safety profile, and all five parameters are documented in schema and reinforced in prose. The description also covers edge behavior (empty result, currency fallback to ie) — nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine coupling semantics the schema states only in isolation: `max_price` is denominated in the currency `country` sets and is met by an in-stock key's listed price. It also frames all filters as optional and combinable, which is a useful cross-parameter statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find') plus the resource ('paid games') and the three filter axes (genre, platform, highest price), and immediately contrasts itself with search_games, list_free_to_play and list_deals. An agent can route to it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case with a worked example ('a strategy game under 20 on PC') and names three alternatives with the condition that selects each. Exclusions are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_franchise_gamesList the games in a franchiseARead-onlyInspect
Return the games in one franchise or series, such as every Call of Duty, with each one's lowest listed price per platform: grouped by sub-series, newest release first, each game's editions after it. Use it for questions about a whole series; for one publisher's catalogue use get_publisher_games, and for one game's store offers get_game_offers. name must be the franchise's exact name, as search_games lists it under franchises (Assassin's Creed), and an unknown name returns an error result. total is the franchise's full size, which can exceed limit. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The franchise's exact name, e.g. "Grand Theft Auto" or "Assassin's Creed": a `franchises` name from a search result. | |
| limit | No | Games to return, 1-100. Defaults to 24. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| games | Yes | |
| total | No | |
| pageUrl | No | |
| franchise | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only, non-destructive, open-world profile; the description adds the failure mode ('an unknown name returns an error result'), the limit semantics ('`total` is the franchise's full size, which can exceed `limit`'), and commercial disclosures (links carry partner tracking, prices exclude the service fee added at checkout). These are non-obvious traits an agent cannot infer from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The output ordering (grouped by sub-series, newest first, editions nested) and the sibling routing are front-loaded, which is the right priority. The final sentence on tracking links and checkout fees is longer than strictly necessary for tool selection, though it does carry genuine disclosure value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't restate return fields, yet it still previews the result structure and ordering so the agent can decide whether to call it. Combined with the error case, the limit/total distinction, and sibling routing, nothing an agent needs for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns above that by reinforcing that `name` is an exact franchise string sourced from search_games and by explaining the relationship between `total` and `limit` that the schema cannot express. It doesn't add anything for `country`, but that parameter is already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Return the games in one franchise or series') and immediately disambiguates from the sibling tools get_publisher_games and get_game_offers. It also states the payload shape (each game's lowest listed price per platform), so an agent knows exactly what comes back without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the exact condition for this tool ('questions about a whole series') and routes the agent to the two most confusable alternatives with their own conditions ('one publisher's catalogue use get_publisher_games', 'one game's store offers get_game_offers'). It further constrains input with the prerequisite that `name` must match a franchise name as listed by search_games.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_offersGet all offers for a gameARead-onlyInspect
Return every tracked offer for one game: each store's listed price, region, region lock, stock and seller, plus best, the cheapest in-stock offer in the market's currency. Use it when the reader wants to compare stores, editions or regions for a game, after search_games, find_games or list_deals has given its slug; their summaries already carry the lowest price per platform. slug is lower-case with hyphens (elden-ring), and an unknown slug returns an error result; country sets the currency best is chosen in and which keys are flagged regionLocked, as they may not activate in that market. Offers follow the page's order, official stores first and then marketplaces, each cheapest first, so the first offer is not always the cheapest; each says when its price was last checked. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The game's slug, lower-case with hyphens, e.g. "elden-ring": the `slug` field of a search, deals or finder result. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| best | Yes | The cheapest in-stock offer; null when none is. |
| slug | Yes | |
| links | No | |
| title | Yes | |
| offers | Yes | |
| pageUrl | Yes | |
| imageUrl | No | |
| ordering | No | |
| publisher | No | |
| disclosure | No | |
| releaseYear | No | |
| pageCurrency | Yes | The market's currency. |
| pricesByPlatform | No | Lowest price per platform, e.g. {"PC": "19.99 EUR"}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds substantial behavior beyond them: unknown slug returns an error result, offers follow page order (official stores then marketplaces, each cheapest first, so the first offer is not always cheapest), each offer carries a last-checked timestamp, links route through getcheapgames.com with partner tracking, and listed prices exclude the marketplace service fee. This is unusually rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the opening clause, and most sentences carry distinct information. It is dense and runs long as a single block, with several trailing caveats (links, fees, timestamps) that could be tightened, but nothing is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be documented, and the description still covers purpose, when-to-use, parameter behavior, ordering semantics, error handling, and pricing/link caveats. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: it explains that regionLocked keys 'may not activate in that market', clarifying the practical consequence of the country parameter. Format and fallback behavior are already in the schema, so this is value-add rather than full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Return every tracked offer for one game') and enumerates the returned fields (price, region, region lock, stock, seller, best). It also distinguishes itself from search_games, find_games, and list_deals by noting those summaries 'already carry the lowest price per platform', so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the reader wants to compare stores, editions or regions') and explicit prerequisites ('after search_games, find_games or list_deals has given its slug'). It also tells the agent when the sibling tools are sufficient, which is a real exclusion criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publisher_gamesList a publisher's gamesARead-onlyInspect
Return one publisher's games, alphabetically by title, with each one's lowest listed price per platform. Use it for a publisher's catalogue, such as everything from Rockstar Games; for a series, which can span publishers, use get_franchise_games, and for one game's store offers get_game_offers. slug is the publisher's id as search_games lists it under publishers (rockstar-games), and an unknown slug returns an error result. Only priced games are returned; total is the full count, which can exceed limit. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The publisher's slug, e.g. "rockstar-games": a `publishers` slug from a search result. | |
| limit | No | Games to return, 1-100. Defaults to 24. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| games | Yes | |
| total | No | |
| pageUrl | No | |
| publisher | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses that only priced games are returned, that `total` is the full count which can exceed `limit`, that links route through getcheapgames.com with partner tracking, and that listed prices exclude the marketplace checkout fee. Those are real behavioral traits an agent could not infer from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core purpose, then routes to siblings, then covers parameters and caveats. It is a dense single block and somewhat long, but each sentence carries distinct information (ordering, error behavior, total vs limit, tracking links, fee exclusion) rather than repeating structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't define return shapes, and it still calls out the few return-value facts that matter operationally (only priced games, total may exceed limit). For a 3-parameter read tool with full schema coverage and annotations, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by telling the agent where the slug comes from (a `publishers` slug as search_games lists it, with a worked example) and by linking the limit/total relationship. Country semantics are left entirely to the schema, which is already thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Return one publisher's games") and adds scope details: alphabetical ordering, one entry per title, and the lowest listed price per platform. It explicitly names the two sibling tools it is not (get_franchise_games for series, get_game_offers for a single game), so an agent can distinguish it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete selection rule with alternatives: use this for a publisher's catalogue such as Rockstar Games, get_franchise_games for a series that can span publishers, and get_game_offers for one game's store offers. It also states a failure condition (an unknown slug returns an error), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dealsList the biggest savingsARead-onlyInspect
Return today's biggest savings across the catalogue: paid games whose cheapest in-stock key is furthest below the regular price (the official store's, where it sells the game), largest percentage first, as on the site's Deals page. Use it for what is on sale right now; for a named game use search_games, and to filter by genre, platform or budget use find_games. country sets the currency, and so which offers count. Each game includes its saving and its 30-day low. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Games to return, 1-50. Defaults to 10. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| games | Yes | |
| pageUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and open-world, but the description adds genuinely new behavior: links route through getcheapgames.com with store partner tracking, and listed prices exclude the service fee marketplaces add at checkout. It also flags that `country` changes which offers count, not just the currency. Not a full 5 only because return shape partly overlaps the existing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and ranking rule, then alternatives, then pricing/monetization caveats. Each sentence carries distinct information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not describe return values, and it still calls out that each game carries a saving and 30-day low. Combined with the fee and tracking disclosures and the market semantics of `country`, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in detail; the description still adds the consequence that `country` determines 'which offers count', i.e. it changes deal eligibility and ranking, not just display currency. That is a meaningful nudge for an agent choosing a market, though most of the mechanics live in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact ranking rule: paid games whose cheapest in-stock key is furthest below the regular price, sorted by largest percentage first. The clarification that the baseline is the official store's price (where it sells the game) removes the main ambiguity in 'savings'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: use this for what is on sale right now, use search_games for a named game, use find_games to filter by genre/platform/budget. Both the use case and the two alternatives are named with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_free_to_playSuggest free-to-play gamesARead-onlyInspect
Return free-to-play games, which cost nothing to play, most reviewed on Steam first. Use it when the reader wants something free; for paid games within a budget use find_games, and for discounts list_deals. genre (a Steam genre) and platform (pc, xbox, playstation or switch) narrow the list and combine; total is the full count, which can exceed limit. There are no prices and no promoted placements. The result also says where signed-in members claim the time-limited free-to-keep giveaways, which are not listed here. Each game links to its page on getcheapgames.com.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | A Steam genre, spelled as Steam spells it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy. Any other value matches nothing. | |
| limit | No | Games to return, 1-24. Defaults to 5. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). | |
| platform | No | Only keys for this platform: pc, xbox, playstation or switch. Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| games | Yes | |
| total | No | |
| market | No | |
| pageUrl | No | |
| ordering | No | |
| freeToKeep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), but the description adds genuinely non-structured context: no prices, no promoted placements, and a pointer to where the time-limited free-to-keep giveaways are claimed instead. It stops short of return-shape or pagination detail, but the output schema covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and ordering are front-loaded, then usage routing, then parameters and caveats. Slightly dense as one paragraph and 'free-to-play games, which cost nothing to play' is mildly redundant, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it still covers filtering behavior, exclusions (no prices, no promotions), and where related giveaways live. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds combination semantics not present in the schema ('genre and platform ... combine') and clarifies that `total` is the full count and can exceed `limit`, which disambiguates a field the input schema does not define. It leaves `country` entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return free-to-play games') plus the ordering rule ('most reviewed on Steam first'). It names the siblings it is not (find_games for paid, list_deals for discounts), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection condition ('when the reader wants something free') and routes two adjacent intents to named alternatives with their own conditions. This is when/when-not/alternatives in one sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_newsLatest news, guides, reviews and dealsARead-onlyInspect
Return getcheapgames' latest editorial posts, newest first: news, buying guides, reviews, deals roundups and videos. Use it for gaming news or the site's articles; for prices use search_games or get_game_offers. tag keeps one kind, and query keeps posts whose title or summary contains its words, ignoring case, among the newest 48; both combine. country picks the language, a post's translation where it has one and English otherwise; none found gives an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Only posts of this kind: news, guide, review, deals or video. | |
| limit | No | Posts to return, 1-12. Defaults to 5. | |
| query | No | Words to find in a post's title or summary, e.g. "GTA 6". | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tag | No | |
| posts | Yes | |
| query | No | |
| market | No | |
| pageUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), so the description uses its space for behavior the annotations cannot convey: newest-first ordering, case-insensitive query matching restricted to the newest 48 posts, tag/query combining, and the translation/English fallback plus empty-list result when nothing is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the verb and resource, and every sentence carries information with no filler. It is on the dense/long side for a list tool, packing filtering, combination, and fallback rules into one paragraph, though nothing is genuinely wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value shape needn't be restated; the description instead covers everything the agent needs to call it correctly: ordering, filtering semantics, parameter interaction, country/language fallback, and the empty-result case. Complete for a read-only, four-optional-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: `query` matches title *or* summary, case-insensitively, and only within the newest 48 posts; `tag` and `query` combine; `country` selects a post's translation when available, otherwise English. None of this is in the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Return getcheapgames' latest editorial posts') and enumerates the content scope (news, guides, reviews, deals, videos). It explicitly distinguishes this tool from search_games and get_game_offers, which cover pricing, so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it ('for gaming news or the site's articles') and names the exact alternative tools for the competing need ('for prices use search_games or get_game_offers'). The tag/query combination rules and country behavior are also spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_storesList compared storesARead-onlyInspect
Return the stores getcheapgames compares, official stores and key marketplaces, with each one's coverage in the market's currency. Use it to say which stores are covered or which most often has the lowest price; for one game's price at each store use get_game_offers. country sets the currency the counts are taken in: timesCheapest is how many of the ofGamesCompared games a store is cheapest for right now, and a store with nothing priced in that currency has null counts, not zero. Also returns how offers are ranked and the site's totals of games and offers tracked.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| stores | Yes | |
| currency | No | |
| gamesTracked | No | |
| offersTracked | No | |
| rankingMethod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/non-destructive, so safety is covered. The description adds real behavioral context beyond that: stores with nothing priced in the chosen currency return null counts, not zero, and the response includes ranking methodology and site totals. That null-vs-zero caveat is exactly the kind of non-obvious trait that prevents misreading results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then the parameter's effect. Dense but every sentence carries weight. Slightly heavy on return-field explanation (timesCheapest, ofGamesCompared) that the output schema could carry, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param read tool with annotations and an output schema, the definition is essentially complete: purpose, usage, alternative, and the null-count gotcha are all present. The explanation of ranking and totals is arguably redundant with the output schema but harmless.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaning beyond the schema by explaining what `country` affects in the output — the currency the counts are taken in — and defines timesCheapest/ofGamesCompared, which the schema does not. That is genuine added value on top of a fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (the stores getcheapgames compares, official stores and key marketplaces), plus the scope (coverage in the market's currency). It explicitly names the sibling it is not — get_game_offers — so an agent can distinguish them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use cases ('which stores are covered or which most often has the lowest price') and routes the alternative case to get_game_offers ('for one game's price at each store'). Both the selection condition and the alternative are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gamesSearch gamesARead-onlyInspect
Search games by title and return each match's lowest listed price per platform, plus the franchises and publishers whose names match. Use it when the reader names a game, series or publisher, or to get the slug that get_game_offers needs; for open requests by genre, platform or budget use find_games, and for what is on sale use list_deals. query is matched against titles, typo-tolerant: titles starting with it first, then titles containing it, then the closest. Only priced games are returned, and no match gives empty lists, not an error. Links go through getcheapgames.com and carry the stores' partner tracking; listed prices exclude the service fee marketplaces add at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Games to return, 1-50. Defaults to 10. | |
| query | Yes | A game title or part of one, e.g. "Elden Ring" or "cod"; also matched against franchise and publisher names. | |
| country | No | Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No | |
| market | No | |
| results | Yes | |
| franchises | No | |
| publishers | No | |
| resultCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/safe profile, and the description adds genuinely new behavior: typo-tolerant ranking order (prefix, then contains, then closest), only priced games returned, empty lists rather than an error on no match, and links carrying store partner tracking. The note that listed prices exclude checkout service fees pre-empts a likely misread of the results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then alternatives, then matching semantics, then caveats — a sensible order. It is a dense paragraph and the closing link/fee sentences run long, but each carries information an agent would otherwise have to discover by trial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described. With routing to three siblings, empty-result behavior, matching order and pricing caveats all covered for a 3-parameter read tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already explains all three parameters, setting the baseline at 3. The description still adds value by explaining how query matching is ranked and how fuzzy it is, though it says nothing about limit or country beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Search games by title') and states the return payload (lowest listed price per platform, plus matching franchises/publishers). That is enough to distinguish it from find_games, get_game_offers and list_deals without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger ('when the reader names a game, series or publisher') and the secondary use ('to get the slug that get_game_offers needs'). It also routes three named alternatives — find_games for genre/platform/budget, list_deals for sales — with the selecting condition attached to each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Changed
find_games2 fields changed- changed
Output schema / properties / results / items / properties / bestListedPrice / descriptionPrevious value: -"The cheapest in-stock listed price."New value: +"The cheapest in-stock price of a key that activates in the market." - added
Output schema / properties / results / items / properties / bestMayNotActivateHereAdded value: +{ + "description": "True when every key is region-locked for the market, so bestListedPrice is a locked key's.", + "type": [ + "boolean", + "null" + ] +}
- Changed
get_franchise_games2 fields changed- changed
Output schema / properties / games / items / properties / bestListedPrice / descriptionPrevious value: -"The cheapest in-stock listed price."New value: +"The cheapest in-stock price of a key that activates in the market." - added
Output schema / properties / games / items / properties / bestMayNotActivateHereAdded value: +{ + "description": "True when every key is region-locked for the market, so bestListedPrice is a locked key's.", + "type": [ + "boolean", + "null" + ] +}
- Changed
get_publisher_games2 fields changed- changed
Output schema / properties / games / items / properties / bestListedPrice / descriptionPrevious value: -"The cheapest in-stock listed price."New value: +"The cheapest in-stock price of a key that activates in the market." - added
Output schema / properties / games / items / properties / bestMayNotActivateHereAdded value: +{ + "description": "True when every key is region-locked for the market, so bestListedPrice is a locked key's.", + "type": [ + "boolean", + "null" + ] +}
- Changed
list_deals2 fields changed- changed
Output schema / properties / games / items / properties / bestListedPrice / descriptionPrevious value: -"The cheapest in-stock listed price."New value: +"The cheapest in-stock price of a key that activates in the market." - added
Output schema / properties / games / items / properties / bestMayNotActivateHereAdded value: +{ + "description": "True when every key is region-locked for the market, so bestListedPrice is a locked key's.", + "type": [ + "boolean", + "null" + ] +}
- Changed
search_games2 fields changed- changed
Output schema / properties / results / items / properties / bestListedPrice / descriptionPrevious value: -"The cheapest in-stock listed price."New value: +"The cheapest in-stock price of a key that activates in the market." - added
Output schema / properties / results / items / properties / bestMayNotActivateHereAdded value: +{ + "description": "True when every key is region-locked for the market, so bestListedPrice is a locked key's.", + "type": [ + "boolean", + "null" + ] +}
9 tool updates
- Changed
find_games6 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / genre / descriptionPrevious value: -"A Steam genre, as Steam names it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy."New value: +"A Steam genre, spelled as Steam spells it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy. Any other value matches nothing." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many games to return. Defaults to 5."New value: +"Games to return, 1-20. Defaults to 5." - changed
Input schema / properties / max_price / descriptionPrevious value: -"The highest price, in the market's currency, e.g. 20."New value: +"The highest listed price, in the currency of `country` (e.g. 20 means 20 EUR for ie, 20 GBP for gb)." - changed
Input schema / properties / platform / descriptionPrevious value: -"Only keys for this platform: pc, xbox, playstation or switch."New value: +"Only keys for this platform: pc, xbox, playstation or switch. Omit for all." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "currency": { + "type": "string" + }, + "genre": { + "type": [ + "string", + "null" + ] + }, + "market": { + "type": "string" + }, + "maxPrice": { + "type": [ + "string", + "null" + ] + }, + "platform": { + "type": [ + "string", + "null" + ] + }, + "ranking": { + "type": "string" + }, + "results": { + "items": { + "properties": { + "bestListedPrice": { + "description": "The cheapest in-stock listed price.", + "type": [ + "string", + "null" + ] + }, + "buyUrl": { + "description": "Redirect through getcheapgames.com to the cheapest in-stock key.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "isAtThirtyDayLow": { + "type": [ + "boolean", + "null" + ] + }, + "offerCount": { + "type": "integer" + }, + "pageUrl": { + "description": "Its price comparison page.", + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "savingVsDearest": { + "description": "Saving against the regular price.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "The game's id, for its offers.", + "type": "string" + }, + "steamRating": { + "type": [ + "string", + "null" + ] + }, + "steamReviews": { + "type": [ + "integer", + "null" + ] + }, + "thirtyDayLow": { + "description": "A decimal amount such as 19.99, in the game's `currency`.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "currency", + "pricesByPlatform" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
- Changed
get_franchise_games4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many games to return. Defaults to 24."New value: +"Games to return, 1-100. Defaults to 24." - changed
Input schema / properties / name / descriptionPrevious value: -"Franchise name, e.g. \"Grand Theft Auto\"."New value: +"The franchise's exact name, e.g. \"Grand Theft Auto\" or \"Assassin's Creed\": a `franchises` name from a search result." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "franchise": { + "type": "string" + }, + "games": { + "items": { + "properties": { + "bestListedPrice": { + "description": "The cheapest in-stock listed price.", + "type": [ + "string", + "null" + ] + }, + "buyUrl": { + "description": "Redirect through getcheapgames.com to the cheapest in-stock key.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "isAtThirtyDayLow": { + "type": [ + "boolean", + "null" + ] + }, + "offerCount": { + "type": "integer" + }, + "pageUrl": { + "description": "Its price comparison page.", + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "savingVsDearest": { + "description": "Saving against the regular price.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "The game's id, for its offers.", + "type": "string" + }, + "thirtyDayLow": { + "description": "A decimal amount such as 19.99, in the game's `currency`.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "currency", + "pricesByPlatform" + ], + "type": "object" + }, + "type": "array" + }, + "pageUrl": { + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "games" + ], + "type": "object" +}
- Changed
get_game_offers3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / slug / descriptionPrevious value: -"Game slug, e.g. \"elden-ring\"."New value: +"The game's slug, lower-case with hyphens, e.g. \"elden-ring\": the `slug` field of a search, deals or finder result." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "best": { + "description": "The cheapest in-stock offer; null when none is.", + "properties": { + "buyUrl": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "listedPrice": { + "type": "string" + }, + "platform": { + "type": "string" + }, + "region": { + "type": "string" + }, + "regionLocked": { + "type": "boolean" + }, + "store": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + }, + "disclosure": { + "type": "string" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "links": { + "type": "string" + }, + "offers": { + "items": { + "properties": { + "buyUrl": { + "type": "string" + }, + "cheapestInItsCurrency": { + "type": "boolean" + }, + "checkoutFee": { + "description": "Whether a fee is added at checkout.", + "type": "string" + }, + "currency": { + "type": "string" + }, + "edition": { + "type": [ + "string", + "null" + ] + }, + "inStock": { + "type": "boolean" + }, + "listedPrice": { + "type": "string" + }, + "platform": { + "type": "string" + }, + "priceCheckedAt": { + "description": "ISO 8601 time.", + "type": [ + "string", + "null" + ] + }, + "region": { + "type": "string" + }, + "regionLockWarning": { + "type": [ + "string", + "null" + ] + }, + "regionLocked": { + "type": "boolean" + }, + "sellerRating": { + "description": "0-100, where shown.", + "type": [ + "integer", + "null" + ] + }, + "sellerType": { + "type": "string" + }, + "store": { + "type": "string" + } + }, + "required": [ + "store", + "currency", + "listedPrice", + "platform", + "region", + "regionLocked" + ], + "type": "object" + }, + "type": "array" + }, + "ordering": { + "type": "string" + }, + "pageCurrency": { + "description": "The market's currency.", + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "pageCurrency", + "best", + "offers" + ], + "type": "object" +}
- Changed
get_publisher_games4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many games to return. Defaults to 24."New value: +"Games to return, 1-100. Defaults to 24." - changed
Input schema / properties / slug / descriptionPrevious value: -"Publisher slug, e.g. \"rockstar-games\"."New value: +"The publisher's slug, e.g. \"rockstar-games\": a `publishers` slug from a search result." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "games": { + "items": { + "properties": { + "bestListedPrice": { + "description": "The cheapest in-stock listed price.", + "type": [ + "string", + "null" + ] + }, + "buyUrl": { + "description": "Redirect through getcheapgames.com to the cheapest in-stock key.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "isAtThirtyDayLow": { + "type": [ + "boolean", + "null" + ] + }, + "offerCount": { + "type": "integer" + }, + "pageUrl": { + "description": "Its price comparison page.", + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "savingVsDearest": { + "description": "Saving against the regular price.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "The game's id, for its offers.", + "type": "string" + }, + "thirtyDayLow": { + "description": "A decimal amount such as 19.99, in the game's `currency`.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "currency", + "pricesByPlatform" + ], + "type": "object" + }, + "type": "array" + }, + "pageUrl": { + "type": "string" + }, + "publisher": { + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "games" + ], + "type": "object" +}
- Changed
list_deals3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many games to return. Defaults to 10."New value: +"Games to return, 1-50. Defaults to 10." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "games": { + "items": { + "properties": { + "bestListedPrice": { + "description": "The cheapest in-stock listed price.", + "type": [ + "string", + "null" + ] + }, + "buyUrl": { + "description": "Redirect through getcheapgames.com to the cheapest in-stock key.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "isAtThirtyDayLow": { + "type": [ + "boolean", + "null" + ] + }, + "offerCount": { + "type": "integer" + }, + "pageUrl": { + "description": "Its price comparison page.", + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "savingVsDearest": { + "description": "Saving against the regular price.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "The game's id, for its offers.", + "type": "string" + }, + "thirtyDayLow": { + "description": "A decimal amount such as 19.99, in the game's `currency`.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "currency", + "pricesByPlatform" + ], + "type": "object" + }, + "type": "array" + }, + "pageUrl": { + "type": "string" + } + }, + "required": [ + "games" + ], + "type": "object" +}
- Changed
list_free_to_play5 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / genre / descriptionPrevious value: -"A Steam genre, as Steam names it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy."New value: +"A Steam genre, spelled as Steam spells it: Action, Adventure, Casual, Indie, Massively Multiplayer, Racing, RPG, Simulation, Sports or Strategy. Any other value matches nothing." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many games to return. Defaults to 5."New value: +"Games to return, 1-24. Defaults to 5." - changed
Input schema / properties / platform / descriptionPrevious value: -"Only keys for this platform: pc, xbox, playstation or switch."New value: +"Only keys for this platform: pc, xbox, playstation or switch. Omit for all." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "freeToKeep": { + "type": "string" + }, + "games": { + "items": { + "properties": { + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "pageUrl": { + "type": "string" + }, + "price": { + "type": "string" + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl" + ], + "type": "object" + }, + "type": "array" + }, + "market": { + "type": "string" + }, + "ordering": { + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "games" + ], + "type": "object" +}
- Changed
list_news3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many posts to return. Defaults to 5."New value: +"Posts to return, 1-12. Defaults to 5." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "market": { + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "posts": { + "items": { + "properties": { + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "kind": { + "type": [ + "string", + "null" + ] + }, + "publishedAt": { + "description": "ISO 8601 time.", + "type": [ + "string", + "null" + ] + }, + "readingMinutes": { + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": "string" + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "query": { + "type": [ + "string", + "null" + ] + }, + "tag": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "posts" + ], + "type": "object" +}
- Changed
list_stores2 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "currency": { + "type": "string" + }, + "gamesTracked": { + "type": [ + "integer", + "null" + ] + }, + "offersTracked": { + "type": [ + "integer", + "null" + ] + }, + "rankingMethod": { + "type": "string" + }, + "stores": { + "items": { + "properties": { + "cheapestCents": { + "type": [ + "integer", + "null" + ] + }, + "domain": { + "type": [ + "string", + "null" + ] + }, + "everFetched": { + "type": "boolean" + }, + "lastCheckOk": { + "type": "boolean" + }, + "lastCheckedAt": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "ofGamesCompared": { + "type": [ + "integer", + "null" + ] + }, + "offersTracked": { + "type": [ + "integer", + "null" + ] + }, + "pricedInThisCurrency": { + "type": "boolean" + }, + "timesCheapest": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "stores" + ], + "type": "object" +}
- Changed
search_games4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter market code, e.g. de, gb, us, br. Decides the currency, which keys count as region-locked and the market every link points into. Defaults to ie (euro)."New value: +"Two-letter market code, any case, e.g. de, gb, us, br or pl (40 markets). It decides the currency prices come back in, which keys count as region-locked, and the market every link opens in. Omitted or unsupported codes fall back to ie (Ireland, euro)." - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum games to return. Defaults to 10."New value: +"Games to return, 1-50. Defaults to 10." - changed
Input schema / properties / query / descriptionPrevious value: -"Title, publisher or genre, e.g. \"Elden Ring\"."New value: +"A game title or part of one, e.g. \"Elden Ring\" or \"cod\"; also matched against franchise and publisher names." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "franchises": { + "items": { + "properties": { + "games": { + "type": [ + "integer", + "null" + ] + }, + "name": { + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "market": { + "type": "string" + }, + "publishers": { + "items": { + "properties": { + "games": { + "type": [ + "integer", + "null" + ] + }, + "name": { + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "resultCount": { + "type": "integer" + }, + "results": { + "items": { + "properties": { + "bestListedPrice": { + "description": "The cheapest in-stock listed price.", + "type": [ + "string", + "null" + ] + }, + "buyUrl": { + "description": "Redirect through getcheapgames.com to the cheapest in-stock key.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": "string" + }, + "genres": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "type": [ + "string", + "null" + ] + }, + "isAtThirtyDayLow": { + "type": [ + "boolean", + "null" + ] + }, + "offerCount": { + "type": "integer" + }, + "pageUrl": { + "description": "Its price comparison page.", + "type": "string" + }, + "pricesByPlatform": { + "additionalProperties": { + "type": "string" + }, + "description": "Lowest price per platform, e.g. {\"PC\": \"19.99 EUR\"}.", + "type": "object" + }, + "publisher": { + "type": [ + "string", + "null" + ] + }, + "releaseYear": { + "type": [ + "integer", + "null" + ] + }, + "savingVsDearest": { + "description": "Saving against the regular price.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "The game's id, for its offers.", + "type": "string" + }, + "thirtyDayLow": { + "description": "A decimal amount such as 19.99, in the game's `currency`.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "pageUrl", + "currency", + "pricesByPlatform" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
9 tool updates
- First observed
find_games - First observed
get_franchise_games - First observed
get_game_offers - First observed
get_publisher_games - First observed
list_deals - First observed
list_free_to_play - First observed
list_news - First observed
list_stores - First observed
search_games
Publisher details
- Operator
- company
- Operator website
- http://getcheapgames.com · Publisher source
- Vendor relationship
- First-party
- Documentation
- http://getcheapgames.com/mcp · Publisher source
- Trust center
- http://getcheapgames.com/privacy · Publisher source
- Restrictions
- None. The server is free and public. There is no paid plan, no account or login, no API key, no OAuth and no admin approval. It is read-only. Prices come back for the caller’s market and currency, worldwide. Rate limits are set per caller IP: 300 requests a minute, 120 tool calls a minute and 2,000 an hour. There is also a shared ceiling of 1,200 tool calls a minute across all callers. Going over a limit returns HTTP 429 or a “rate_limited” tool error, and you can retry after a minute. · Publisher source
Related MCP Connectors
PC game prices from Steam, GOG, Gamivo, G2A, Kinguin: deals and upcoming releases.
Game prices across Steam, Epic, GOG and Microsoft, with real price history and giveaways.
Game prices across verified stores, with price history and a buy-now-or-wait verdict.
Affiliate price routing for high-intent PC game purchases across authorized stores.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceLive PC game key prices: the lowest listed price for a game across official stores and key stores (by name, Steam app ID or Steam URL, or up to 50 games at once), with a link to the full comparison.-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to search, compare prices, and get details on discounted and free games across Steam, Epic, GOG, and Humble Bundle.-
- AlicenseCqualityDmaintenanceEnables querying game deals, prices, and managing collections using the IsThereAnyDeal API with 53 specialized tools.6531MIT
- AlicenseAqualityCmaintenanceEnables LLMs to fetch game prices, historical lows, and bundles from gg.deals.415 npmCreative Commons Attribution Non Commercial 4.0 International
Glama MCP Gateway
Add one secure layer between your agents and this server.