gasrescue

io.github.gasrescue由 GitHub 账号 gasrescue 发布v0.1.9更新于 Nov 4, 2026

Rescue USDC, USDT and USDG from wallets with no gas: send or swap them on EVM, Solana and Tron.

已验证STDIO仅桌面云端与基础设施金融

概览

AI 生成的概览

把没有 gas 的钱包中的 USDC、USDT、USDG 转出或换成 gas 币,覆盖 EVM 链、Solana 和 Tron。

可以做什么
  • 列出支持的链、代币、费用与限额
  • 跨链检查地址的稳定币余额、gas 余额及代币是否被冻结
  • 为无 gas 钱包的转账或换成 gas 币生成报价
  • 返回报价对应的签名请求并提交钱包签名
  • 查询报价或转账的状态、费用与区块浏览器链接
适用场景
适用于钱包里只有稳定币、没有原生 gas 币,转账因 gas 不足而失败,用户希望把资金转出或让钱包重新能自行支付手续费的场景。
运行要求
以 stdio 本地运行,通常通过 npx 启动 gasrescue-mcp 包;无需账号或 API key。可选 GASRESCUE_EVM_PRIVATE_KEY 启用 EVM 签名,可选 GASRESCUE_ALLOWED_RECIPIENTS 限定收款地址。需要访问 gasrescue.io 的网络连接。
安装前请注意
提交签名会转移资金且不可撤销;转账为最终结果,且只能提交一次。设置 GASRESCUE_EVM_PRIVATE_KEY 后服务器会用该钱包签名,应只使用存放可被代理转移资金的专用钱包。费用为 0.5%(最低 0.25 美元,按转账或兑换设有上限)加网络费,从金额中扣除。限额:每笔 2 至 1000 美元,每个钱包 24 小时内 10 笔,Tron 至少 10 美元。

安装

在 SourceWeft 中

  1. 打开 控制台中的 gasrescue,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

gasrescue MCP server

Rescues stablecoins from wallets that have no gas, for AI agents, through gasrescue.io. EVM chains, Solana and Tron in one server, no API key and no account.

The wallet holds USDC or USDT but no ETH, POL, AVAX, BNB, SOL, TRX or HYPE, so every transfer fails with "insufficient funds for gas". With this server an agent can find out where the money is stuck, then still send the stablecoins, or swap a few dollars into the gas coin so the wallet works on its own again: the wallet signs, gasrescue sends the transaction and pays the network fee, and its fees come out of the amount.

Chains: Base, Arbitrum, Ethereum, Polygon, Avalanche, BNB Chain, HyperEVM, Robinhood Chain, Solana, Tron. Tokens: USDC, USDC.e, USDT (USDT0 on Arbitrum, Polygon and HyperEVM), USDG, USD1, FDUSD, depending on the chain.

Listed in the official MCP Registry as io.github.gasrescue/gasrescue.

Tools

ToolWhat it does
gasrescue_infoChains, tokens, fees and limits
check_walletRead-only: stablecoins and gas of an address on every chain, issuer freezes included
quote_sendQuote a send without gas; returns fees, what the recipient gets and a transfer id
quote_swapQuote a swap into the gas coin (ETH, POL, AVAX, SOL, HYPE) without gas
get_signing_requestWhat the wallet has to sign for a quote
submit_signaturesSubmit the signatures; gasrescue sends and pays the gas
get_transferStatus and explorer link
sign_and_submitOnly with GASRESCUE_EVM_PRIVATE_KEY: checks and signs an EVM quote with that wallet

Setup

Claude Desktop, Cursor and other MCP clients:

json
{  "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.

BNB Chain works without a contract, because USDT and USDC there have no signed transfers. The signing request has kind evm-transactions: call submit_signatures with fund: true and gasrescue sends the wallet a little BNB, then the wallet sends the two listed transfers itself (fee first) and the agent reports their hashes with submit_signatures and txs: { fee, transfer }.

Letting the agent sign (EVM only)

json
"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, the recipient and, on a swap, the minimum output. Tokens with only a permit (USDT0 and USDC.e on Polygon, USDT on Avalanche) take two signatures, a permit plus the order itself; both are checked. 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

来源:README.md,提交 d462d91

工具

7

gasrescue_info

Supported chains, tokens and fees

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, POL, AVAX, BNB, 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. gasDrop: true marks a chain without a gasrescue contract (BNB Chain): there gasrescue sends the wallet a little gas and the wallet sends two plain transfers itself.

无需输入参数。

check_wallet

Check a wallet for stuck stablecoins

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.

输入参数address必填

quote_send

Quote a send without gas

Prices sending USDC, USDT or USDG from a wallet without gas (no ETH, POL, AVAX, BNB, 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.

输入参数chain必填token必填amount必填sender必填recipient必填

quote_swap

Quote a swap into gas without gas

Prices swapping a stablecoin into the chain's gas coin (ETH, POL, AVAX, 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.

输入参数chain必填token必填amount必填sender必填tokenOut必填

get_signing_request

Get what the wallet must sign

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 (one authorization, or for permit tokens a permit plus the order itself); 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 "evm-transactions" (gas drop, BNB Chain): if funding.needed, call submit_signatures with fund: true first, so gasrescue sends the wallet the gas; then send every steps[].tx from the wallet (eth_sendTransaction, fee first) and report the hashes with submit_signatures txs: { fee, 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.

输入参数transferId必填

submit_signatures

Submit signatures and send

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, signedTransaction for Solana, or for a gas drop fund: true and then txs. Returns { summary, transfer } with status confirmed or failed, the transaction hash and the explorer link.

输入参数txsfundsignaturestransferId必填signedTransaction

get_transfer

Transfer status

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".

输入参数transferId必填

版本历史

4
  1. v0.1.9最新Nov 4, 2026
  2. v0.1.7Nov 3, 2026
  3. v0.1.5Nov 3, 2026
  4. v0.1.3Nov 3, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分