ChangeNOW
Server Details
Quote, create and track cross-chain crypto swaps. Non-custodial exchange, no account, no KYC.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Tool Definition Quality
Average 4.6/5 across 7 of 7 tools scored.
Each tool targets a distinct stage or resource: asset discovery, quoting, validation, order creation, link generation, and status tracking. Even the overlapping swap-related tools are clearly separated by whether they compute, create, or hand off to the user.
Most names follow a clear verb_noun pattern: list_assets, get_asset, quote_swap, create_swap, check_swap_status, validate_address. swap_link is the one outlier, as it reads as a noun rather than an action, slightly breaking the otherwise consistent pattern.
Seven tools is well-scoped for a swap-focused exchange API. Each tool covers an essential part of the workflow without redundancy or bloat.
The set covers the full swap workflow: discover assets, get asset details, quote with rates and limits, validate recipient addresses, create or link a swap, and check the resulting order status. No critical missing operation is apparent for the stated purpose.
Available Tools
7 toolscheck_swap_statusCheck a swap orderARead-onlyIdempotentInspect
Follow an existing order by id: where it stands, what the deposit and payout amounts turned out to be, the transaction hashes, and a plain-language explanation of what the current stage means and what happens next. Use it after create_swap, and again whenever the user asks where their swap is.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order id returned by create_swap. | |
| sub_id | No | Sub order id, for an order the provider split in two. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| to | Yes | |
| from | Yes | |
| status | Yes | |
| provider | Yes | |
| amount_to | Yes | |
| track_url | Yes | |
| created_at | Yes | |
| payin_hash | Yes | |
| updated_at | Yes | |
| amount_from | Yes | |
| payout_hash | Yes | |
| refund_hash | Yes | |
| refund_memo | Yes | |
| valid_until | Yes | |
| payin_address | Yes | |
| refund_amount | Yes | |
| payin_extra_id | Yes | |
| payout_address | Yes | |
| refund_address | Yes | |
| payout_extra_id | Yes | |
| stage_explanation | Yes | |
| expected_amount_to | Yes | |
| deposit_received_at | Yes | |
| expected_amount_from | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations by explaining what the response includes: current stage, actual deposit and payout amounts, transaction hashes, and a plain-language explanation of the stage and next steps. 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 two sentences with no filler. The first sentence front-loads the core purpose and enumerates the key return contents; the second sentence gives the usage trigger. 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?
For a simple status-lookup tool with 2 parameters, full schema coverage, a rich output schema, and strong annotations (read-only, idempotent, non-destructive), the description supplies the missing context: what the tool reports, when to use it, and how it fits in the swap workflow. Nothing essential 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 schema already describes id as 'Order id returned by create_swap' and sub_id as 'Sub order id, for an order the provider split in two.' The description mentions 'by id' but adds no parameter-specific meaning beyond what the schema provides, 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 opens with a specific verb and resource: 'Follow an existing order by id' — this is clearly a status-check operation, not a creation or quote operation. It lists concrete outputs (deposit/payout amounts, transaction hashes, stage explanation) that make its purpose unmistakable and distinguish it from sibling tools like create_swap, quote_swap, and swap_link.
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 usage context: 'Use it after create_swap, and again whenever the user asks where their swap is.' This tells the agent the temporal trigger and the user-intent trigger. It does not explicitly state when not to use it or name alternatives, but the usage guidance is specific enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_swapCreate a swap orderAInspect
Create a real swap order and return the deposit address the user has to send funds to. This call moves no money by itself, but the order is real: it exists in support, it can expire, and a fixed rate is locked against it. Quote the swap first, validate the recipient address, and confirm the amount and the address with the user before calling this. If the user has not explicitly approved both, use swap_link instead and let them confirm on the page. The answer names who executes the order, and that has to be relayed: some orders are routed to a partner aggregator rather than ChangeNOW.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Asset the user receives, canonical id, for example "usdt.trx". | |
| from | Yes | Asset the user sends, canonical id, for example "eth.eth". | |
| memo | No | Memo or destination tag for the recipient address, when the asset needs one. | |
| address | Yes | Address that receives the swapped asset. Check it with validate_address first; a wrong network here loses the funds. | |
| rate_id | No | The rate_id from quote_swap with rate_type "fixed". Required for a fixed rate order, and it expires after about ten minutes. | |
| amount_to | No | Amount the user wants to receive. Requires rate_id from quote_swap. | |
| promo_code | No | Promo code to apply, if the user has one. | |
| amount_from | No | Amount the user sends. Pass this or amount_to, never both. | |
| refund_memo | No | Memo for the refund address. | |
| contact_email | No | Optional email for status notifications about this order. | |
| refund_address | No | Where the deposit returns if the swap cannot complete. Strongly recommended: without it a failed swap needs support. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| to | Yes | |
| from | Yes | |
| status | Yes | |
| provider | Yes | |
| warnings | Yes | |
| amount_to | Yes | |
| rate_type | Yes | |
| track_url | Yes | |
| created_at | Yes | |
| amount_from | Yes | |
| refund_memo | Yes | |
| valid_until | Yes | |
| payin_address | Yes | |
| payin_extra_id | Yes | |
| payout_address | Yes | |
| refund_address | Yes | |
| payout_extra_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses key behavioral traits: 'moves no money by itself' but the order is real, can expire, and locks a fixed rate. It also warns that some orders are routed to a partner aggregator rather than ChangeNOW, which is essential context for the agent to relay. Annotations already indicate readOnly false, so this description complements rather than contradictions.
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?
While the description is longer than average, every sentence adds needed context: purpose, side-effect caveat, prerequisite workflow, alternative tool, and post-call relay requirement. Important warnings are front-loaded before workflow details, and there is no filler or repetition.
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 11 parameters with complete schema documentation and an output schema, the description covers the remaining decision-relevant context: when to use it, when to use swap_link, what to confirm with the user, and what to relay from the response. Nothing critical for correct invocation 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 100% parameter description coverage, so the heavy lifting is already done there. The description adds workflow context around parameters (quote first, validate address) but does not introduce new field-level meaning beyond what the schema provides. 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: 'Create a real swap order and return the deposit address.' It clearly distinguishes itself from the sibling swap_link by noting this version creates a real order that exists in support, can expire, and locks a fixed rate. An agent can immediately tell this apart from quote_swap and validate_address.
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 workflow guidance: quote first, validate the recipient address, confirm both amount and address with the user, and only call this after explicit approval. It also names the alternative tool swap_link with the exact condition to prefer it, and instructs relaying the executor name from the response.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetAsset detailsARead-onlyIdempotentInspect
Everything needed to build a swap for one asset: the canonical id, the legacy ticker used in website links, decimals, whether a memo is required and what the receiving side calls it, the address format, the token contract and the warnings to relay to the user. Minimum and maximum amounts are not here because they belong to the pair, not to the asset: get them from quote_swap.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | Canonical id "usdt.trx". A legacy ticker "usdttrc20" or a page slug "tether-trc20" is also accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| memo | Yes | |
| name | Yes | |
| slug | Yes | |
| asset | Yes | |
| ticker | Yes | |
| network | Yes | |
| decimals | Yes | |
| memo_name | Yes | |
| price_usd | Yes | |
| fixed_rate | Yes | |
| memo_regex | Yes | |
| warning_send | Yes | |
| address_regex | Yes | |
| token_contract | Yes | |
| explorer_tx_url | Yes | |
| warning_receive | Yes | |
| explorer_address_url | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful behavioral context: the tool returns user-facing warnings, memo labels, address formats, and token contract details, and it deliberately omits pair-specific amount limits.
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 sentences, front-loaded with purpose, and packs the output contents into a compact list. The exclusion of min/max amounts and pointer to quote_swap is placed at the end without redundancy.
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 tool with a full input schema and an output schema, the description covers what the tool is for, what it returns, and what it intentionally omits. An agent has enough context to select and call 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?
The schema already documents the single required parameter fully, including accepted canonical ids, legacy tickers, and page slugs. The description reinforces that the input is an asset identifier and ties it to swap-building context, but it does not need to add much 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 clearly identifies the tool as returning everything needed to build a swap for a single asset, and enumerates the specific fields returned (canonical id, ticker, decimals, memo requirement, address format, contract, warnings). It also explicitly states what is NOT included and points to quote_swap, making it distinguishable from list_assets and quote_swap.
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 strong routing guidance by stating that minimum and maximum amounts belong to the pair and should be fetched from quote_swap. It implies this tool is the place to get per-asset metadata when constructing a swap, though it does not explicitly compare against list_assets or validate_address.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList exchangeable assetsARead-onlyIdempotentInspect
Find the assets ChangeNOW can exchange and turn what the user said into a canonical asset id. Search by ticker, name or network, filter by network, by fiat or crypto, and by whether a fixed rate is possible. Always call this before quoting: the same ticker exists on several networks and only the canonical id "ticker.network" identifies one of them. When has_more is false the response is the complete answer and no paging is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Substring search over canonical id, legacy ticker, name and network. Case insensitive. Example: "usdt", "bitcoin", "tron". | |
| kind | No | crypto for swappable coins and tokens, fiat for currencies that can only start a purchase, all for both. | crypto |
| limit | No | How many assets to return. Default 50, maximum 500. | |
| cursor | No | Cursor from next_cursor of the previous page. Only needed when has_more is true. | |
| network | No | Keep only assets on this network, for example "eth", "trx", "sol". | |
| popular | No | Return the short curated list. Use this to answer "what can I swap" without paging. | |
| fixed_rate | No | Keep only assets the catalogue flags as fixed rate capable. The flag is a hint: a pair flagged false can still get a fixed rate, so confirm with quote_swap rather than filtering a user out. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| assets | Yes | |
| has_more | Yes | |
| returned | Yes | |
| next_cursor | Yes | |
| catalogue_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already carry the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower and there is no contradiction. The description adds behavior beyond those annotations: the pagination contract ("When has_more is false the response is the complete answer and no paging is needed") and input-normalization behavior (mapping user phrasing to a canonical "ticker.network" id). This is operational context 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?
Four sentences, each with a distinct job: core purpose, parameter capability summary, call-order directive with rationale, and pagination terminal condition. The most important information is front-loaded in the first sentence, and nothing is redundant with 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?
An output schema exists, so the description need not explain return values. It covers purpose, search/filter capabilities, the critical "call before quoting" sequencing, and the pagination stop condition — everything an agent needs to invoke it correctly. Given the rich schema, full annotations, and this context, the description is complete for a read-only lookup 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?
Schema coverage is 100% with per-parameter descriptions and examples, so the baseline is 3. The description adds value by synthesizing the parameters into user-intent terms — "Search by ticker, name or network, filter by network, by fiat or crypto, and by whether a fixed rate is possible" — and by explaining why q requires disambiguation (same ticker on several networks). It earns a 4 for that synthesis, though it does not add syntax 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?
The description states a specific verb and resource — "Find the assets ChangeNOW can exchange" — and adds a second distinct purpose: "turn what the user said into a canonical asset id." It differentiates from the sibling tools by introducing the canonical-id concept ("ticker.network"), which is the identity that quote/swap/status tools depend on, so an agent can tell this discovery/resolution tool apart from get_asset or quote_swap.
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 directional guidance: "Always call this before quoting," backed by the reasoning that the same ticker exists on several networks and only the canonical id identifies one. It also provides a concrete stop condition for paging ("When has_more is false the response is the complete answer and no paging is needed"). It stops short of a 5 because it never names the alternative tool explicitly (quote_swap) and gives no when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_swapQuote a swapARead-onlyInspect
Ask what a swap would give, in either direction: pass amount_from to learn what the user receives, or amount_to to learn what the user must send. Returns the rate, the pair minimum and maximum, who would execute the order, and the warnings to relay. With rate_type "fixed" it also returns the rate_id that create_swap needs to lock that rate for about ten minutes; a fixed rate is only offered for part of the catalogue and the tool says so rather than quietly falling back to a float rate. Nothing is created and no funds move.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Asset the user receives, canonical id, for example "usdt.trx". | |
| from | Yes | Asset the user sends, canonical id, for example "btc.btc". | |
| amount_to | No | Amount the user wants to receive, as a decimal string. The answer then says how much to send. | |
| rate_type | No | float: the rate is settled when the deposit arrives. fixed: the rate is guaranteed for about ten minutes and returns a rate_id that create_swap needs, usually at a slightly worse rate. Ask for fixed whenever the user wants a guaranteed number; if this pair cannot hold one the answer says so instead of quietly returning a float rate. | float |
| promo_code | No | Promo code to apply, if the user has one. | |
| amount_from | No | Amount the user sends, as a decimal string. Pass this or amount_to, never both. | |
| include_providers | No | Add the raw per-provider breakdown. Off by default because the summary answers the user. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| rate | Yes | |
| rate_id | Yes | |
| to_name | Yes | |
| provider | Yes | |
| quote_id | Yes | |
| warnings | Yes | |
| amount_to | Yes | |
| from_name | Yes | |
| limits_in | Yes | |
| providers | No | |
| rate_type | Yes | |
| max_amount | Yes | |
| min_amount | Yes | |
| amount_from | Yes | |
| valid_until | Yes | |
| high_network_fee | Yes | |
| speed_forecast_minutes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that no funds move and nothing is created, that a fixed rate locks for about ten minutes, and that the tool says so rather than quietly substituting a float rate. It also tells the agent to relay warnings from the response. This is substantial behavioral context beyond readOnlyHint.
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?
Four dense sentences, front-loaded with the core purpose and with no filler. Each sentence adds a distinct piece of information: core behavior, return value, fixed-rate special case, and side-effect-free guarantee.
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 output schema exists and the input schema already documents all parameters, the description is complete: it covers what the tool returns, how to choose direction, how to request a fixed rate, how the rate_id connects downstream to create_swap, and the fact that no funds move. An agent has everything needed to 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?
The input schema already covers 100% of parameters, so the baseline is 3. The description adds meaningful semantic framing: it explains the directionality of amount_from versus amount_to, the real-world meaning of rate_type 'fixed' and the rate_id it produces for create_swap, and reinforces that fixed availability is pair-dependent.
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: 'Ask what a swap would give, in either direction.' It clearly separates itself from sibling tools by mentioning that it returns a rate_id needed by create_swap and that 'Nothing is created and no funds move,' which distinguishes it from create_swap and swap_link.
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 usage direction: pass amount_from to learn the receive amount, or amount_to to learn the send amount. It also gives a clear selection rule for rate_type: use 'fixed' whenever the user wants a guaranteed number, and it explains the fallback behavior instead of silently returning a float rate. The connection to create_swap is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swap_linkBuild a confirmation linkARead-onlyIdempotentInspect
Build a changenow.io link with the pair, the amount, the recipient address and the memo already filled in, so the user checks the numbers on the real page and presses Confirm themselves. Opening the link creates nothing. This is the recommended way to finish a swap: the user sees the rate and the address with their own eyes, which no amount of care in a chat transcript can replace. Use create_swap instead only when the user has explicitly approved this exact amount and address.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Asset the user receives, canonical id. | |
| from | Yes | Asset the user sends, canonical id. | |
| memo | No | Memo or destination tag to prefill. | |
| locale | No | Two letter locale for the page, for example "es". English needs no locale. | |
| address | No | Recipient address to prefill. The user can still change it on the page. | |
| amount_to | No | Amount to prefill as the amount received. Implies a fixed rate on the page. | |
| rate_type | No | Which rate the page opens with. | float |
| amount_from | No | Amount to prefill as the amount sent. | |
| refund_address | No | Refund address to prefill. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| notes | Yes | |
| prefilled | Yes | |
| creates_order | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context: 'Opening the link creates nothing' and explains that the user, not the assistant, performs the confirmation. This goes beyond the 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 tightly written and front-loaded with the core action. Every sentence earns its place: what it builds, that it has no side effects, why it is recommended, and when to use the alternative. There is no fluff or repetition.
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 9 parameters, an output schema, and read-only/idempotent annotations, the description covers the essential context: purpose, safety, workflow recommendation, and alternative routing. Parameter details and return values are handled by the schemas, so nothing critical 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 description coverage is 100%, so the input schema already documents each parameter. The description adds general context about what the link prefills (pair, amount, address, memo), but does not add per-parameter meaning 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 clearly states the tool's purpose: to build a changenow.io confirmation link with swap details prefilled. It uses a specific verb ('Build') and distinct resource ('changenow.io link'), and differentiates itself from the sibling create_swap by explaining the confirmation-first workflow.
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 recommends this tool as the default way to finish a swap, explains why (user verifies rate and address on the real page), and gives a precise condition for using the alternative create_swap instead. This is strong, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_addressValidate a recipient addressARead-onlyIdempotentInspect
Check a recipient address, and its memo when the asset needs one, against the format the network requires, before any order exists. Call this on every address the user gives. A valid-looking address on the wrong network is the one mistake in a swap that destroys the funds with no way back, so when the address belongs to another network the answer names that network instead of just refusing. A few assets carry no address format in the catalogue; for those the answer says the address could not be checked rather than calling it valid.
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | Memo or destination tag, when the asset needs one. | |
| asset | Yes | Asset that will be received at this address, canonical id. | |
| address | Yes | Recipient address to check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| valid | Yes | |
| reason | Yes | |
| network | Yes | |
| warning | Yes | |
| memo_name | Yes | |
| memo_valid | Yes | |
| network_hint | Yes | |
| memo_required | Yes | |
| format_checked | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only and idempotent, and the description adds meaningful behavioral detail beyond them: it will name the other network instead of simply refusing, and it will say the address could not be checked for assets without a format in the catalogue. This is exactly the kind of edge-case 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 four sentences with no filler: the core action is first, followed by the critical wrong-network caveat and the uncheckable-assets caveat. Every sentence adds decision-relevant 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 description covers the main purpose, the key failure mode (wrong network destroying funds), the memo requirement, and the edge case where validation is impossible. With an output schema present, nothing essential is missing for correct 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 description coverage is 100%, so the schema already documents all three parameters. The description reinforces that memo is only relevant when the asset needs one, but it does not add substantial new 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 states a specific verb ('Check'), a specific resource ('a recipient address, and its memo when the asset needs one'), and the exact criterion ('against the format the network requires'). This clearly distinguishes it from the swap-related siblings, which are about creating, quoting, or checking swap status.
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 says 'Call this on every address the user gives' and places the call 'before any order exists.' It also explains how to handle the wrong-network case and the unverifiable-catalogue case, giving clear situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 or an account that owns the GitHub organization, then choose Claim with GitHub.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
Native cross-chain swaps: Bitcoin, Ethereum, Solana, Polkadot, Tron, Arbitrum. Quote, swap, track.
Cross-chain swap aggregator across 16+ chains, incl. native Bitcoin/Solana. 0% fees, non-custodial.
Non-custodial cross-chain crypto swap MCP — 1288+ assets, no KYC. Solana/EVM/Monero, RPC, oracle.
Non-custodial value router: ranked fiat/crypto & cross-chain routes, swaps, onramp, gasless wallet.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceCross-chain cryptocurrency swaps via Chainflip. Get quotes, execute swaps, and track progress. No API key required to get started.10MIT
- FlicenseNot gradedqualityDmaintenanceEnables cross-chain cryptocurrency swap quotes and operations using the deBridge DLN protocol. Provides read-only access to swap estimates, supported chains, token information, and order status tracking across multiple blockchain networks.1
- AlicenseNot gradedqualityCmaintenanceNon-custodial Solana swap routing with best-price execution, flat 0.25% fee, and built-in on-chain scam checking for token safety.58MIT
- AlicenseNot gradedqualityCmaintenanceNon-custodial multi-chain crypto payment gateway via CoinVoyage. 15 tools for creating PayOrders, managing webhooks, and cross-chain swaps. Supports BTC, SOL, ETH, Base, Arbitrum, Polygon, BSC, Sui, USDC/USDT.MIT