Skip to main content
Glama

Server Details

Affiliate price routing for high-intent PC game purchases across authorized stores.

Ownership verified
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation4/5

The four tools have largely distinct purposes: search_games finds titles, get_game returns catalogue data, compare_prices gives live regional prices, and find_deals surfaces discounts. There is mild overlap between compare_prices and find_deals (both price-oriented) and between get_game and compare_prices, but the descriptions explicitly clarify the boundary (catalogue vs live prices).

Naming Consistency5/5

All four names follow a clean verb_noun snake_case pattern (compare_prices, find_deals, get_game, search_games). No mixed conventions or vague verbs.

Tool Count4/5

Four tools is on the lean side but well-scoped for a game price comparison service, with each tool earning its place. Slightly thin but no redundant or filler tools.

Completeness4/5

The core workflow (search → inspect catalogue → compare prices → find deals) is fully covered. Minor gaps exist, such as no price-history, alert, or store-listing tool, but these are workable omissions rather than dead ends.

Available Tools

4 tools
compare_pricesB
Read-only
Inspect

Compare prices for a game by region. Returns cheapest store, sorted offers, and links to support developer (direct purchase).

NameRequiredDescriptionDefault
titleYesExact game title to compare (e.g. "Hades II"). Must be 2-150 characters.
countryNoTwo-letter country code for regional pricing (default: "CA"). Supported: CA, US, GB, AU, DE, FR.

Output Schema

NameRequiredDescription
slugNo
typeNo
titleYes
gameIdNo
offersNo
countryYes
cheapestYes
currencyYes
productsNo
comparableNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful behavior detail not in the annotations: it returns the cheapest store, sorted offers, and direct-purchase links. With an output schema present, most of the return-value disclosure is redundant, so this is a modest addition rather than a rich one.

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

Conciseness4/5

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

Two short sentences with the core action front-loaded and no filler. The parenthetical '(direct purchase)' is the only slightly muddled fragment, keeping it from a 5.

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

Completeness3/5

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

For a two-parameter, read-only tool with full schema coverage and an output schema, the return-value contract is already carried by structured fields. What is missing is routing information versus its three siblings, which is the main gap an agent would face when choosing this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (title and country, with its enum and default) are fully documented in the schema. The description's 'by region' phrasing adds only a loose conceptual mapping to the country parameter, no format or constraint 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.

Purpose4/5

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

States a specific verb and resource (compare prices for a game) and the scoping dimension (by region), which is enough to know what the tool does. It does not, however, distinguish itself from siblings like find_deals or search_games, and the trailing phrase 'links to support developer (direct purchase)' is ambiguous about what is actually returned.

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

Usage Guidelines2/5

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

There is no when-to-use statement and no reference to the sibling tools that could serve as alternatives (find_deals, get_game, search_games). The only usage signal is implicit: you must supply a game title and a region.

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

find_dealsA
Read-only
Inspect

Find discounted games by discount, optionally under a maximum price. Confirm price with compare_prices before asserting.

NameRequiredDescriptionDefault
countryNoTwo-letter country code for regional pricing (default: "CA"). Supported: CA, US, GB, AU, DE, FR.
max_priceNoOnly games whose cheapest price is at most this, in the region's currency.

Output Schema

NameRequiredDescription
dealsYes
countryYes
currencyYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered structurally. The description contributes real extra context: results are discount-oriented and prices should be treated as unverified until checked with compare_prices, implicitly flagging possible staleness. It does not mention region defaulting or result limits, so not a full 5.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the core action and followed by the verification caveat. No filler, though the ambiguous 'by discount' phrasing costs a bit of clarity.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the schema fully documents region defaults and the price bound. The description supplies the one thing structured data cannot: the cross-tool verification step. Minor gap around result volume/ordering is not material.

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

Parameters3/5

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

Schema description coverage is 100% with enums and defaults documented, so the baseline is 3. The description adds nothing about country/max_price semantics and in fact references a 'discount' dimension that is not an exposed parameter, which is mildly confusing rather than additive.

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

Purpose4/5

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

States a specific verb (Find) and resource (discounted games) with the primary ordering/scoping dimension (discount) and the optional constraint (max price). It is distinguishable from get_game and search_games, though it never explicitly contrasts itself with search_games, the closest sibling.

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

Usage Guidelines4/5

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

Adds a usable workflow rule — confirm price with compare_prices before asserting — which points the agent at the correct sibling for verification. It gives clear context for use but no explicit when-not-to-use condition or statement of what this tool covers that search_games does not.

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

get_gameA
Read-only
Inspect

Get a PC game's catalogue entry without checking live prices: its Game ID, Foxfind page, and each product (base game, editions, DLC) with the stores that list it. Use compare_prices for current prices.

NameRequiredDescriptionDefault
gameYesExact game title, or `game:<Game ID>` from search_games. Must be 2-150 characters.
countryNoTwo-letter country code for regional pricing (default: "CA"). Supported: CA, US, GB, AU, DE, FR.

Output Schema

NameRequiredDescription
urlYes
slugYes
titleYes
gameIdYes
productsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds non-obvious behavioral context: that live prices are deliberately excluded and that the response spans multiple products (base game, editions, DLC) and listing stores. It omits anything about auth, rate limits, or missing-game behavior, 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.

Conciseness5/5

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

