zerodust

Recover stranded native gas: empty a chain's balance to exactly zero on 25 EVM chains.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
80%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,021Tokens (tool definitions)
~583 BTypical response size
Moderate attention impact (0.80% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "zerodust": {
      "command": "npx",
      "args": [
        "@zerodust/mcp-server"
      ]
    }
  }
}

Runnable packages

npm@zerodust/mcp-server0.4.0stdio

Remote endpoints

https://api.zerodust.xyz/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢zerodust_get_balances(address)

Find leftover native gas token (ETH, BNB, POL, ...) stranded across every supported EVM chain for one address, and report which of it can be recovered. Normally these balances are unrecoverable: you cannot transfer 100% of a gas token, because paying for the transfer consumes the thing you are transferring, so a remainder is always left behind. This reports what is stuck and what could be moved out. Useful when a wallet has small amounts scattered over many chains, when someone cannot send their full balance, or before closing out, winding down or decommissioning a wallet.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Ethereum address (0x...)"
    }
  },
  "required": [
    "address"
  ]
}
🟢zerodust_get_quote(fromChainId, toChainId, userAddress, destination)

Price out emptying a chain's native gas balance to exactly zero: how much actually arrives, the full fee breakdown, and whether the balance is even large enough to be worth recovering. Returns a quote ID; quotes expire after about 60 seconds. Executing the sweep needs the wallet's signing key, which this hosted server does not hold - use the @zerodust/mcp-server package or the SDK for that.

Input Schema

{
  "type": "object",
  "properties": {
    "fromChainId": {
      "type": "number",
      "description": "Source chain ID to sweep from"
    },
    "toChainId": {
      "type": "number",
      "description": "Destination chain ID to receive funds"
    },
    "userAddress": {
      "type": "string",
      "description": "User's wallet address to sweep from"
    },
    "destination": {
      "type": "string",
      "description": "Destination address to receive swept funds"
    }
  },
  "required": [
    "fromChainId",
    "toChainId",
    "userAddress",
    "destination"
  ]
}
🟢zerodust_get_chains

List the EVM chains a native gas balance can be emptied to exactly zero on. Returns chain IDs, names, and native tokens. Call this to check whether a specific chain is supported before quoting.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}
🟢zerodust_get_sweep_status(sweepId)

Check how a previously submitted sweep is progressing. Returns the current status (pending, simulating, executing, bridging, completed, failed), the transaction hash once there is one, and the error message if it failed.

Input Schema

{
  "type": "object",
  "properties": {
    "sweepId": {
      "type": "string",
      "description": "The sweep ID returned from submitting a sweep"
    }
  },
  "required": [
    "sweepId"
  ]
}
🟢zerodust_list_sweeps(address, limit)

List past sweeps for a wallet address, with status and amounts. Useful for confirming a chain was already emptied before trying again.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Wallet address to list sweeps for"
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of results (default: 10)"
    }
  },
  "required": [
    "address"
  ]
}
⚪zerodust_register_api_key(name, agentId, contactEmail)

Issue this agent its own ZeroDust API key for higher rate limits, with no human signup step. The other tools work without a key, so only call this when rate limits are being hit, or when setting up an unattended agent that will run repeatedly. The key is returned once and cannot be retrieved later - report it to the operator.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Human-readable name for this agent, e.g. 'arbitrage-bot-prod'"
    },
    "agentId": {
      "type": "string",
      "description": "Stable unique identifier for this agent, if it has one"
    },
    "contactEmail": {
      "type": "string",
      "description": "Contact email for support and abuse notices"
    }
  },
  "required": [
    "name"
  ]
}
🟢zerodust_info

Explain how a native gas balance can be emptied to exactly zero, what it costs, and how to integrate. Call this when asked how ZeroDust works, why a full balance normally cannot be sent, or what sweeping will cost.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools