GotCashback
Server Details
Compare cashback rates across portals and discounted gift cards for stores in 30+ countries.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
18 toolsget_best_deals_by_brandBest deals for a brandARead-onlyIdempotentInspect
Finds where to buy a brand's products with the most savings: returns the matching brands and, for each, the stores carrying it ranked by best current cashback rate, then best gift card discount. Use it when the user names a product brand rather than a specific retailer — 'where is the best cashback for Adidas products?', 'cheapest place to buy Apple products with cashback'. When the user names a retailer ('Nike cashback' meaning the Nike store), call get_cashback_rates_by_store_name instead; for a type of product use get_best_deals_by_category. Returns up to 5 matching brands, best match first; empty when nothing matched. Rates reflect GotCashback's current data, refreshed several times a day. Always show each store's links to the user: best_cashback_rate.url (clickable link that activates the cashback) and gift_cards_url (where to buy the discounted gift cards).
| Name | Required | Description | Default |
|---|---|---|---|
| brand_name | Yes | The product brand name, e.g. 'Adidas', 'Dyson', 'LEGO'. Case-insensitive substring match; multi-word names fall back to matching individual words. | |
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | No | Matched brands / categories (up to 5, best match first). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral detail: returns up to 5 matching brands, best match first, empty when nothing matched, rates refreshed several times a day, and specific URL fields that should always be surfaced to the user. There is no contradiction with the 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?
The description is organized and front-loaded: the core purpose comes first, followed by usage examples, sibling alternatives, return behavior, data freshness, and display requirements. Every sentence earns its place, and there is no redundant 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?
The description covers matching behavior, result cap and ordering, empty-result handling, data freshness, and required link presentation. With an output schema present and annotations conveying the read-only safety profile, nothing essential is missing for an agent to call this tool 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 description coverage is 100%, and the schema already provides detailed semantics for both parameters, including case-insensitive substring matching and ISO country code rules such as 'gb' not 'uk'. The tool description itself mostly reinforces usage context rather than adding meaning beyond the schema, so the baseline score of 3 is appropriate.
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 precise statement of what the tool does: it finds where to buy a brand's products with the most savings, returning matching brands and stores ranked by cashback rate and gift card discount. It also explicitly contrasts itself with related tools, so an agent can distinguish it from get_cashback_rates_by_store_name and get_best_deals_by_category.
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 description gives concrete when-to-use guidance: use when the user names a product brand rather than a retailer, and provides example queries. It explicitly names the sibling tools to call instead for retailer or product-category intents, and explains when to pass country_code versus omit it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_deals_by_categoryBest deals for a categoryARead-onlyIdempotentInspect
Finds where to buy products from a shopping category with the most savings: returns the matching categories and, for each, the stores in it ranked by best current cashback rate, then best gift card discount. Use it when the user names a type of product or a category rather than a store or brand — 'where can I buy dog food with the biggest discount?', 'best cashback for electronics', 'travel booking sites with cashback'. For a specific retailer use get_cashback_rates_by_store_name; for a product brand use get_best_deals_by_brand. Returns up to 5 matching categories, best match first; empty when nothing matched. Rates reflect GotCashback's current data, refreshed several times a day. Always show each store's links to the user: best_cashback_rate.url (clickable link that activates the cashback) and gift_cards_url (where to buy the discounted gift cards).
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. | |
| category_name | Yes | The shopping category or product type, e.g. 'Pet Supplies', 'dog food', 'electronics', 'travel'. Case-insensitive substring match; multi-word phrases fall back to matching individual words. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | No | Matched brands / categories (up to 5, best match first). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds substantial behavioral context: ranking by cashback rate then gift card discount, up to 5 matching categories, empty results behavior, data freshness, and a required instruction to surface store links. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and ranking behavior, then moves through usage guidance, alternatives, output limits, data freshness, and required user-facing links. Every sentence adds value and 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?
Given the two-parameter schema, output schema, and read-only annotations, the description is complete: it explains matching, ordering, result limits, empty results, data freshness, and how links should be presented. An agent has everything needed to select and invoke the tool 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?
The input schema already covers both parameters thoroughly, with 100% description coverage. The description adds useful semantic context by giving example category values like 'dog food' and 'electronics' and by clarifying that this tool is for category-style queries rather than store or brand queries.
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 verb and resource: 'Finds where to buy products from a shopping category with the most savings' and explains the ranking logic. It clearly distinguishes this tool from siblings by naming get_cashback_rates_by_store_name and get_best_deals_by_brand as the alternatives.
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 explicitly says to use this tool when the user names a product type or category rather than a store or brand, with concrete example queries. It also gives explicit when-not-to-use guidance: use get_cashback_rates_by_store_name for a specific retailer and get_best_deals_by_brand for a brand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cashback_rates_by_store_idCashback rates by store IDARead-onlyIdempotentInspect
Returns the current online and in-store cashback rates from every cashback portal for one store identified by its numeric store_id, so the user can compare every portal and see the best. Use it only when a store_id is already known from an earlier result (a store, deals, favorites or alerts response). When the user gives a store name instead, call get_cashback_rates_by_store_name directly — do not look the id up first. Returns an error when the id does not exist. Rates reflect GotCashback's current data, refreshed several times a day. Present every returned portal's rate to the user (a table with a link column, not only the best one) and always show each rate's 'url' as a clickable link — cashback is only credited when the user clicks through it.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes | GotCashback's numeric store_id, taken from an earlier result (a store, cashback rate, gift card, deals, favorites or alerts response). If you only have a store name, use the by-name tool instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| store | No | A store (retailer) in one country, with its current cashback rates when returned by a cashback tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavior beyond annotations: it returns an error for nonexistent ids, rates are refreshed several times a day, and every portal's rate must be presented with clickable url links because cashback only credits on click-through. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, and every subsequent sentence adds necessary operational or selection detail. Although longer than minimal descriptions, the extra length is justified by the crucial display/click-through requirement and sibling routing guidance.
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?
The tool is simple (one parameter) and has both output schema and annotations, so the description does not need to restate return structures. It covers selection context, error behavior, data freshness, and required presentation behavior, making it complete for correct agent invocation.
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 fully documents store_id. The description adds practical meaning by reinforcing that the id must be numeric, must come from an earlier result, and that a store-name input should route to the by-name sibling instead.
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 verb ('Returns'), resource ('cashback rates from every cashback portal for one store'), and scope ('one store identified by its numeric store_id'). It also explicitly distinguishes this tool from get_cashback_rates_by_store_name, making the purpose unambiguous.
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 description gives clear when-to-use guidance: only when a store_id is already known from an earlier result. It also states the exclusion condition and alternative directly: when the user gives a store name, call get_cashback_rates_by_store_name and do not look the id up first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cashback_rates_by_store_nameCashback rates by store nameARead-onlyIdempotentInspect
Finds a store by name and returns its current cashback rates from every cashback portal that lists it — online and in-store, percentage or fixed amount, with 'up to' flags — so the user can compare every portal and see the best. This is the preferred first call for any cashback question that names a store: 'best cashback for Walmart', 'highest Nike cashback', 'cashback at Expedia', 'Walmart cashback today', 'compare Walmart cashback portals', 'Best Buy in-store cashback', 'Dell cashback in Germany'. No prior lookup is needed — do not call get_stores_by_name, get_stores_by_country or get_countries first. Returns every matching store (best match first, one entry per country), each with its 'cashback_rates'; an empty list means no match — retry with a shorter name or without country_code. Use get_cashback_rates_by_store_id only when a store_id is already known, get_gift_cards_by_store_name for gift card discounts, and get_best_deals_by_brand when the user asks where to buy a brand's products rather than about a specific store. Rates reflect GotCashback's current data, refreshed several times a day. Present every returned portal's rate to the user (a table with a link column, not only the best one) and always show each rate's 'url' as a clickable link — cashback is only credited when the user clicks through it.
| Name | Required | Description | Default |
|---|---|---|---|
| store_name | Yes | The retailer or brand name as a shopper would say it, e.g. 'Walmart', 'Nike', 'Best Buy', 'Expedia', 'Home Depot'. Matched as a case-insensitive substring of the store name and its known alternate names, best match first. Pass the plain name only — no words like 'cashback', 'gift card' or a country. | |
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stores | No | Matching stores (one entry per country). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark read-only/idempotent/non-destructive, so the description adds non-safety behavior: best-match ordering, one entry per country, empty-list meaning and retry guidance, data refresh cadence, and the click-through requirement for cashback credit. This materially changes how an agent should present and follow up on 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?
The opening sentence carries the core contract and every later paragraph addresses a distinct concern (when to call, sibling routing, result interpretation, presentation). It is long, but the example query list and presentation rules earn their place; slight trimming of redundant sibling routing would tighten it.
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?
Combined with a rich output schema and annotations, the description covers matching, scoping, empty results, retry behavior, refresh timing, and output presentation expectations. There are no obvious gaps for an agent to invoke this tool and interpret its response 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?
Input schema already has 100% description coverage for store_name and country_code, so the description only lightly reinforces matching semantics and retry advice; it adds no syntax or format details 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?
Opens with a distinct verb+object ('Finds a store by name and returns its current cashback rates') and precisely delimits coverage (every portal, online/in-store, percentage/fixed, up-to flags), which separates it from store lookup, gift card, and best-deal siblings.
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 declares itself the preferred first call and gives positive examples, then lists exclusions: don't call get_stores_by_name/get_stores_by_country/get_countries first; use get_cashback_rates_by_store_id only with known store_id; use gift-card and brand-deal siblings for other intents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_countriesSupported countriesARead-onlyIdempotentInspect
Returns the countries GotCashback covers, each with the lowercase ISO 3166-1 alpha-2 'code' to pass as country_code to the other tools (the United Kingdom is 'gb'). Use it only to confirm whether a country is supported or which code to use; it is not needed before store, cashback or gift card lookups — those tools accept country_code directly and search all countries when it is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| countries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, covering the safety profile, so the bar is lower. The description adds genuine context beyond that: the exact output format, the UK exception example, and the cross-tool contract that the returned 'code' feeds into other tools' country_code parameter. It doesn't disclose minor details like sort order or list exhaustiveness, but for a 0-param reference list these are low-stakes.
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 with no waste: the first front-loads the core purpose and key format detail with an example; the second delivers usage exclusions with rationale. Every clause earns its place.
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 0 params, a present output schema, and safety covered by annotations, the description covers everything an agent needs to call this tool correctly: what it returns, in what format, when to use it, and why it is not a required prerequisite for sibling lookups. Nothing material is missing for a simple read-only reference 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?
The tool has 0 parameters, so the baseline is 4 per the rubric. The description adds adjacent value by explaining that the return value's 'code' field is precisely what must be passed as country_code to sibling tools, effectively documenting the parameter contract of the entire tool family.
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 verb and resource — 'Returns the countries GotCashback covers' — and goes further by specifying the output format (lowercase ISO 3166-1 alpha-2) with a concrete example ('gb' for the United Kingdom). It differentiates from its 17 siblings by positioning itself as a reference lookup for country_code rather than a deals/cashback/stores tool.
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 states when to use it ('only to confirm whether a country is supported or which code to use') and when not to ('not needed before store, cashback or gift card lookups'), with the reason that those tools accept country_code directly and search all countries when omitted. This is a model of when/when-not guidance, with the alternative behavior clearly described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gift_cards_by_store_idGift card discounts by store IDARead-onlyIdempotentInspect
Returns the discounted gift cards currently on sale for one store identified by its numeric store_id, from multiple sellers, so the discounts can be compared. Use it only when a store_id is already known from an earlier result. When the user gives a store name instead, call get_gift_cards_by_store_name directly — do not look the id up first. Returns an empty list when no discounted cards are available and an error when the id does not exist. Present every returned seller's listing to the user (a table with a link column, not only the best discount) and always show each gift card's 'url' as a clickable link — that tracked link is where the user buys the card at the discounted price.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes | GotCashback's numeric store_id, taken from an earlier result (a store, cashback rate, gift card, deals, favorites or alerts response). If you only have a store name, use the by-name tool instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| gift_cards | No | Gift card listings from all sellers. Empty when none are available right now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral details beyond annotations: empty list behavior when no discounted cards exist, error behavior for a nonexistent id, multiple-seller comparison purpose, and the requirement to always show the tracked url as a clickable link. These are precisely the non-obvious behaviors an agent needs to invoke and present results correctly.
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 description is front-loaded with the core result, then covers usage conditions, edge cases, and output presentation in a compact set of sentences. Every sentence carries distinct information: result type, comparison purpose, when to use, when not to use, empty/error behavior, and required presentational format. No filler or redundancy weakens it.
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?
The tool is simple with one parameter, strong annotations, and a rich output schema, so the description does not need to restate return types. It covers the selection condition, the alternative tool, edge-case behavior, and user-facing presentation requirements. This is fully sufficient for correct invocation and result handling.
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 parameter description in the schema already explains that store_id is GotCashback's numeric id from an earlier result and directs name-only cases to the by-name tool. The tool description adds little parameter meaning beyond echoing 'numeric store_id' and the known-id condition, so baseline 3 is appropriate.
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 clearly states the tool returns discounted gift cards for one store by numeric store_id and emphasizes comparison across multiple sellers. It distinguishes itself from the sibling get_gift_cards_by_store_name by explicitly naming the ID-based vs name-based route, so an agent can disambiguate 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?
The description gives explicit when-to-use guidance: only when a store_id is already known from an earlier result. It also explicitly directs the agent to call get_gift_cards_by_store_name when only a store name is available and tells it not to look up the id first, which prevents a costly mistake. Additional presentation instructions add further practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gift_cards_by_store_nameGift card discounts by store nameARead-onlyIdempotentInspect
Finds a store by name and returns the discounted gift cards currently on sale for it from multiple gift card sellers — face value, price, discount percent, digital or physical — so the user can compare every seller and see the best discount. This is the preferred first call for any gift card question that names a store: 'best gift card discount for Gap', 'where can I buy discounted Instacart gift cards', 'compare Home Depot gift card discounts', 'current Target gift card deals'. No prior lookup is needed. Returns every matching store (best match first, one entry per country), each with its 'gift_cards' list and a 'gift_cards_url' page; an empty 'gift_cards' list means no discounted cards right now. Use get_gift_cards_by_store_id only when a store_id is already known, and get_cashback_rates_by_store_name when the user asks about cashback rates instead. Present every returned seller's listing to the user (a table with a link column, not only the best discount) and always show each gift card's 'url' as a clickable link — that tracked link is where the user buys the card at the discounted price. Also mention the store's 'gift_cards_url' page.
| Name | Required | Description | Default |
|---|---|---|---|
| store_name | Yes | The retailer or brand name as a shopper would say it, e.g. 'Walmart', 'Nike', 'Best Buy', 'Expedia', 'Home Depot'. Matched as a case-insensitive substring of the store name and its known alternate names, best match first. Pass the plain name only — no words like 'cashback', 'gift card' or a country. | |
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stores | No | Matching stores (one entry per country). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive, and the description adds meaningful behavior beyond that: multiple matching stores are returned best-match-first with one entry per country, an empty gift_cards list means no current discounts, and the returned url is a tracked purchase link. This gives the agent important runtime behavior without contradicting any annotation.
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 description is front-loaded with the core purpose, then flows naturally into usage examples, output behavior, alternative tools, and user-presentation instructions. Every sentence carries actionable information with no redundant filler or restatement of the title.
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 tool with two parameters, one required, the description is complete: it explains what triggers this tool, how results are ordered and structured, what an empty list means, which sibling to use instead, and exactly how the agent should present results to the user. The presence of an output schema means the return-shape details are already covered elsewhere.
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 the schema already fully documents store_name and country_code including matching semantics, examples, and ISO format notes. The main description adds no substantial parameter-level meaning beyond reinforcing that the lookup is by store name, so the baseline score of 3 is appropriate.
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 verb ('Finds a store by name'), the resource ('discounted gift cards'), and the exact output fields (face value, price, discount percent, digital or physical). It explicitly differentiates from the sibling get_gift_cards_by_store_id and get_cashback_rates_by_store_name, so an agent can identify this tool immediately.
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 description gives explicit when-to-use guidance: 'preferred first call for any gift card question that names a store', includes concrete example queries, and states 'No prior lookup is needed.' It also names the precise alternatives: use get_gift_cards_by_store_id when a store_id is already known, and get_cashback_rates_by_store_name for cashback questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_alertsMy alertsARead-onlyIdempotentInspect
Returns the signed-in user's cashback and gift card alerts (store, type, threshold percent, last notification). Use it for 'what alerts do I have?' or before changing an alert. Requires OAuth sign-in with a GotCashback account and the 'alerts' scope; anonymous callers are prompted to authorize.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnly, idempotent, and non-destructive; the description adds valuable context by requiring OAuth sign-in with GotCashback and the 'alerts' scope, and warns that anonymous callers are prompted to authorize. It also discloses the returned fields, which is useful since there is no 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?
Two sentences: the first states the function and returned data, the second gives usage contexts and auth requirements. Information is front-loaded and every sentence carries essential 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?
For a zero-parameter, read-only tool, the description covers what data comes back, when to use it, and the auth requirement. With no output schema and no params, 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?
The input schema has zero parameters and 100% description coverage, so there is nothing to explain. The description correctly focuses on the semantics of the resource being fetched rather than parameters.
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 the tool returns "signed-in user's cashback and gift card alerts" with specific fields (store, type, threshold percent, last notification). The verb 'Returns' and the focus on alerts clearly differentiate it from sibling tools like get_my_favorite_stores or set_store_alert.
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?
Provides explicit usage scenarios — 'what alerts do I have?' and 'before changing an alert' — which implies viewing current state prior to set/remove operations. It also notes the OAuth prerequisite for authorization. However, it does not name alternative tools directly or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_favorite_storesMy favorite storesARead-onlyIdempotentInspect
Returns the signed-in user's favorite stores (with their store_id). Use it when the user asks about 'my favorites' or 'my saved stores'; pair the store_ids with get_cashback_rates_by_store_id to report current rates for them. Requires OAuth sign-in with a GotCashback account; anonymous callers are prompted to authorize. All comparison tools work without signing in. Scope: 'favorites'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. The description adds valuable context beyond that: it requires OAuth sign-in and specifies that anonymous callers are prompted to authorize. This is a behavioral trait not conveyed by the hints.
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 description is generally tight and front-loaded with purpose, then usage, then auth. The final 'Scope: "favorites"' line is somewhat redundant with the first sentence, and the auth/alternative sentences could be tightened, but overall every sentence contributes meaningful routing or selection 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?
With no output schema, the description correctly states what is returned (favorite stores with store_id), covers auth requirements, and explains when to use it. It could be slightly more complete by describing the exact response shape or error cases, but for a parameterless, read-only favorites list the essential context is present.
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?
The tool has zero parameters, so the baseline for this dimension is 4. The description does not need to explain parameters, and it avoids any redundant parameter talk. It does reveal that store_id is part of the return value, which indirectly supports downstream parameter usage.
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 pair: 'Returns the signed-in user's favorite stores (with their store_id)', and scopes it to 'favorites'. It distinguishes this from sibling tools like get_my_alerts and get_my_profile by making the resource (favorite stores) and user scope explicit.
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?
Provides an explicit trigger condition: 'Use it when the user asks about "my favorites" or "my saved stores"'. It also contrasts against comparison tools by stating they work without signing in, giving an implicit when-not-to-use and pointing to the appropriate alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_profileMy profileARead-onlyIdempotentInspect
Returns the signed-in user's GotCashback profile (name, email, avatar). Use it when the user asks who they are signed in as or wants their account details. Requires OAuth sign-in with a GotCashback account; anonymous callers are prompted to authorize. All comparison tools work without signing in. Scope: 'profile'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only and idempotent, and the description adds genuinely useful behavioral context: OAuth sign-in is required, anonymous callers face an authorization prompt, and the OAuth scope is 'profile'. It does not cover error responses, but for a simple zero-parameter read call this is sufficient.
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?
Thtree sentenses delivver eveery sentense earns its place: what it returns, when to use it, and what auth is needed. The description is front-loaded with the core behavior and avoids redundancy with 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?
For a zero-parameter, read-only tool with no output schema, the description is complete: it states the return fields, the exact use case, the auth requirement, the anonymous-caller behavior, and the scope. An agent has everything needed to select and invoke 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?
There are no parameters, so the baseline is 4. The description adds no parameter-specific meaning because there are no parameters to document, and the input schema is already complete.
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: 'Returns the signed-in user's GotCashback profile' and lists the returned fields (name, email, avatar). This clearly distinguishes it from sibling get_my_alerts and get_my_favorite_stores, while the OAuth and scope details reinforce what the tool is for.
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 description explicitly states when to use the tool: when the user asks who they are signed in as or wants account details. It also gives useful context that anonymous callers are prompted to authorize and that comparison tools do not require sign-in, though it does not name specific alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portal_by_idPortal by IDARead-onlyIdempotentInspect
Returns one cashback portal by its numeric id (the 'id' from a get_portals or get_portals_by_name result) with its payout terms for that country. Use it only when the id is already known; when the user names a portal, call get_portals_by_name instead. Returns an error when the id does not exist. Each portal includes its payout terms for that country: 'sign_up_bonus' (amount and the url that grants it, null when none), 'minimum_payout' with 'minimum_payout_currency' (smallest balance paid out, null when not published, 0 means no minimum), 'payment_frequency' (how often it pays, e.g. 'On demand', 'Weekly', 'Monthly'), and 'payment_methods' (payout options, e.g. 'PayPal', 'Direct deposit', 'Check', 'Gift card'). Use these to answer questions about a portal's sign-up bonus, payout threshold, payment schedule and payment options. When mentioning a sign-up bonus, show its 'url' as a clickable link — the bonus is only credited when the user signs up through it.
| Name | Required | Description | Default |
|---|---|---|---|
| portal_id | Yes | GotCashback's numeric portal id, taken from the 'id' field of an earlier get_portals or get_portals_by_name result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| portal | No | A cashback portal in one country, with the payout terms it offers there. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the bar is lower, but the description adds substantial behavioral context beyond them: it returns an error for non-existent ids, documents null semantics ('null when none', 'null when not published', '0 means no minimum'), and exposes the critical caveat that the sign-up bonus is only credited when the user signs up through the provided url. This is exactly the kind of non-obvious behavior an agent needs to know.
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 description is long but dense with value: selection rule, error behavior, field semantics, and a usage caveat each earn their place, with the core purpose front-loaded. It loses a point for minor redundancy — 'with its payout terms for that country' appears twice — but is otherwise well-structured for its richness.
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 single-parameter lookup tool with an output schema, this is complete: the description covers when to use it, how to source the id, error behavior, field-by-field semantics for the result, and the special display rule for sign-up bonus urls. Nothing an agent needs to call it correctly and use its results is left unstated.
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 the baseline is 3. The schema already explains portal_id as 'GotCashback's numeric portal id, taken from the 'id' field of an earlier get_portals or get_portals_by_name result.' The description repeats this same sourcing guidance, adding no incremental meaning 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?
The description opens with a specific verb and resource: 'Returns one cashback portal by its numeric id... with its payout terms for that country.' It adds the key distinguishing constraint (lookup by id) and explicitly differentiates from the sibling get_portals_by_name, so an agent can tell them apart 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?
The description gives an explicit when and when-not: 'Use it only when the id is already known; when the user names a portal, call get_portals_by_name instead.' It also discloses the error case for non-existent ids and tells the agent how to use the returned fields to answer user questions, which is clear selection and invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portalsList cashback portalsARead-onlyIdempotentInspect
Returns the cashback portals GotCashback compares, optionally for one country, each with its payout terms. Use it to list the portals available in a country ('which cashback portals are there in Canada?') or to compare portals side by side — which pays fastest, has the lowest minimum payout, offers PayPal, or gives the biggest sign-up bonus. It does not return store rates: for 'which portal has the best cashback for [store]' call get_cashback_rates_by_store_name instead; for one named portal use get_portals_by_name. Each portal includes its payout terms for that country: 'sign_up_bonus' (amount and the url that grants it, null when none), 'minimum_payout' with 'minimum_payout_currency' (smallest balance paid out, null when not published, 0 means no minimum), 'payment_frequency' (how often it pays, e.g. 'On demand', 'Weekly', 'Monthly'), and 'payment_methods' (payout options, e.g. 'PayPal', 'Direct deposit', 'Check', 'Gift card'). Use these to answer questions about a portal's sign-up bonus, payout threshold, payment schedule and payment options. When mentioning a sign-up bonus, show its 'url' as a clickable link — the bonus is only credited when the user signs up through it.
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| portals | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description adds substantial context beyond it: country-scoped payout terms, the null vs 0 semantics of minimum_payout (null = not published, 0 = no minimum), and the attribution rule that sign_up_bonus.url must be rendered as a clickable link because the bonus only credits through it. No contradiction with annotations — 'Returns' is consistent with readOnlyHint=true.
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 definition is long (~200 words) but front-loaded: purpose in sentence one, usage and exclusions in sentences two and three, then field semantics and presentation rules. Every section earns its place, though there is minor redundancy between the two usage sentences ('Use it to...' and 'Use these to answer...'), which keeps it from a perfect score.
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 tool with one optional parameter, a fully documented input schema, an output schema, and safety annotations, the description covers everything else an agent needs: sibling routing, per-field semantics including edge cases, and the clickable-link presentation requirement. Nothing required to select and 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%: country_code is fully documented with format, examples, passthrough guidance, and omission semantics. The description adds only marginal context (results are country-scoped, payout terms are per-country), which does not materially improve parameter understanding, 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 first sentence names a specific verb ('Returns') and resource ('the cashback portals GotCashback compares') with an explicit optional country scope. It also differentiates from siblings inline: 'It does not return store rates' routes to get_cashback_rates_by_store_name, and 'for one named portal use get_portals_by_name', so an agent can distinguish it without opening other definitions.
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 description gives concrete query triggers ('which cashback portals are there in Canada?') and comparison use cases (payout speed, minimum payout, PayPal, sign-up bonus). It states explicit exclusions with named alternatives for store-rate lookups and single-portal lookups, so when-to-use and when-not-to-use are both fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portals_by_nameSearch portals by nameARead-onlyIdempotentInspect
Searches cashback portals by name (e.g. 'Rakuten', 'TopCashback', 'Honey') and returns each match with its payout terms, one entry per country the portal operates in. Use it when the user asks about a named portal: its sign-up bonus, minimum payout, how often it pays, or which payout methods it offers. For a store's cashback rate at that portal, call get_cashback_rates_by_store_name and read the 'portal' field of each rate instead. Each portal includes its payout terms for that country: 'sign_up_bonus' (amount and the url that grants it, null when none), 'minimum_payout' with 'minimum_payout_currency' (smallest balance paid out, null when not published, 0 means no minimum), 'payment_frequency' (how often it pays, e.g. 'On demand', 'Weekly', 'Monthly'), and 'payment_methods' (payout options, e.g. 'PayPal', 'Direct deposit', 'Check', 'Gift card'). Use these to answer questions about a portal's sign-up bonus, payout threshold, payment schedule and payment options. When mentioning a sign-up bonus, show its 'url' as a clickable link — the bonus is only credited when the user signs up through it.
| Name | Required | Description | Default |
|---|---|---|---|
| portal_name | Yes | The cashback portal name as users say it, e.g. 'Rakuten', 'TopCashback', 'Honey', 'Quidco'. Case-insensitive substring match, best match first. | |
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| portals | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and nondestructive. The description adds useful behavioral context beyond that: one entry per country, whether sign-up bonus exists (null), minimum_payout semantics, and the crucial fact that the bonus URL must be shown as a clickable link because the bonus is only credited through it.
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 main action, use cases, and the key alternative in the first three sentences. It becomes repetitive later ('Use these to answer...' restates the same fields) and spends several sentences re-explaining values that an output schema would already define, so it is not maximally concise.
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?
Given the read-only annotations, complete input schema, and output schema, the description supplies the missing context an agent needs: when to call it, which sibling to call instead, per-country result behavior, and output-presentation instructions like linking the sign-up bonus URL.
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% and both parameters already have rich descriptions (case-insensitive substring matching, country code formatting, 'gb' not 'uk'). The tool description reinforces use cases but does not add substantive parameter semantics 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?
Opens with a specific verb and resource: 'Searches cashback portals by name... returns each match with its payout terms, one entry per country.' It also contrasts with get_cashback_rates_by_store_name, so an agent can separate portal-level terms from store-level cashback rates.
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 states when to use: 'Use it when the user asks about a named portal: its sign-up bonus, minimum payout, how often it pays, or which payout methods it offers.' It also gives the exclusion: for a store's cashback rate, call get_cashback_rates_by_store_name instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stores_by_countryList stores in a countryARead-onlyIdempotentInspect
Lists every store that currently has cashback offers in one country — identity, store page url and whether discounted gift cards exist ('has_gift_cards', 'gift_cards_url'), but no rates. The list can run to hundreds of stores. Use it when the user wants to browse or count what is available in a country ('which stores offer cashback in Canada?', 'what stores have gift card deals in the UK?'). Do not use it to find a particular store or its rates: get_cashback_rates_by_store_name and get_gift_cards_by_store_name accept a store name plus an optional country_code directly. Use get_countries to see the supported country codes. When presenting stores, include each store's 'url' as a clickable link (and 'gift_cards_url' when present).
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes | Lowercase ISO 3166-1 alpha-2 country code, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia). Call get_countries to list every supported code. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stores | No | Matching stores (one entry per country). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so no contradiction exists. The description adds useful behavioral context beyond annotations: the result can include hundreds of stores, only current cashback-offer stores are included, and gift-card presence is indicated via specific fields with no rates returned. This goes beyond what annotations alone convey.
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 description is front-loaded with the core purpose and then provides usage guidance, exclusions, and presentation instructions. It is longer than minimal but each sentence carries information; the final formatting instruction is useful even if slightly beyond selection/invocation needs.
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?
Given the rich input schema, an output schema, and annotations, the description covers scope, limitations, alternatives, country-code handling, and output presentation. There are no significant gaps that would prevent an agent from invoking this tool 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?
The input schema already fully documents country_code with format, examples, and a pointer to get_countries, so high schema coverage gives a baseline of 3. The description reinforces that a single country is used but does not add substantially new parameter-level meaning 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?
The description uses a specific verb ('Lists') and resource ('every store that currently has cashback offers in one country'), and immediately clarifies what is excluded ('but no rates'). It also distinguishes itself from rate- and gift-card-focused siblings by naming them as alternatives. An agent can tell exactly what this tool does and does not return.
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 explicit when-to-use scenarios with example queries and explicitly warns against using it to find a particular store or its rates, naming the correct sibling tools instead. It also routes the agent to get_countries for supported codes. This is complete usage guidance with both positive and negative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stores_by_nameSearch stores by nameARead-onlyIdempotentInspect
Searches stores by name and returns the matching stores' identity only — store_id, name, country_code, website domain and GotCashback store page url — without cashback rates or gift cards. Use it when the user wants to know whether GotCashback covers a store, in which countries a store is listed, or when you need a store_id for the account tools (toggle_favorite_store, set_store_alert). For any question about cashback rates or gift card discounts call get_cashback_rates_by_store_name or get_gift_cards_by_store_name directly instead — they search by name themselves, so this tool is not a required first step. Returns matches best first; empty when nothing matched. When presenting stores, include each store's 'url' as a clickable link (and 'gift_cards_url' when present).
| Name | Required | Description | Default |
|---|---|---|---|
| store_name | Yes | The retailer or brand name as a shopper would say it, e.g. 'Walmart', 'Nike', 'Best Buy', 'Expedia', 'Home Depot'. Matched as a case-insensitive substring of the store name and its known alternate names, best match first. Pass the plain name only — no words like 'cashback', 'gift card' or a country. | |
| country_code | No | Optional. Lowercase ISO 3166-1 alpha-2 country code that limits results to one country, e.g. 'us' (United States), 'ca' (Canada), 'gb' (United Kingdom — use 'gb', not 'uk'), 'de' (Germany), 'au' (Australia), 'fr' (France). Pass it when the user names a country ('in Canada', 'UK cashback'); omit it to search all supported countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stores | No | Matching stores (one entry per country). Empty when nothing matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior, so the description goes beyond that by disclosing that results are identity-only, sorted best match first, and empty when nothing matches. It also adds presentation guidance for the returned URLs. No contradiction with annotations exists.
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?
Although long, the description is dense and well-ordered: scope, trigger conditions, exclusions, ordering, empty behavior, and presentation guidance each get exactly one sentence. Every sentence earns its place and the core output boundary is front-loaded.
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, complete parameter descriptions, and safety annotations, the description still covers use cases, alternatives, result ordering, empty behavior, and presentation instructions, so an agent has enough to select and invoke it correctly. The only minor wrinkle is mentioning 'gift_cards_url' after saying gift cards are excluded, which is slightly ambiguous even though it likely refers to a store page URL.
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?
The input schema already documents both parameters thoroughly at 100% coverage, including examples, lowercase country-code format, and the 'gb, not uk' guidance. The top-level description does not need to add parameter mechanics, so the baseline of 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 names a concrete verb and resource ('Searches stores by name') and then sharply bounds the result set to identity fields only, explicitly excluding cashback rates and gift cards. This makes it immediately distinguishable from siblings such as get_cashback_rates_by_store_name and get_gift_cards_by_store_name.
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 lists concrete trigger conditions: checking store coverage, seeing which countries a store is listed in, or obtaining a store_id for account tools. It also tells the agent when not to use it by routing cashback and gift-card questions directly to the sibling tools and clarifies this tool is not a required first step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_store_alertRemove a store alertADestructiveIdempotentInspect
Removes the signed-in user's alert for a store and alert type ('cashback' or 'gift_card'). Use it for 'stop alerting me about Nike cashback'. Use get_my_alerts to find the store_id and type of an existing alert. Requires OAuth sign-in with a GotCashback account and the 'alerts' scope; anonymous callers are prompted to authorize.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes | GotCashback's numeric store_id, taken from an earlier result (a store, cashback rate, gift card, deals, favorites or alerts response). If you only have a store name, use the by-name tool instead. | |
| alert_type | Yes | Alert type: 'cashback' (fires on the store's best cashback rate) or 'gift_card' (fires on the store's best gift card discount) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals important behavioral context beyond the annotations: the operation is scoped to the signed-in user's alert, requires OAuth with the 'alerts' scope, and prompts anonymous callers to authorize. The annotations already cover destructiveness and idempotence, so the description adds complementary value without contradiction.
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?
Every sentence earns its place: the core action, a concrete example, a lookup alternative, and the auth requirement. It is front-loaded with the primary purpose and contains 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?
For a two-parameter removal operation with idempotent and destructive annotations, the description covers the action, alert types, parameter sourcing, alternatives, and authentication. A minor gap is that it does not describe the response behavior, but this is acceptable without an output schema and with idempotence already annotated.
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 the schema already documents both parameters thoroughly. The description reinforces that store_id comes from an earlier result and gives the alert_type meaning, but does not need to add much beyond the schema. Baseline 3 is appropriate.
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 precise verb ('Removes') and a specific resource ('the signed-in user's alert for a store and alert type'), and clarifies the two possible alert types. This clearly distinguishes it from sibling tools like set_store_alert and get_my_alerts.
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 an explicit natural-language use case ('stop alerting me about Nike cashback'), tells the agent to use get_my_alerts to find the required store_id and type, and in the schema notes the by-name alternative when only a store name is available. This is direct when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_store_alertSet a store alertAIdempotentInspect
Creates or updates an alert that emails the signed-in user when a store's cashback rate or gift card discount reaches the threshold percent or higher. Use it for 'alert me when Nike cashback hits 10%' or 'tell me when Target gift cards are 15% off'. Re-saving an existing alert updates its threshold and re-arms it. At most 10 active alerts per user. Needs the store_id: take it from an earlier result, or find it with get_stores_by_name (optionally with country_code). Requires OAuth sign-in with a GotCashback account and the 'alerts' scope; anonymous callers are prompted to authorize.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes | GotCashback's numeric store_id, taken from an earlier result (a store, cashback rate, gift card, deals, favorites or alerts response). If you only have a store name, use the by-name tool instead. | |
| alert_type | Yes | Alert type: 'cashback' (fires on the store's best cashback rate) or 'gift_card' (fires on the store's best gift card discount) | |
| threshold_percent | Yes | Fire when the rate/discount reaches this percent or higher (greater than 0, at most 100), e.g. 10 for 10% |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral detail beyond those annotations: re-saving updates and re-arms the alert, the alert emails the user, there is a 10-alert cap, and anonymous callers are prompted to authorize. No contradiction with the 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?
The description is four dense sentences with no filler. It front-loads the core behavior, then efficiently covers update semantics, quota, store_id sourcing, and auth requirements. Every sentence earns its place.
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 mutating tool with no output schema, the description is self-contained: it explains create-vs-update behavior, trigger conditions, the alert limit, authorization, and how to obtain store_id. An agent has enough information to select and invoke the tool correctly without additional context.
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 schema already explains store_id provenance, alert_type values, and threshold_percent semantics. The main description mostly restates or illustrates these meanings with examples rather than adding new parameter-level information, so the baseline 3 is appropriate.
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 verb and resource: 'Creates or updates an alert that emails the signed-in user when a store's cashback rate or gift card discount reaches the threshold percent or higher.' It is clearly distinct from read-only siblings like get_my_alerts and remove_store_alert, and includes concrete use-case examples.
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 description gives explicit when-to-use examples, explains the store_id sourcing path including the get_stores_by_name fallback, and states the OAuth scope requirement. It also discloses the 10-active-alert limit, giving an agent enough context to decide whether this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_favorite_storeAdd or remove a favorite storeAIdempotentInspect
Adds a store to, or removes it from, the signed-in user's favorite stores. Use it for 'add Best Buy to my favorites' or 'remove Nike from my favorites'. Needs the store_id: take it from an earlier result, or find it with get_stores_by_name (optionally with country_code). Requires OAuth sign-in with a GotCashback account; anonymous callers are prompted to authorize. All comparison tools work without signing in. Scope: 'favorites'.
| Name | Required | Description | Default |
|---|---|---|---|
| favorite | Yes | true to add the store to favorites, false to remove it | |
| store_id | Yes | GotCashback's numeric store_id, taken from an earlier result (a store, cashback rate, gift card, deals, favorites or alerts response). If you only have a store name, use the by-name tool instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that this mutates user-specific state, requires OAuth sign-in, prompts anonymous callers to authorize, and scopes the operation to 'favorites'. This meaningfully supplements the idempotentHint and destructiveHint annotations without contradicting them.
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 description is moderately long but every sentence carries useful information: purpose, examples, parameter sourcing, auth requirements, and scope. It is front-loaded with the core semantics and avoids fluff, though a couple of phrases could be tightened.
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 simple two-parameter tool with no output schema, the description covers purpose, parameter provenance, authentication, scope, and alternatives. An agent has everything needed to select and invoke the tool correctly in common scenarios.
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?
The input schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds value by explaining where store_id can come from, suggesting get_stores_by_name as a lookup path, and mentioning the optional country_code for that lookup.
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 precise operation—adding or removing a store from the signed-in user's favorite stores—with concrete example utterances for both directions. It clearly differentiates this mutation tool from read-only siblings like get_my_favorite_stores and from store-lookup tools.
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 description explicitly tells the agent when to use the tool via natural language examples, and it routes store_id lookup to get_stores_by_name when only a store name is available. It also notes that comparison tools work without signing in, giving helpful context about when this tool is not needed.
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. Dates show when Glama detected each change.
18 tool updates
- First observed
get_best_deals_by_brand - First observed
get_best_deals_by_category - First observed
get_cashback_rates_by_store_id - First observed
get_cashback_rates_by_store_name - First observed
get_countries - First observed
get_gift_cards_by_store_id - First observed
get_gift_cards_by_store_name - First observed
get_my_alerts - First observed
get_my_favorite_stores - First observed
get_my_profile - First observed
get_portal_by_id - First observed
get_portals - First observed
get_portals_by_name - First observed
get_stores_by_country - First observed
get_stores_by_name - First observed
remove_store_alert - First observed
set_store_alert - First observed
toggle_favorite_store
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Find shopping deals, earn cashback, and redeem rewards across retail, dining, and travel brands.
Verified deals, store policies & a trust score for thousands of online retailers. No auth.
Verified discount & referral codes for crypto exchanges, cards and more — tested first-hand.
Search live credit card merchant offers across Amex, Chase, Citi, PayPal, Rakuten, Capital One.
Related MCP Servers
- AlicenseBqualityCmaintenanceCompare parcel and letter delivery prices across 60+ carriers in 27 European countries.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and comparing live credit card merchant offers (cash back, points, statement credits) across Amex, Chase, Citi, PayPal, Rakuten, and Capital One from any AI agent.-
- AlicenseNot gradedqualityDmaintenanceEnables users to compare prices, track budgets, and find promotional deals across major Dutch supermarkets and drugstores. It supports automated shopping list optimization, meal planning, and price history alerts for stores like Albert Heijn, Jumbo, and Kruidvat.13MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search, compare, and track prices across 40+ retailers in Southeast Asia and the US using MCP tools.2-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct resource or query dimension: store name vs. store ID, brand vs. category vs. store, portal list vs. portal search, and account actions. Descriptions include explicit routing rules for ambiguous cases like a brand that is also a store name.
All tools use lowercase snake_case with a consistent verb-first pattern: get_ for reads, set_/remove_/toggle_ for mutations. The singular/plural variation in get_portal_by_id vs. get_portals_by_name is logical and follows result cardinality.
18 tools is slightly above the typical well-scoped 3-15 range, but each tool covers a distinct access path or lifecycle action. The by-name/by-id variants could be consolidated, but the breadth of the cashback, gift card, portal, and account domains justifies the count.
The tool surface covers the full read workflow for countries, stores, rates, gift cards, portals, and deals, plus account lifecycle for favorites and alerts. Store IDs from lookup tools feed directly into ID-based lookups and account mutations, so there are no obvious dead ends.