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
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 |
TDQS
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. It holds for about two minutes, so quote again right before this call if the user needed time to decide. | |
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it clarifies that no money moves by itself but the order is real, can expire, and locks a fixed rate. It also warns that the response names an executor and that some orders route to a partner aggregator, which is non-obvious and critical for the agent to relay to the user.
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 deliver the core function first, then caveats, preconditions, the alternative tool, and a routing warning. Every sentence earns its place; there is no fluff or repetition of schema details.
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 11-parameter schema with full coverage and an output schema, the description supplies all the non-schemaable guidance an agent needs: when to call, what to do first, when to avoid, and what to relay from the result. 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?
The schema has 100% description coverage for all 11 parameters, so the baseline is 3. The description connects the overall workflow to some parameters—e.g., 'Quote the swap first' refers to rate_id—but it does not add per-parameter meaning beyond what the schema already provides.
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 identifies the output: 'return the deposit address the user has to send funds to.' It further distinguishes the tool from siblings by calling the order 'real' and explicitly routing non-approved cases to 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 preconditions: 'Quote the swap first, validate the recipient address, and confirm the amount and the address with the user before calling this.' It also states clear exclusion criteria: if the user has not approved, 'use swap_link instead and let them confirm on the page.' This is actionable and unambiguous.
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 |
TDQS
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 |
TDQS
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; that lock lasts about two minutes, so quote again right before creating the order. A fixed rate is not offered on every pair 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 held until valid_until, about two minutes, and returns the rate_id 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. |
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 | |
| rate_type | Yes | |
| max_amount | Yes | |
| min_amount | Yes | |
| amount_from | Yes | |
| valid_until | Yes | |
| high_network_fee | Yes | |
| speed_forecast_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds concrete behavioral traits: no funds move, fixed-rate locks expire after about two minutes, and the tool reports when a fixed rate is unavailable instead of falling back. This gives an agent a clear safety and timing model.
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-load the main behavior, then cover return value, rate selection, and safety, with no filler or repetition of schema details.
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?
Together with the rich schema and annotations, the description covers behavior, directionality, fixed-rate nuances, timing, output contents, and safety. Nothing needed for correct invocation appears 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%, so the schema carries the definitions; the description adds the complementary 'either direction' semantics and the dependency between rate_type fixed and the rate_id needed by create_swap. This extra layer justifies above baseline.
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: asking what a swap would give, in either direction. It distinguishes quote_swap from creation by stating it returns the rate_id create_swap needs and that nothing is created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage conditions: pass amount_from or amount_to depending on the desired direction, ask for fixed whenever the user wants a guaranteed number, and quote again right before creating the order because the lock lasts about two minutes. It also explains that unsupported fixed rates are reported rather than silently falling back.
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 |
TDQS
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 |
TDQS
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
- Changed
create_swap1 field changed- changed
Input schema / properties / rate_id / descriptionPrevious value: -"The rate_id from quote_swap with rate_type \"fixed\". Required for a fixed rate order, and it expires after about ten minutes."New value: +"The rate_id from quote_swap with rate_type \"fixed\". Required for a fixed rate order. It holds for about two minutes, so quote again right before this call if the user needed time to decide."
- Changed
quote_swap3 fields changed- removed
Input schema / properties / include_providersRemoved value: -{ - "default": false, - "description": "Add the raw per-provider breakdown. Off by default because the summary answers the user.", - "type": "boolean" -} - changed
Input schema / properties / rate_type / descriptionPrevious value: -"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."New value: +"float: the rate is settled when the deposit arrives. fixed: the rate is held until valid_until, about two minutes, and returns the rate_id 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." - removed
Output schema / properties / providersRemoved value: -{ - "items": {}, - "type": "array" -}
7 tool updates
- First observed
check_swap_status - First observed
create_swap - First observed
get_asset - First observed
list_assets - First observed
quote_swap - First observed
swap_link - First observed
validate_address
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
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
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
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.