Two sentences, front-loaded with the core purpose, followed by the routing pointer. Every clause carries information; no filler.

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

Completeness5/5

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

An output schema exists, so return-value documentation is unnecessary. Between the description's scope statement, the compare_prices routing, and the fully described parameters, an agent has everything needed to invoke this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with the game identifier formats, length rule, and country enum/default all documented in the schema itself. The description repeats 'Game ID' but adds no syntax or format meaning beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get a PC game's catalogue entry') and enumerates what the entry contains: Game ID, Foxfind page, and each product with listing stores. This clearly separates it from compare_prices, which handles pricing.

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

Usage Guidelines5/5

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

Gives an explicit boundary condition ('without checking live prices') and names the alternative plus the condition that selects it ('Use compare_prices for current prices'). The agent does not have to infer which sibling to call.

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

search_gamesA
Read-only
Inspect

Search for PC games across Steam, GOG, Humble Bundle, IndieGala, Gamesplanet, Fanatical, and GameBillet to find exact titles, relevance scores, and store availability.

NameRequiredDescriptionDefault
queryYesGame title or keywords to search for (e.g. "Hades II", "Cyberpunk 2077"). Must be 2-150 characters.
countryNoTwo-letter country code for regional pricing (default: "CA"). Supported: CA, US, GB, AU, DE, FR.

Output Schema

NameRequiredDescription
gamesYes
countryYes
currencyYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the breadth of sources searched and the nature of results, but adds nothing on rate limits, result counts, or pagination.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted phrasing; the purpose leads and the store list and outputs follow. Slightly dense but every clause carries information.

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

Completeness4/5

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

With annotations covering safety, an output schema covering return values, and full parameter documentation, the description only needs to convey scope and source coverage, which it does adequately. Minor gap: no mention of result limits or ordering behavior.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (query, country) are fully documented with formats, lengths, and enum values in the schema. The description adds no parameter-level detail beyond this, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Search for PC games') and names the exact storefronts queried plus the returned fields (exact titles, relevance scores, store availability). It clearly identifies the tool's job but does not explicitly contrast it with siblings like get_game or find_deals.

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

Usage Guidelines3/5

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

Usage is implicit: finding a game's exact title and store availability suggests use when the agent knows a title or keyword but not the store. There is no explicit when-not guidance or reference to compare_prices/find_deals/get_game as alternatives, leaving routing to inference.

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. 2 tool updates
    • Changedcompare_prices4 fields changed
      • changedOutput schema / properties / cheapest / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "coupon": {
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code"
        -        ],
        -        "type": "object"
        -      },
        -      "currency": {
        -        "type": "string"
        -      },
        -      "price": {
        -        "type": "number"
        -      },
        -      "store": {
        -        "type": "string"
        -      },
        -      "url": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "store",
        -      "price",
        -      "currency",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "coupon": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code"
        +        ],
        +        "type": "object"
        +      },
        +      "currency": {
        +        "type": "string"
        +      },
        +      "price": {
        +        "type": "number"
        +      },
        +      "promotions": {
        +        "items": {
        +          "properties": {
        +            "code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "endsAt": {
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "startsAt": {
        +              "type": "number"
        +            },
        +            "terms": {
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            },
        +            "validUntil": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "title",
        +            "terms",
        +            "startsAt",
        +            "endsAt"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "store": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "store",
        +      "price",
        +      "currency",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / offers / items / properties / promotions
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "code": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "endsAt": {
        +        "type": "number"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "startsAt": {
        +        "type": "number"
        +      },
        +      "terms": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "validUntil": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "title",
        +      "terms",
        +      "startsAt",
        +      "endsAt"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / products / items / properties / cheapest / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "coupon": {
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code"
        -        ],
        -        "type": "object"
        -      },
        -      "currency": {
        -        "type": "string"
        -      },
        -      "price": {
        -        "type": "number"
        -      },
        -      "store": {
        -        "type": "string"
        -      },
        -      "url": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "store",
        -      "price",
        -      "currency",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "coupon": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code"
        +        ],
        +        "type": "object"
        +      },
        +      "currency": {
        +        "type": "string"
        +      },
        +      "price": {
        +        "type": "number"
        +      },
        +      "promotions": {
        +        "items": {
        +          "properties": {
        +            "code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "endsAt": {
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "startsAt": {
        +              "type": "number"
        +            },
        +            "terms": {
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            },
        +            "validUntil": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "title",
        +            "terms",
        +            "startsAt",
        +            "endsAt"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "store": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "store",
        +      "price",
        +      "currency",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / products / items / properties / offers / items / properties / promotions
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "code": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "endsAt": {
        +        "type": "number"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "startsAt": {
        +        "type": "number"
        +      },
        +      "terms": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "validUntil": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "title",
        +      "terms",
        +      "startsAt",
        +      "endsAt"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedfind_deals1 field changed
      • addedOutput schema / properties / deals / items / properties / offer / properties / promotions
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "code": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "endsAt": {
        +        "type": "number"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "startsAt": {
        +        "type": "number"
        +      },
        +      "terms": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "validUntil": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "title",
        +      "terms",
        +      "startsAt",
        +      "endsAt"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 4 tool updates
    • First observedcompare_prices
    • First observedfind_deals
    • First observedget_game
    • First observedsearch_games

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources