Exchange.news — Crypto offers and campaigns
Server Details
Read-only crypto signup codes, permanent partner links and separately sourced campaign windows.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct action, but get_code and search_codes both involve retrieving code-related information, which could occasionally cause misselection. The descriptions do enough to separate exact lookup from open-ended search, and list_brands/list_campaigns are clearly distinct.
All tools follow a consistent verb_noun snake_case pattern: get_code, list_brands, list_campaigns, search_codes. The verbs are appropriately chosen and the naming is predictable across the entire set.
Four tools is a well-scoped size for this read-only catalog surface. Each tool has a clear purpose, and there is no obvious padding or missing core operation.
The server covers the main read-only workflows: browsing brands, searching codes, fetching exact code details, and listing campaigns. A minor gap is the lack of a dedicated campaign detail lookup, but the existing list_campaigns provides enough information for most use cases.
Available Tools
4 toolsget_codeGet one brand offerARead-onlyIdempotentInspect
Get a brand or alias, exact published code/link, offer type, instructions and caveats. A brand match never establishes region or product eligibility. Unknown brands return found:false.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | Brand name, slug or alias, e.g. OKX or ether.fi. | |
| region | No | Optional region context. Does not establish eligibility. | |
| product | No | Optional product context. Does not establish eligibility. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| offer | Yes | |
| notice | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and idempotentHint already in annotations, the description adds valuable behavioral context: 'A brand match never establishes region or product eligibility' and 'Unknown brands return found:false.' These state important data semantics that the annotations alone do not 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 two compact sentences with no filler, front-loading the core retrieval purpose and then adding the two most important caveats. Every sentence contributes 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?
The tool is simple, the schema is fully described, and an output schema exists, so the description does not need to enumerate return fields. It covers the key caveats and unknown-brand behavior, making it complete enough for an agent to call 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?
Schema description coverage is 100%, so the baseline is 3. The description mostly restates what the schema already says, such as brand or alias and the eligibility caveat for region/product. It adds no meaningful parameter-level detail beyond the schema's existing descriptions.
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 ('Get') and a precise resource ('a brand or alias'), and lists the exact returned content: published code/link, offer type, instructions and caveats. The phrase 'one brand offer' in the title and the focus on a single brand clearly distinguishes it from sibling list/search 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 implies the tool is for retrieving a single brand's offer by brand name or alias, but it does not explicitly say when to prefer this over list_brands or search_codes. No exclusions or alternative routing are provided, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brandsList brands and public offersARead-onlyIdempotentInspect
Browse brands with their public offer type, visible code or null, lifetime signup link and full conditions. Optional exact category filter. No live eligibility check.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| category | No | Optional category: exchanges, wallets, cards, hardware, analytics or defi. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| total | Yes | |
| brands | Yes | |
| notice | Yes | |
| offset | Yes | |
| has_more | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the 'No live eligibility check' note, which is not covered by annotations, and clarifies that the visible code can be null. This provides extra behavioral context beyond the structured metadata.
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 extremely concise, consisting of three short sentences that front-load the main purpose and include the key filtering option. Every sentence contributes value with no fluff.
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 an output schema exists and read-only annotations are present, the description covers the essential return contents (offer type, code, link, conditions) and notes the absence of live eligibility checks. Pagination behavior is left to the schema, which is acceptable.
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 only 33% (category has a description). The description mentions the optional category filter but does not elaborate on limit or offset parameters, which remain undocumented in both schema and description. It adds minimal meaning beyond the schema for category and nothing for pagination.
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 lists brands with specific attributes (public offer type, visible code or null, lifetime signup link, full conditions) and an optional exact category filter. This distinguishes it from siblings like list_campaigns (campaigns) and search_codes (codes), 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 implies usage for browsing brands but does not explicitly mention when to use this tool versus alternatives like search_codes or list_campaigns. There is no exclusion or routing guidance, so an agent must infer from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsList published campaign announcementsARead-onlyIdempotentInspect
List source-backed campaign announcements, official source links and published event windows. Dates are independent of lifetime referral codes. Does not claim campaigns are active or that a user qualifies.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Optional exact provider brand, slug or alias. | |
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| total | Yes | |
| notice | Yes | |
| offset | Yes | |
| has_more | Yes | |
| campaigns | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds valuable nuance beyond those annotations: dates are independent of lifetime referral codes, and the tool does not claim campaigns are active or that a user qualifies. This clarifies semantic boundaries the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct meaning: what is listed, how dates behave, and what the listing does not assert. It is front-loaded and contains no filler, repetition, or unnecessary detail.
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 presence of an output schema, annotations covering safety/idempotency, and only three optional parameters, the description covers the semantic essentials. It could add more context about pagination or brand filtering, but those are at least partially encoded in the input schema. The main gap is already scored under parameter semantics.
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 only 33% – only 'brand' has descriptive text, while 'limit' and 'offset' rely on numeric constraints. The description adds no parameter-level meaning, leaving the undocumented parameters underspecified for a tool with low schema coverage. It should have compensated but does not.
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 specific verb and resource: 'List source-backed campaign announcements, official source links and published event windows.' It is distinctly about campaigns and explicitly clarifies a non-claim about activity or user qualification, which helps differentiate it from code/brand tools. It does not explicitly name sibling alternatives, but the purpose itself is 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 implies usage context by stating that dates are independent of referral codes and that it does not assert campaign activity or user eligibility. However, it never explicitly states when to prefer this tool over sibling tools like search_codes or get_code, nor does it state exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codesSearch public offersARead-onlyIdempotentInspect
Search brand aliases, categories and benefits. Generic promo/code words are ignored. Exact brand matches come first. Returns only catalog records; unknown queries return an empty array. Product and regional applicability remain subject to each caveat.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Search text, e.g. OKX EU stock perps discount. | |
| offset | No | ||
| region | No | Optional region context. Does not establish eligibility. | |
| product | No | Optional product context. Does not establish eligibility. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| total | Yes | |
| notice | Yes | |
| offset | Yes | |
| results | Yes | |
| has_more | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral details: generic promo/code words are ignored, exact brand matches are prioritized, only catalog records are returned, unknown queries yield an empty array, and product/region do not establish eligibility. These are valuable clarifications beyond 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 compact and front-loaded, with each sentence contributing meaningful information. It covers matching behavior, ordering, return type, empty results, and caveats without unnecessary filler. This is an efficient, well-structured description.
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 search tool with an output schema and clear safety annotations, the description covers the most important behavioral aspects: what is searched, matching rules, ordering, empty results, and non-eligibility caveats. Minor gaps remain around pagination and how limit/offset interact with the result list, but these are partly addressed by the schema and output schema.
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 60%, with query, region, and product described in the schema. The description adds context by noting matching behavior and that product/regional applicability is caveated, which enriches region and product semantics. However, it does not clarify limit or offset semantics, and it does not fully compensate for the missing schema descriptions.
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 identifies the action ('Search') and the resources: brand aliases, categories, and benefits. It adds behavioral specifics such as exact brand matches first and catalog-record-only returns, making the tool's purpose easy to grasp. It does not explicitly distinguish itself from siblings like list_brands or get_code, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: it is for searching brand aliases, categories, and benefits, and generic promo/code words are ignored. However, it gives no explicit when-not-to-use guidance or references to sibling tools such as get_code or list_brands. Usage context is mostly implied 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.
4 tool updates
- First observed
get_code - First observed
list_brands - First observed
list_campaigns - First observed
search_codes
Related MCP Connectors
Verified referral and discount codes for crypto exchanges, wallets and trading tools. Read-only.
- PartliOAuthapp.partli
Run your affiliate program from any agent: partners, commissions, payouts, bounties, recruitment.
Read-only crypto and traditional portfolio: holdings, PNL, FIFO tax figures and market data.
Read-only gateway for durable agent identity, consent, recognized work, and signed receipts.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides read-only access to TikTok advertising data, including campaigns, ad groups, ads, and performance reports through the TikTok Business API.643MIT
- AlicenseAqualityBmaintenanceEnables read-only access to Klaviyo marketing data, including campaigns, flows, segments, metrics, reports, and customer profiles, across multiple Klaviyo accounts.2427 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables reading campaign, segment, and message-delivery data from the Customer.io Journeys App API, including campaign metrics, audience segments, and recipient-level message outcomes.MIT
- AlicenseAqualityDmaintenanceApple Search Ads API v5 (read-only). Campaigns, ad groups, keywords, performance reports.91MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.