verified-codes
Server Details
Verified discount & referral codes for crypto exchanges, cards and more — tested first-hand.
- Status
- Healthy
- Uptime
- 100.0% over 62 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
get_code is an exact brand/slug lookup, list_brands browses/filters by category, and search_codes does free-text matching — three fairly distinct access patterns. There is minor overlap since both list_brands and search_codes can return multiple brand records, but descriptions make the boundaries clear.
All three tools follow a clean verb_noun pattern (get_code, list_brands, search_codes) with consistent snake_case. No deviation or mixed conventions.
Three tools is on the lean side but well-matched to a read-only verified-code directory. Each tool serves a distinct lookup mode, so nothing feels redundant or missing at the structural level.
The core retrieval surface is covered: exact lookup, category browse, and free-text search, which suits a read-only reference directory where CRUD is not expected. Minor gaps exist (e.g. no explicit category listing or last-verified freshness filter) but agents can work around them.
Available Tools
3 toolsget_codeGet the verified code for a brandARead-onlyInspect
Returns the full verified-code record for one brand: the code, the benefit, how to apply it, last-verified date, availability notes, and the guide/review URLs. Match by brand name or slug (e.g. 'kraken', 'Bybit Card').
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | Brand name or slug, e.g. 'kraken' or 'Bybit Card' |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| code | Yes | |
| slug | Yes | |
| brand | Yes | |
| status | Yes | |
| aliases | Yes | |
| benefit | Yes | |
| category | Yes | |
| keywords | Yes | |
| validity | Yes | |
| expires_at | Yes | No fixed expiry timestamp is recorded. Consult validity and benefit_detail for trial windows and program conditions. |
| review_url | Yes | |
| signup_url | Yes | |
| how_to_apply | Yes | |
| country_notes | Yes | |
| last_verified | Yes | ISO date of the historical check recorded in the verification log, not an expiry date. |
| benefit_detail | Yes | |
| verification_log_url | Yes | |
| verification_methods | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the exact-match lookup semantics, but says nothing about not-found behavior, ambiguity handling, or result freshness beyond the 'last-verified date' field.
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?
One front-loaded sentence covering both the return payload and the matching key, with zero filler. 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 an output schema present and annotations covering read-only safety, the description need not document return values, and it is sufficient for a one-parameter lookup. It stops short of covering the failure case (brand not found) or routing to search_codes when the exact name is uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents 'Brand name or slug, e.g. kraken or Bybit Card'. The description's examples duplicate the schema verbatim, adding no new syntax, casing, or fallback guidance. 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 ('Returns the full verified-code record for one brand') and enumerates the record's contents, so the agent knows exactly what it retrieves. It is distinguishable from the list/search siblings by the 'one brand' scope, though it never names them explicitly.
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 tells the agent how to match ('by brand name or slug') but gives no guidance on when to use this versus search_codes or list_brands, nor what to do when the exact brand is unknown. Usage is implied by the singular-brand framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brandsList all brands with verified codesARead-onlyInspect
Returns a brands array with each brand's category, offer and code (if any). Optionally filter by category: crypto-exchange, crypto-card, hardware-wallet, trading-tools, travel-esim, creator-tools, dining, home-design, ai-tools.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter, e.g. 'crypto-exchange' |
Output Schema
| Name | Required | Description |
|---|---|---|
| brands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is handled. The description adds that the code field is optional ('if any') and enumerates the category filter values, but does not disclose pagination, result limits, or other behavioral nuances.
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 a single sentence that front-loads the return shape and immediately provides the filter options. There is no filler or redundant restatement of the tool name.
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 optional parameter with an output schema and read-only annotations, the description is largely sufficient. It lacks a brief note on how 'all brands' relates to 'verified codes' and whether results are paginated, but these are minor given the tool's simplicity.
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 schema describes the category parameter with only an example, while the description explicitly lists all nine valid category values. This adds real meaning beyond the schema, even though schema coverage is 100%.
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 a brands array with category, offer, and code, and identifies the optional category filter. It does not explicitly differentiate itself from the sibling tools get_code and search_codes, though the resource emphasized is brands rather than individual codes.
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 usage is implied: list all brands, optionally filtered by category. There is no explicit guidance about when to prefer list_brands over get_code or search_codes, nor any exclusions, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codesSearch codes by free textARead-onlyInspect
Free-text search across brands, categories and offers, e.g. 'stock perps discount', 'esim', '20% off exchange'. Returns matching verified-code records.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description does add real context beyond the annotations: the search spans brands, categories and offers, and the results are 'verified-code records' rather than raw or all codes. It says nothing about match ranking, result caps, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence for scope, one for the return, with the examples inline. No filler, no restatement of the title, and the searchable-domain information 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?
For a single-parameter, read-only search with an output schema and annotations already in place, the description is close to sufficient: it covers domain, query style, and result nature. The only gap is ranking, pagination or result-limit behavior, which is minor given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, and the description earns a bump by showing the actual shape of the query string through three examples. Those examples establish that 'query' is natural-language free text and not an ID or structured filter, which the schema's 'Search terms' alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('free-text search across brands, categories and offers') and specifies what it matches over, with concrete query examples. It never names the siblings get_code or list_brands, so an agent must infer that this retrieves multiple codes rather than one by ID or a brand list, but the purpose itself is unmistakable.
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 examples ('stock perps discount', 'esim', '20% off exchange') imply a query-shaped task and thereby imply when to reach for this tool, but there is no explicit statement of when to use it versus get_code or list_brands, and no exclusions. Usage is inferable rather than stated.
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.
2 tool updates
- Changed
get_code3 fields changed- changed
Output schema / properties / expires_at / descriptionPrevious value: -"The publisher's codes have no expiry date."New value: +"No fixed expiry timestamp is recorded. Consult validity and benefit_detail for trial windows and program conditions." - removed
Output schema / properties / validity / constRemoved value: -"no-expiry" - added
Output schema / properties / validity / enumAdded value: +[ + "no-expiry", + "terms-dependent" +]
- Changed
search_codes3 fields changed- changed
Output schema / properties / results / items / properties / expires_at / descriptionPrevious value: -"The publisher's codes have no expiry date."New value: +"No fixed expiry timestamp is recorded. Consult validity and benefit_detail for trial windows and program conditions." - removed
Output schema / properties / results / items / properties / validity / constRemoved value: -"no-expiry" - added
Output schema / properties / results / items / properties / validity / enumAdded value: +[ + "no-expiry", + "terms-dependent" +]
3 tool updates
- Changed
get_code1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "benefit": { + "type": "string" + }, + "benefit_detail": { + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "code": { + "type": [ + "string", + "null" + ] + }, + "country_notes": { + "type": [ + "string", + "null" + ] + }, + "expires_at": { + "description": "The publisher's codes have no expiry date.", + "type": "null" + }, + "how_to_apply": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "last_verified": { + "description": "ISO date of the historical check recorded in the verification log, not an expiry date.", + "type": [ + "string", + "null" + ] + }, + "review_url": { + "type": [ + "string", + "null" + ] + }, + "signup_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "status": { + "const": "active", + "type": "string" + }, + "url": { + "type": "string" + }, + "validity": { + "const": "no-expiry", + "type": "string" + }, + "verification_log_url": { + "type": "string" + }, + "verification_methods": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "brand", + "slug", + "category", + "code", + "benefit", + "benefit_detail", + "status", + "validity", + "expires_at", + "last_verified", + "verification_methods", + "verification_log_url", + "aliases", + "country_notes", + "url", + "review_url", + "signup_url", + "how_to_apply", + "keywords" + ], + "type": "object" +}
- Changed
list_brands1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "brands": { + "items": { + "properties": { + "benefit": { + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "code": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "brand", + "slug", + "category", + "code", + "benefit", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "brands" + ], + "type": "object" +}
- Changed
search_codes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "count": { + "type": "integer" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "benefit": { + "type": "string" + }, + "benefit_detail": { + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "code": { + "type": [ + "string", + "null" + ] + }, + "country_notes": { + "type": [ + "string", + "null" + ] + }, + "expires_at": { + "description": "The publisher's codes have no expiry date.", + "type": "null" + }, + "how_to_apply": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "last_verified": { + "description": "ISO date of the historical check recorded in the verification log, not an expiry date.", + "type": [ + "string", + "null" + ] + }, + "review_url": { + "type": [ + "string", + "null" + ] + }, + "signup_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "status": { + "const": "active", + "type": "string" + }, + "url": { + "type": "string" + }, + "validity": { + "const": "no-expiry", + "type": "string" + }, + "verification_log_url": { + "type": "string" + }, + "verification_methods": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "brand", + "slug", + "category", + "code", + "benefit", + "benefit_detail", + "status", + "validity", + "expires_at", + "last_verified", + "verification_methods", + "verification_log_url", + "aliases", + "country_notes", + "url", + "review_url", + "signup_url", + "how_to_apply", + "keywords" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "results" + ], + "type": "object" +}
3 tool updates
- First observed
get_code - First observed
list_brands - First observed
search_codes
Related MCP Connectors
Verified referral and discount codes for crypto exchanges, wallets and trading tools. Read-only.
Codes de parrainage vérifiés à la source (France et francophonie) : code, avantage filleul et parrain, conditions, date de vérification et lien vers la fiche. Verified French referral codes and sign-up bonuses (banks, crypto, energy, telecom, shopping, food...). Free, public, read-only, no API key.
Fees, availability and referral terms for 60+ crypto trading venues (Axiom, Pump.fun, Hyperliquid…).
Honest buying guides for crypto exchanges and hardware wallets, with disclosed affiliate links.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to fetch real-time exchange trading fees, compare rebate-adjusted costs, obtain referral links, calculate trading costs, and identify compliant exchanges for crypto trading.696 npmMIT
- FlicenseNot gradedqualityFmaintenanceAI-native cryptocurrency exchange built for autonomous agents. Register, deposit USDC, select a strategy, and trade 8 crypto pairs (BTC, ETH, SOL + more) programmatically — no KYC required. Includes sandbox with 10,000 virtual USDC for testing.-
- AlicenseAqualityBmaintenanceEnables AI agents to calculate and compare crypto exchange trading costs, including fees, funding, spreads, slippage, withdrawals, fiat on/off-ramps, VIP tiers, referral links, and country-specific availability. It provides sourced, annualized all-in cost analysis and recommendations for different trader profiles and volumes.1957 npmMIT
- AlicenseBqualityFmaintenanceCross-exchange crypto orderflow for AI agents. 20 exchanges, 26 tokens, 9 tools — CVD, whale activity, funding/OI, 7-year OHLCV, on-chain address risk (EVM + Solana). Pay-per-call USDC via x402, no API key.927 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.