verified-codes
Server Details
Verified discount & referral codes for crypto exchanges, cards and more — tested first-hand.
- Status
- Healthy
- Uptime
- 100.0% over 40 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
The three tools serve distinct lookup modes: direct brand lookup, structured category browsing, and free-text search. There is minor overlap because list_brands and search_codes both return code information, but their intended use cases are clear enough to avoid major misselection.
All tool names follow a consistent verb_noun pattern: get_code, list_brands, search_codes. This makes the tool set predictable and easy for an agent to reason about.
Three tools is well-scoped for a read-only verified-codes lookup service. Each tool covers a distinct access path—single record, list by category, and full-text search—without unnecessary duplication.
The domain is retrieving verified discount/code information, and the tool set covers direct retrieval, browsing by category, and free-text discovery. Since this appears to be a read-only data source, no create/update/delete operations are expected, so there are no obvious dead ends.
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 | The publisher's codes have no expiry date. |
| 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 signal a safe read-only operation, so the description does not need to cover destructive or side-effect behavior. It adds useful context about matching by name or slug and the composition of the returned record, though it does not disclose edge-case behaviors like case sensitivity or missing brands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return value and followed by matching guidance. Every clause earns its place; no filler or restatement.
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 low-complexity single-parameter lookup, the description, input schema, output schema, and read-only annotations together cover what the agent needs. The validation rule is clear, examples are provided, and nothing important 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%, and the property description already provides examples ('kraken' or 'Bybit Card'). The description repeats these examples but does not add significant new parameter-level meaning, 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 states a specific action ('Returns the full verified-code record') and a clear scope ('for one brand'), and enumerates what fields are included. The singular-resource scope also distinguishes it from siblings list_brands and search_codes without ambiguity.
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 clearly establishes the lookup context: use when you need one brand's complete verified-code record, matched by brand name or slug. It does not explicitly name alternatives or exclusion conditions, but the one-brand targeting makes the intended use evident.
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, covering the safety and completeness profile. The description adds that results are 'matching verified-code records,' but does not discuss ordering, result limits, or empty-result behavior. With annotation coverage, a 3 is appropriate.
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 tightly written sentence that front-loads the action and scope, then illustrates with examples. Every clause carries useful information and there is no repetition of the schema or 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 single-parameter, read-only search tool with full schema documentation and an output schema present, the description provides everything an agent needs to invoke it correctly. The examples and scope statement remove ambiguity about query intent.
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 'query' parameter is already documented as 'Search terms.' The description goes beyond this by explaining the free-text nature and giving three diverse example queries that clarify expected phrasing and scope. This adds genuine value.
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 ('search'), resource ('verified-code records'), and search surface ('brands, categories and offers'). The title and description clearly differentiate it from siblings: get_code is for looking up a specific code and list_brands is for listing brands, not free-text searching.
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 clear usage context with concrete examples ('stock perps discount', 'esim', '20% off exchange') that tell an agent what kind of queries belong here. It does not explicitly name when-not-to-use it or point to get_code/list_brands as alternatives, so it stops short of a 5.
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.
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.
Honest buying guides for crypto exchanges and hardware wallets, with disclosed affiliate links.
Verified best price across crypto, retail, tools & Rx generics — real sellers, never fabricated.
Compare cashback rates across portals and discounted gift cards for stores in 30+ countries.
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.6270 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.19247 npmMIT
- AlicenseBqualityDmaintenanceCross-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.914 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.