Fairly
Server Details
Cheapest way to play a PC game: real checkout prices, Game Pass and a buy-vs-subscribe planner.
- Status
- Healthy
- Uptime
- 65.9% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool targets a distinct query intent, and the descriptions proactively cross-reference the right alternative (get_cheapest_way_to_play vs get_offers vs plan_cheapest_way for single vs multi-game). The buy-vs-subscribe overlap is explicitly resolved, so an agent can reliably pick the correct tool.
Names are all snake_case and almost entirely verb_noun (get_offers, list_deals, plan_cheapest_way, search_games). The only minor deviation is the predicate-style is_on_subscription, which is semantically appropriate but breaks the verb_noun pattern.
Six tools is well-scoped for a game price-comparison service: one helper (search_games), one discovery tool, and four query/planning tools that each earn their place with no redundancy.
The surface covers the lifecycle well: find a game, single-game recommendation, full offer table, subscription check, deals discovery, and multi-game planning. Minor gaps exist (e.g. no historical price trends or alerting), but core workflows are fully supported.
Available Tools
6 toolsget_cheapest_way_to_playARead-onlyIdempotentInspect
Use this to answer: "What is the cheapest way to play on PC right now?", "Should I buy or use Game Pass?", "Where is cheapest?". Compares buying at authorized stores (optionally key marketplaces) and subscriptions at the real checkout price, fees included. Returns a one-sentence decision plus a Fairly link to the winning store (no link when a subscription wins; subscription_code says which). Prefer this over get_offers unless the user wants the full price table.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region: tr, us, eu or gb. Default: detected from the caller's IP, us when unknown. | |
| game_id | Yes | Steam AppID (e.g. 730) or IGDB id (e.g. igdb:1942). | |
| currency | No | Currency: USD, EUR, GBP or TRY. Default is the region's currency. | |
| include_marketplaces | No | Include key marketplaces (Eneba, Kinguin, G2A...). Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-open-world), so the description's job is added context, and it delivers: prices are the real checkout price with fees, marketplaces are opt-in, and the return is a one-sentence decision plus a Fairly link that is omitted when a subscription wins, with subscription_code identifying the winner. It does not mention latency, rate limits, or failure modes when a game is not found in any store.
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 routing signals (the example questions), then the comparison behavior, then the alternative-tool rule. No sentence is redundant given the payload of behavioral detail each carries.
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?
There is no output schema, and the description compensates by explaining the return shape: a one-sentence decision, a Fairly link for store winners, no link for subscription winners, and subscription_code to identify the subscription. Combined with the 100%-covered input schema, an agent has everything needed to call and interpret it.
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 description coverage is 100%, so all four parameters (region, game_id, currency, include_marketplaces) are already documented with formats, defaults, and examples in the schema. The description only lightly reinforces include_marketplaces ('optionally key marketplaces'); baseline 3 is warranted when the schema does the heavy lifting.
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 names a concrete decision task (cheapest way to play a given game) and what it compares: authorized stores, optionally key marketplaces, and subscriptions at real checkout price with fees. It explicitly contrasts itself with the sibling get_offers, so an agent can route without opening either 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 three literal example questions that map to when to call it, and states the exclusion rule directly: 'Prefer this over get_offers unless the user wants the full price table.' That is explicit when/when-not with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offersARead-onlyIdempotentInspect
Use this to answer: "Show me every store price for ", "How much does cost at Steam, GOG, Epic...?", "Compare prices for ". Returns all current offers with the real price (list price plus checkout fees), edition, platform and notes, in Fairly's price-only ranking order. For a single recommendation call get_cheapest_way_to_play instead.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region: tr, us, eu or gb. Default: detected from the caller's IP, us when unknown. | |
| game_id | Yes | Steam AppID (e.g. 730) or IGDB id (e.g. igdb:1942). | |
| currency | No | Currency: USD, EUR, GBP or TRY. Default is the region's currency. | |
| include_marketplaces | No | Include key marketplaces. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the burden is lighter. The description still adds real behavioral value by defining "real price" as list price plus checkout fees and disclosing the ranking order, which no structured field carries. It omits pagination or result-size limits, keeping it short of a 5.
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?
Three sentences, zero filler: trigger queries first, then payload/ordering, then the redirect to the alternative. Front-loading the usage triggers ahead of implementation details is exactly the right ordering for an agent scanning for a match.
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?
There is no output schema, and the description compensates by enumerating the returned fields and their ordering. Combined with 100% parameter coverage and annotations covering safety, nothing an agent needs to call this 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 description coverage is 100% with four well-documented parameters including defaults, so the schema does the heavy lifting. The description mentions comparing across stores (Steam, GOG, Epic), which loosely maps to include_marketplaces, but adds no syntax, format, or fallback detail beyond the schema. Baseline 3 applies.
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 (returns all current offers) plus the exact payload fields (real price, edition, platform, notes) and the ordering rule. It explicitly contrasts itself with get_cheapest_way_to_play, so an agent can route between the two without opening either 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?
Opens with literal user queries this tool answers ("Show me every store price for <game>", "Compare prices..."), which is an unambiguous trigger. It then names the alternative (get_cheapest_way_to_play) and the condition that selects it (single recommendation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_on_subscriptionARead-onlyIdempotentInspect
Use this to answer: "Is on Game Pass?", "When does leave Game Pass?", "Can I play with a subscription?". Lists which subscriptions (currently PC Game Pass and Game Pass Ultimate) include the game in a region, their monthly price and the leave date when announced.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region: tr, us, eu or gb. Default: detected from the caller's IP, us when unknown. | |
| game_id | Yes | Steam AppID (e.g. 730) or IGDB id (e.g. igdb:1942). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral detail about the returned payload (subscription names, monthly price, leave date only 'when announced'), implying an occasionally-absent field. It omits any auth, rate-limit, or failure-mode context, so it adds moderate rather than rich value on top of 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?
Two sentences, front-loaded with the user-facing questions that establish intent, followed by the concrete return contents. The three example questions are slightly repetitive but each maps to a distinct user need, so no sentence is clearly 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?
No output schema exists, so the description carries the burden of explaining return values, and it does: which subscriptions include the game, their monthly price, and the leave date when announced. Combined with the fully documented input schema, an agent has enough to call and interpret it, though regional price variation or the case where a game is on no subscription is not addressed.
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 description coverage is 100%: the schema fully documents region (allowed values tr/us/eu/gb, IP-based default) and game_id (Steam AppID or IGDB id format). The description only alludes to region scoping ('include the game in a region') and adds no format or syntax detail beyond the schema, so the baseline 3 applies.
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 states a specific capability: it answers whether a game is on Game Pass, which subscriptions include it, the monthly price, and the leave date. The example questions pin down the resource and intent precisely, so an agent can distinguish it from deal/pricing siblings. It stops short of naming an alternative sibling explicitly, which keeps it at 4 rather than 5.
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?
The three quoted user questions ('Is <game> on Game Pass?', 'When does <game> leave Game Pass?', 'Can I play <game> with a subscription?') act as concrete triggers for when to call this tool, which is strong context. However, there is no explicit when-not-to-use guidance or routing to siblings like get_offers or get_cheapest_way_to_play when the question is about price/deals rather than subscription eligibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dealsARead-onlyIdempotentInspect
Use this to answer: "What PC games are cheap right now?", "Which games are at their lowest price ever?", "What is leaving Game Pass soon?". Ranked discovery lists at the real checkout price: under_5 (games under the 5 USD tier, shown in the region's currency), historical_low (at their all-time low now) or leaving_game_pass (leaving within 30 days, with the cheapest price to buy instead). Not for a specific game: use get_cheapest_way_to_play.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | under_5, historical_low or leaving_game_pass. | |
| limit | No | Maximum number of rows, 1-50. Default 10. | |
| region | No | Region: tr, us, eu or gb. Default: detected from the caller's IP, us when unknown. | |
| currency | No | Currency: USD, EUR, GBP or TRY. Default is the region's currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, idempotent, non-open-world call, so the safety profile is covered. The description adds meaningful context: lists are 'at the real checkout price,' leaving_game_pass covers a 30-day window with a buy-instead price, and results are ranked. It stops short of describing ordering criteria or pagination behavior.
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 triggering questions before the mode enumeration and the sibling exclusion; every sentence carries information. Slightly dense with three example questions and three mode definitions in one block, but there is no 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?
There is no output schema, and while the description implies each row carries a price and a ranking, it does not say what fields come back or how ties/limits behave. For a discovery tool with full schema coverage and annotations, this is nearly complete but leaves the return shape implicit.
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 genuinely enriches 'kind' by explaining what each of the three values returns (tier currency display, all-time low, 30-day departure with fallback price). It adds no extra detail on limit, region, or currency beyond 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 (list/rank) and resource (deals) and defines the three modes by name. It explicitly distinguishes itself from the sibling get_cheapest_way_to_play, so an agent can route between them 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?
Opens with concrete user questions it answers, giving the agent clear trigger contexts, and closes with an explicit exclusion plus the correct alternative tool for a specific game. When/when-not/alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_cheapest_wayARead-onlyIdempotentInspect
Use this when the user has SEVERAL PC games they want to play and asks how to do it for the least money: "I want to play A, B and C - what is the cheapest way?", "Which Game Pass month should I take and what should I buy?", "Is it cheaper to subscribe or buy these games?", "Plan my backlog around Game Pass". Returns a month-by-month plan (which subscription month to pay for and which games to finish in it, which games to buy), totals versus buying every game at its cheapest measured real price (never list price), and the assumptions: hours per week, hours per game, leave dates and how fresh each price is. Games without a reliable main-story length (free to play, live service, multiplayer only) are left out of the time-based plan and listed separately. For ONE game use get_cheapest_way_to_play instead. Find game ids with search_games first.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region: tr, us, eu or gb. Default: detected from the caller's IP, us when unknown. | |
| currency | No | Currency: USD, EUR, GBP or TRY. Default is the region's currency. | |
| game_ids | Yes | Game ids, 1-30: Steam AppID (e.g. 730) or IGDB id (e.g. igdb:1942). | |
| hours_per_week | No | Hours the user can play per week, 1-80. Default 10 (a subscription month is 4 weeks). | |
| owned_subscriptions | No | Subscription codes the user already has, e.g. gp_pc, gp_ultimate, psplus_extra. Owned subscriptions cost nothing. Default none. | |
| include_marketplaces | No | Include key marketplaces (Eneba, Kinguin, G2A...) as buy options. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a read-only, idempotent, non-open-world computation, and the description adds substantial behavior beyond that: it describes the shape of the result (month-by-month plan, totals, listed assumptions), the pricing basis ('cheapest measured real price (never list price)'), and the edge-case handling ('Games without a reliable main-story length ... are left out of the time-based plan and listed separately'). That is exactly the kind of non-structured context an agent cannot get from the 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 trigger condition and example utterances before the return-value and exclusion details, so the agent gets the routing decision immediately. It is long, but nearly every clause adds distinct information; only the quoted user phrasings border on redundant.
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?
There is no output schema, so the description must explain results, and it does: plan structure, comparison baseline, and the caveats (assumptions, freshness, excluded games). Combined with 100% parameter coverage and annotations covering the safety profile, nothing an agent needs to select or call this tool 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 description coverage is 100%, with region, currency, hours_per_week, owned_subscriptions and include_marketplaces all documented inline including defaults and ranges, so the schema carries the burden. The description only reinforces that ids come from search_games and lightly references assumptions like hours per week, adding no syntax beyond the schema. Baseline 3 applies.
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 ('plan the cheapest way to play several PC games') and gives a precise scope: multiple games, least money. It explicitly distinguishes itself from the sibling get_cheapest_way_to_play ('For ONE game use ... instead'), so an agent can separate the two without opening either 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?
Opens with a clear when-to-use condition and four verbatim user phrasings that should trigger it ('I want to play A, B and C - what is the cheapest way?', subscription-vs-buy questions, backlog planning). It also names the alternative for the single-game case and points to search_games for obtaining ids.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gamesARead-onlyIdempotentInspect
Find a PC game by title and get its id. Call this FIRST when the user names a game but you do not have its Steam AppID or igdb id, then pass the id to get_cheapest_way_to_play, get_offers or is_on_subscription. Returns up to 20 matches (id, title, slug).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Game title or part of it, 2-100 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the result cap (up to 20 matches) and the returned fields (id, title, slug). It does not say how matching works (exact vs fuzzy) or what a zero-match response looks like, but the annotation-backed baseline is met comfortably.
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?
Two sentences, zero filler, and the ordering is deliberate: what it does first, then when to call it and where the output goes. Nothing repeats the schema or the annotations.
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 no output schema, the description usefully compensates by naming the return shape and cap. For a one-parameter search tool the coverage is nearly complete; only edge behavior (no matches, ambiguous titles) is unaddressed.
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 description coverage is 100% and the single query parameter is already documented as 'Game title or part of it, 2-100 characters', which covers partial matching and length bounds. The description adds no syntax or format detail beyond the schema, so the baseline of 3 for a fully documented single parameter is correct.
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 resource (PC game by title) and the concrete outcome (get its id). It explicitly separates itself from the siblings by naming the downstream tools it feeds (get_cheapest_way_to_play, get_offers, is_on_subscription), so an agent can place it in the workflow 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 trigger condition ('Call this FIRST when the user names a game but you do not have its Steam AppID or igdb id') and an explicit next step ('then pass the id to ...'). The when-to-use and the alternatives are both stated rather than implied.
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.
1 tool update
- Added
plan_cheapest_way
5 tool updates
- First observed
get_cheapest_way_to_play - First observed
get_offers - First observed
is_on_subscription - First observed
list_deals - First observed
search_games
Related MCP Connectors
Affiliate price routing for high-intent PC game purchases across authorized stores.
Cheapest legit PC and console game keys across stores in 40 countries, plus deals and free games.
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.
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.-
- AlicenseAqualityAmaintenanceLLM pricing for coding agents: every price carries its source and the date it was last confirmed, and disputed prices are flagged. Looks up model rates, costs a described workload, and finds cheaper models that score at or above a given one. Local, no API key.31MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with verified, monthly software pricing data for categories like VPNs and cloud backup, enabling price comparisons and identifying cheapest providers.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.