gasrescue MCP server
OfficialGasless stablecoin transfers and swaps from wallets without gas, with wallet checks, quotes, signing, submission, and status tracking.
Get supported chains, tokens, fees, and limits.
Read-only check an address across all chains for stablecoin balances, gas, and issuer freezes.
Quote stablecoin sends with fees, recipient amount, and transfer ID.
Quote swaps into the gas coin or another stablecoin.
Fetch the wallet signing request for EVM, Tron, or Solana.
Submit signatures so gasrescue sends and pays network gas.
Track quote/transfer status and get an explorer link.
Optionally sign and submit EVM quotes if
GASRESCUE_EVM_PRIVATE_KEYis configured (per README; not present in schema).
Enables gasless stablecoin transfers on Ethereum via gasrescue, including checking wallet stablecoin balances and gas, quoting sends and swaps, obtaining signing requests, submitting signatures, and tracking transfer status.
Supports Robinhood Chain as a supported blockchain for gasless stablecoin moves, including wallet checks, quotes, signing requests, signature submission, and transfer tracking.
Enables gasless stablecoin transfers on Solana via gasrescue, including checking wallet stablecoin balances and gas, quoting sends and swaps, obtaining signing requests, submitting signatures, and tracking transfer status.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gasrescue MCP serverSend 50 USDC on Base to 0x1234... from my wallet with no gas"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gasrescue MCP server
Gasless USDC, USDT and USDG transfers and swaps from existing wallets, for AI agents, through gasrescue.io.
The wallet holds stablecoins but no ETH, SOL, TRX or HYPE, so every transfer fails with "insufficient funds for gas". With this server an agent can still send the stablecoins, or swap a few dollars into the gas coin: the wallet signs, gasrescue sends the transaction and pays the network fee, and its fees come out of the amount.
Chains: Base, Arbitrum, Ethereum, HyperEVM, Robinhood Chain, Solana, Tron. Tokens: USDC, USDT (USDT0), USDG, depending on the chain.
Listed in the official MCP Registry as io.github.gasrescue/gasrescue.
Tools
Tool | What it does |
| Chains, tokens, fees and limits |
| Read-only: stablecoins and gas of an address on every chain, issuer freezes included |
| Quote a send without gas; returns fees, what the recipient gets and a transfer id |
| Quote a swap into the gas coin (ETH, SOL, HYPE) without gas |
| What the wallet has to sign for a quote |
| Submit the signatures; gasrescue sends and pays the gas |
| Status and explorer link |
| Only with |
Related MCP server: Arbitrum Bridge MCP Server
Setup
Claude Desktop, Cursor and other MCP clients:
{
"mcpServers": {
"gasrescue": {
"command": "npx",
"args": ["-y", "gasrescue-mcp"]
}
}
}Without a key the server never signs anything. The agent hands the signing request to the user's wallet, or to its own wallet tool, and submits the signatures.
Letting the agent sign (EVM only)
"env": {
"GASRESCUE_EVM_PRIVATE_KEY": "0x…",
"GASRESCUE_ALLOWED_RECIPIENTS": "0xYourExchangeDeposit,0xYourOtherWallet"
}Before it signs, sign_and_submit checks every signed field against the quote: the wallet, the chain,
the gasrescue contract, the amount, the fee and the recipient. Against gasrescue.io it signs only for the
published gasrescue contracts. With GASRESCUE_ALLOWED_RECIPIENTS set, sends go only to those addresses.
The key stays in this process; only signatures are sent.
Use a wallet that holds only what the agent should be able to move. Transfers on a blockchain are final.
Limits
$2 to $1,000 per transfer, 10 transfers per wallet in 24 hours, Tron at least $10. Service fee 0.5%, at least $0.25, at most $2 per send and $5 per swap, plus the network fee. Every quote shows the exact figures.
More: https://gasrescue.io/agents
License
MIT
Available Tools
7 toolscheck_walletCheck a wallet for stuck stablecoinsARead-onlyIdempotent
Checks one address on every supported chain where it is valid: which stablecoins it holds, its gas balance, whether the stablecoins are stuck (not enough gas to move them) and whether a token is frozen by its issuer. Use it before quote_send or quote_swap to find the chain and token to rescue. A frozen token cannot be moved by any tool here; only the issuer can lift that. Read-only: nothing is signed, sent or stored. Returns { address, chains: [{ key, label, native, tokens: [{ symbol, balance, frozen }], gas, stuck, frozen, canSwap }] }; a chain that did not answer has error: true.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address: 0x… for EVM chains, base58 for Solana, T… for Tron. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, but the description adds material behavior beyond them: the definition of 'stuck' (not enough gas to move the tokens), the per-chain partial-failure signal ('a chain that did not answer has error: true'), and the hard blocker that frozen tokens are unfixable by any available tool. That is exactly the mutation/failure context an agent needs before chaining into a rescue flow.
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?
Front-loaded with the purpose, then usage, then the safety note, then the return shape — a sensible order with no filler. The single long paragraph is dense and the inline return signature is syntactically heavy, but no sentence is disposable given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by spelling out the return object and the per-chain error flag. Combined with the stuck/frozen semantics and the pointer to quote_send/quote_swap, an agent has everything needed to call it and act on the result.
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 address-format guidance (0x…, base58, T…) is already in the schema, so the description gets no credit there. It does add one thing the schema does not say: the address is checked on every chain 'where it is valid', implying per-chain applicability filtering rather than a uniform sweep.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Checks one address on every supported chain') and enumerates exactly what it reports: stablecoin holdings, gas balance, stuck status and issuer freeze. An agent can distinguish it from quote_send/quote_swap/get_transfer without opening any schema.
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?
Explicitly routes usage: 'Use it before quote_send or quote_swap to find the chain and token to rescue', naming the downstream siblings and the condition that selects them. It also states the exclusion case — a frozen token cannot be moved by any tool here, only the issuer can lift it — so the agent knows when to stop rather than trying further tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gasrescue_infoSupported chains, tokens and feesARead-onlyIdempotent
Lists what gasrescue supports: the chains, the stablecoins on each, which chains can swap into their gas coin, the fees and the limits. Use gasrescue when a wallet holds USDC, USDT or USDG but no ETH, SOL, TRX or HYPE for the network fee ("insufficient funds for gas"). Call this first to get the chain keys and token symbols the other tools expect. Read-only, takes no input. Returns network, fees (service percent, minimum, maximum), limits (USD per transfer, transfers per wallet per day, quote validity) and the chains with their tokens and gas coin.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds meaningful context beyond that: it takes no input, it is a prerequisite bootstrap call for other tools, and it enumerates the return surface (fees, limits, quote validity). It does not mention rate limits, caching, or whether the supported set changes over time, which keeps it just short of a 5.
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?
Content is front-loaded: the resource listing comes first, then the usage trigger, then the return shape. 'Read-only' partially restates readOnlyHint and 'takes no input' restates the empty schema, but these are minor and the rest of the text is dense with actionable 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?
There is no output schema, so the description carries the burden of describing returns, and it does so concretely: network, fees (service percent, minimum, maximum), limits (USD per transfer, transfers per wallet per day, quote validity), and chains with tokens and gas coin. For a zero-parameter metadata tool this is complete enough that an agent knows both why and what it will get.
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?
With zero parameters the baseline is 4, and the description correctly reinforces this with 'takes no input.' There is no parameter meaning to add, and the description does not waste space inventing any.
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+resource ('Lists what gasrescue supports') and enumerates the exact content: chains, stablecoins, gas-coin swap support, fees and limits. Nothing here could be confused with check_wallet or quote_send, since it describes a static capability/metadata listing rather than a per-wallet or per-transfer operation.
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 an explicit trigger scenario ('when a wallet holds USDC, USDT or USDG but no ETH, SOL, TRX or HYPE for the network fee') plus the exact error string an agent would encounter. It also states ordering relative to siblings: 'Call this first to get the chain keys and token symbols the other tools expect.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signing_requestGet what the wallet must signARead-onlyIdempotent
Returns what the sender's wallet has to sign for a quote from quote_send or quote_swap. kind "evm-typed-data": sign every steps[].typedData with eth_signTypedData_v4, in order; binding is the order the authorization commits to, so recipient, fee and minimum can be checked first. kind "tron-transactions": sign every steps[].transaction (first the fee, then the transfer). kind "solana-transaction" or "solana-versioned-transaction": sign the base64 transaction. Read-only. Pass the result to submit_signatures. Fails when the quote expired; then request a new quote.
| Name | Required | Description | Default |
|---|---|---|---|
| transferId | Yes | The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. "b39f46001a5680455091152d". Not a transaction hash and not an id of another service. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantive behavior beyond them: per-kind signing semantics, the required ordering of signatures, what "binding" means (order committed fields — recipient, fee, minimum — can be verified first), and the expired-quote failure mode. That is meaningful operational context not present in structured fields.
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?
Purpose is front-loaded in the first clause and every sentence carries information (kinds, ordering, next step, failure path). It is dense and slightly run-on in the middle where the three kind variants are enumerated, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe the return shape and does so per kind (steps[].typedData, steps[].transaction with fee-then-transfer ordering, base64 solana transaction), which is the critical information. It omits the response envelope details (whether transferId, expiry, or binding metadata appear as siblings of steps), leaving a small gap.
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 single parameter has 100% schema description coverage, including the regex pattern and an explicit warning that it is not a transaction hash. The description adds only the linkage to quote_send/quote_swap, which the schema already states, so the baseline of 3 applies — the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Returns what the sender's wallet has to sign") and anchors it to the producing siblings ("a quote from quote_send or quote_swap"), so an agent can distinguish it from submit_signatures, get_transfer, and the quote tools without opening any schema.
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?
Explicitly routes the agent forward ("Pass the result to submit_signatures") and backward on failure ("Fails when the quote expired; then request a new quote"). It also gives per-kind handling instructions, so the caller knows exactly what to do with each response shape rather than inferring it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transferTransfer statusARead-onlyIdempotent
Returns the current state of a quote or transfer by its id, with the fees, the transaction hash and the explorer link once sent. States: quoted (waiting for the signature), submitting and sent (on its way; ask again after a few seconds), confirmed (done), failed (error says why) and expired (not signed in time; request a new quote). Use it to follow up after submit_signatures or to see whether a quote is still open. It cannot start, change or cancel anything; use quote_send or quote_swap to start. Read-only. Returns { summary, transfer }. An unknown or malformed id, or one older than 30 days, fails with "Transfer not found".
| Name | Required | Description | Default |
|---|---|---|---|
| transferId | Yes | The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. "b39f46001a5680455091152d". Not a transaction hash and not an id of another service. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds the full lifecycle state machine, tells the agent to poll again after a few seconds for submitting/sent, and explains what expired means and what to do about it. It also documents error behavior for unknown, malformed, or 30-day-old ids returning 'Transfer not found', which nothing in the structured fields conveys.
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?
Front-loaded with the core operation, then states, then usage routing, then constraints — a sensible order with no filler sentences. The state enumeration is dense but each state carries an actionable parenthetical, so it earns its space; only the explicit returns shape slightly duplicates what a caller would learn from the response.
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 tool with no output schema, the description supplies everything an agent needs: scope, state semantics with polling advice, sibling routing, mutation limits, the top-level response shape, and the exact error condition. There is no ambiguity left that would cause an incorrect call.
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 transferId property already explains the 24-hex-character format and that it is not a transaction hash, so the baseline is 3. The description adds meaning beyond the schema by clarifying that the same id space covers both quotes and transfers and by documenting the failure mode ('Transfer not found') for an id that is well-formed but unknown or older than 30 days.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — returns the current state of a quote or transfer by id — and enumerates exactly what comes back (fees, transaction hash, explorer link once sent). An agent can distinguish it from quote_send, quote_swap, and submit_signatures purely from the description.
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?
Explicitly says to use it to follow up after submit_signatures or to see whether a quote is still open, and names the alternatives for starting a flow (quote_send or quote_swap). It also closes off misuse by stating it cannot start, change, or cancel anything, so when-not-to-use is covered alongside when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_sendQuote a send without gasA
Prices sending USDC, USDT or USDG from a wallet without gas (no ETH, SOL or TRX) to another address, e.g. an exchange deposit or another wallet. Use quote_swap instead when the user wants gas in the same wallet. Creates a free quote, valid for 10 minutes; nothing moves on chain until the wallet signs it. Returns { summary, transfer }: the transfer id, network and service fee, what the recipient gets (net) and status "quoted". Show the summary to the user and get approval before signing. Fails with a readable error when the amount is outside $2 to $1,000 (Tron: from $10), the wallet holds too little, the token is frozen, or the wallet sent 10 transfers in 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain key from gasrescue_info, e.g. "base", "arbitrum", "ethereum", "hyperevm", "robinhood", "solana", "tron". | |
| token | Yes | Stablecoin symbol, e.g. "USDC", "USDT", "USDT0" or "USDG". gasrescue_info lists what each chain supports. | |
| amount | Yes | Amount of the token, as a decimal string, e.g. "25" or "12.5". Fees come out of it. | |
| sender | Yes | Wallet address: 0x… for EVM chains, base58 for Solana, T… for Tron. | |
| recipient | Yes | Wallet address: 0x… for EVM chains, base58 for Solana, T… for Tron. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past annotations by disclosing that the quote is free, valid 10 minutes, and nothing moves on chain until signing, plus a concrete list of failure conditions ($2–$1,000 range, Tron $10 minimum, insufficient balance, frozen token, 10 transfers per 24h rate limit). None of that is inferable from the schema or the readOnly/destructive hints.
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?
Front-loads what the tool does and the sibling disambiguation, then packs contract terms, return shape, and failure modes into tight clauses. Slightly dense as a single block, but every sentence carries 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?
No output schema exists, yet the description describes the return shape ({ summary, transfer }, net amount, 'quoted' status) and the error surface. For a 5-parameter quote tool an agent has everything needed to call it and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond it: accepted token symbols, fee deductions from the amount, and per-chain amount limits (Tron minimum $10) that the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Prices sending USDC, USDT or USDG from a wallet without gas') and explicitly contrasts with its sibling quote_swap. An agent can distinguish intent without reading the schema.
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?
Gives an explicit alternative with the condition that selects it ('Use quote_swap instead when the user wants gas in the same wallet') plus a directive to show the summary and get approval before signing. When-to-use and next-step routing are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_swapQuote a swap into gas without gasA
Prices swapping a stablecoin into the chain's gas coin (ETH, SOL, HYPE) or another stablecoin, for a wallet without gas, so it can pay its own fees again. The result always goes back to the same wallet; use quote_send to pay someone else. Not available on Tron. Creates a free quote, valid for 2 minutes because prices move; nothing moves on chain until the wallet signs it. Returns { summary, transfer } with the transfer id, fees, the expected output and the minimum output (below it the swap reverts and nothing moves). Show the summary to the user and get approval before signing.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain key from gasrescue_info, e.g. "base", "arbitrum", "ethereum", "hyperevm", "robinhood", "solana", "tron". | |
| token | Yes | Stablecoin symbol, e.g. "USDC", "USDT", "USDT0" or "USDG". gasrescue_info lists what each chain supports. | |
| amount | Yes | Amount of the token, as a decimal string, e.g. "25" or "12.5". Fees come out of it. | |
| sender | Yes | Wallet address: 0x… for EVM chains, base58 for Solana, T… for Tron. | |
| tokenOut | Yes | What to get: the gas coin ("ETH", "SOL", "HYPE") or another stablecoin. gasrescue_info lists what each chain can buy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, which leaves the actual mechanics unstated. The description fills that gap with the quote's 2-minute validity, the fact that nothing moves on chain until the wallet signs, the revert-below-minimum-output behavior, and the required user-approval step — all behavior an agent could not infer from 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?
Front-loads the core purpose, then the sibling distinction, then the availability caveat, then the mechanics and return shape. It is dense but nearly every clause carries information; the return-shape enumeration is slightly list-like but earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape ({ summary, transfer }) including transfer id, fees, expected output and minimum output. Combined with the quote validity window and the signing/approval requirement, an agent has everything needed to call this and act on the result.
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 every parameter is already documented with examples and format guidance. The description adds only marginal semantic context, such as the result returning to the same wallet and fees coming out of the amount, both of which are already implied or stated in 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?
States a specific verb (prices/quotes a swap) and a precise resource (stablecoin into the chain's gas coin or another stablecoin) and names the exact scenario (a wallet without gas paying its own fees). It also explicitly distinguishes itself from the sibling quote_send by noting the result always returns to the same wallet.
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?
Gives the selecting condition (wallet has no gas and must pay its own fees), an explicit alternative with its own condition ("use quote_send to pay someone else"), and an exclusion ("Not available on Tron"). It also states the next step in the workflow: show the summary and get approval before signing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_signaturesSubmit signatures and sendADestructive
Submits the wallet's signatures for a quote; gasrescue broadcasts the transaction, pays the gas and waits up to 3 minutes for the result. This moves funds and cannot be undone: call it only after the user approved the quote summary. A transfer can be submitted once; a second call is refused. Give signatures for EVM and Tron, or signedTransaction for Solana. Returns { summary, transfer } with status confirmed or failed, the transaction hash and the explorer link.
| Name | Required | Description | Default |
|---|---|---|---|
| signatures | No | EVM and Tron: one signature per step of get_signing_request, in the same order, as hex strings. | |
| transferId | Yes | The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. "b39f46001a5680455091152d". Not a transaction hash and not an id of another service. | |
| signedTransaction | No | Solana only: the transaction from get_signing_request, signed by the sender, base64. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and non-idempotent, but the description adds substantive context on top: funds move irreversibly, a third party pays gas, there is a ~3 minute wait, and duplicate submission is rejected. It also discloses the return shape (summary/transfer with confirmed or failed, hash, explorer link) absent an output schema.
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?
Front-loaded with the action and its cost, then the precondition and the chain-specific input rule. The third sentence is dense and packs several ideas, but every clause carries information an agent needs before committing funds.
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 high-risk, no-output-schema mutation tool, the description covers cost, irreversibility, timing, retry limits, per-chain input requirements, and return contents. Nothing an agent needs in order to invoke it safely 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%, so the baseline is 3; the description goes further by explaining the mutual exclusivity between signatures and signedTransaction per chain and tying signatures to the ordering of get_signing_request steps. It stops short of restating the transferId format, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submits signatures) and the downstream consequence (gasrescue broadcasts, pays gas, waits up to 3 minutes), which is far more than a restatement of the name. It is clearly distinguishable from get_signing_request (which produces signatures) and get_transfer (which only reads state).
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?
Explicit preconditions: call only after the user approved the quote summary, and only once per transfer since a second call is refused. It also routes by chain (signatures for EVM/Tron vs signedTransaction for Solana), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.6- Changed
get_signing_request1 field changed- changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id returned by quote_send or quote_swap (24 hex characters)."New value: +"The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. \"b39f46001a5680455091152d\". Not a transaction hash and not an id of another service."
- Changed
get_transfer1 field changed- changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id returned by quote_send or quote_swap (24 hex characters)."New value: +"The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. \"b39f46001a5680455091152d\". Not a transaction hash and not an id of another service."
- Changed
submit_signatures1 field changed- changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id returned by quote_send or quote_swap (24 hex characters)."New value: +"The id gasrescue returned as transfer.id from quote_send or quote_swap: 24 lowercase hex characters, e.g. \"b39f46001a5680455091152d\". Not a transaction hash and not an id of another service."
4 tool updates
v0.1.5- Changed
get_signing_request2 fields changed- changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id from a quote."New value: +"The transfer id returned by quote_send or quote_swap (24 hex characters)." - added
Input schema / properties / transferId / patternAdded value: +"^[0-9a-f]{24}$"
- Changed
get_transfer2 fields changed- changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id from a quote."New value: +"The transfer id returned by quote_send or quote_swap (24 hex characters)." - added
Input schema / properties / transferId / patternAdded value: +"^[0-9a-f]{24}$"
- Changed
quote_swap1 field changed- changed
Input schema / properties / tokenOut / descriptionPrevious value: -"What to get, e.g. \"ETH\", \"SOL\", \"HYPE\" or another stablecoin."New value: +"What to get: the gas coin (\"ETH\", \"SOL\", \"HYPE\") or another stablecoin. gasrescue_info lists what each chain can buy."
- Changed
submit_signatures4 fields changed- added
Input schema / properties / signatures / descriptionAdded value: +"EVM and Tron: one signature per step of get_signing_request, in the same order, as hex strings." - added
Input schema / properties / signedTransaction / descriptionAdded value: +"Solana only: the transaction from get_signing_request, signed by the sender, base64." - changed
Input schema / properties / transferId / descriptionPrevious value: -"The transfer id from a quote."New value: +"The transfer id returned by quote_send or quote_swap (24 hex characters)." - added
Input schema / properties / transferId / patternAdded value: +"^[0-9a-f]{24}$"
7 tool updates
v0.1.0- First observed
check_wallet - First observed
gasrescue_info - First observed
get_signing_request - First observed
get_transfer - First observed
quote_send - First observed
quote_swap - First observed
submit_signatures
TDQS
Scored across 7 tools
Each tool targets a distinct step in the flow: discovery (gasrescue_info, check_wallet), quoting (quote_send vs quote_swap, explicitly contrasted as 'another address' vs 'same wallet'), signing payload retrieval (get_signing_request), submission (submit_signatures), and tracking (get_transfer). The descriptions proactively disambiguate the closest pairs (send/swap, signing request/submit).
Most tools use a verb_noun pattern (submit_signatures, get_transfer, get_signing_request, check_wallet), but quote_send and quote_swap invert to noun_verb, and gasrescue_info is a verbless noun_noun outlier. Still readable, but the convention is mixed.
Seven tools map cleanly onto one coherent workflow (inspect, quote, sign, submit, track) with no padding or redundancy. Each tool earns its place.
The core lifecycle is fully covered, including a read-only signing payload step and status tracking, with quotes expiring rather than needing explicit cancel. Minor gaps: no transfer/quote history listing and no explicit cancel operation.
Maintenance
Related MCP Connectors
Stablecoin payments for AI agents: customers, quotes, transfers, payment routes.
Zero-key, non-custodial cross-chain crypto swap aggregator for AI agents: 100+ chains, 15+ providers
Gasless, MEV-protected onchain token swaps for AI agents on 14 EVM chains, built on CoW Protocol.
Swap, bridge and get gas on 6 EVM chains. Each plan states its outcome before you sign. No API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables fee-free USDC transfers on the Base blockchain network using Coinbase CDP MPC Wallet integration, with support for ENS and BaseName domain resolution.7 npm21MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to perform cross-chain bridging operations using natural language intents, with support for multiple protocols (Across, Stargate) and advanced security features like oracle validation and slippage protection. Provides comprehensive bridging tools including quote estimation, transaction building, and approval management across Arbitrum and Ethereum networks.MIT
- FlicenseCqualityCmaintenanceEnables AI agents to interact with any EVM-compatible blockchain through natural language, supporting token swaps, cross-chain bridges, staking, lending, governance, gas optimization, and portfolio tracking across networks like Ethereum, BSC, Polygon, Arbitrum, and more.10021 npm44-
- AlicenseAqualityCmaintenanceGasless ERC-20 token deployment on Base using CDP Paymaster. Deploy tokens, verify contracts, check status.536 npm2MIT