# io.github.andresdefi/zerodust (npm · @zerodust/mcp-server)

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

- Trust score: 69/100 (medium)
- Change this week: +42
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.zerodust.xyz`: 66/100, [markdown](https://verifymcp.io/servers/andresdefi-zerodust/api.md), [page](https://verifymcp.io/servers/andresdefi-zerodust/api)
- npm · `@zerodust/mcp-server`: 69/100 (this document), [markdown](https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server.md), [page](https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@zerodust/mcp-server`
- Version: `0.3.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (111 of 115), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (111 of 115), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 8 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1242 tokens (~124/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add andresdefi-zerodust -- npx -y @zerodust/mcp-server
```

### Codex

```bash
codex mcp add andresdefi-zerodust -- npx -y @zerodust/mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "andresdefi-zerodust": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@zerodust/mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add andresdefi-zerodust --command npx --arg -y --arg @zerodust/mcp-server
```

### Hermes

```yaml
mcp_servers:
  andresdefi-zerodust:
    command: "npx"
    args: ["-y", "@zerodust/mcp-server"]
```

### Other

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, −3)

No change was recorded against any check on this day. Supply Chain Security went from 98 to 87. Other categories moved too: Stability & Change Management rose 4.

### 2026-08-02 (score 72, +67)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Licence: MIT

### 2026-08-01 (score 5, −15)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 20, +14)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 6, −21)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 27)

First indexed and scored.

## MCP tools (10)

### `zerodust_get_chains` (~54 tokens)

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 or sweeping.

### `zerodust_get_balances` (~144 tokens)

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 parameters:

- `address` (string, required): Ethereum wallet address (0x...)

### `zerodust_get_quote` (~131 tokens)

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. Call this before sweeping so the user sees the numbers first. Returns a quote ID; quotes expire after about 60 seconds.

Input parameters:

- `destination` (string, required): Destination address to receive swept funds
- `fromChainId` (integer, required): Source chain ID to sweep from
- `toChainId` (integer, required): Destination chain ID to receive funds
- `userAddress` (string, required): User's wallet address to sweep from

### `zerodust_get_sweep_status` (~72 tokens)

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 parameters:

- `sweepId` (string, required): The sweep ID returned from submitting a sweep

### `zerodust_list_sweeps` (~69 tokens)

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

Input parameters:

- `address` (string, required): Wallet address to list sweeps for
- `limit` (integer): Maximum number of results (default: 10)

### `zerodust_register_api_key` (~152 tokens)

Issue this agent its own ZeroDust API key for higher rate limits, with no human signup step. The read-only tools work without a key, so only call this when rate limits are actually being hit, or when setting up an unattended agent that will run repeatedly. The key is returned once and is not stored by this server - report it to the operator so they can set ZERODUST_API_KEY.

Input parameters:

- `agentId` (string): Stable unique identifier for this agent, if it has one
- `contactEmail` (string): Contact email for support and abuse notices
- `name` (string, required): Human-readable name for this agent, e.g. 'arbitrage-bot-prod'

### `zerodust_info` (~62 tokens)

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

### `zerodust_get_agent_address` (~94 tokens)

Show which wallet this ZeroDust server signs with, where its key comes from, and which destinations it is allowed to sweep to. Call this before any sweep to confirm the right wallet is about to be emptied. Requires ZERODUST_ALLOW_EXECUTE=true plus a signing key; without them this tool returns an error and moves no funds. Pass dryRun=true to rehearse the whole flow without moving anything.

### `zerodust_sweep` (~258 tokens)

Empty one chain completely: move 100% of the native gas token off it and leave the balance at exactly zero. This is the operation an ordinary transfer cannot do, because sending the gas token requires keeping some gas token back to pay for the send. Use when the goal is to close out, wind down, decommission or fully exit a chain, or to recover a leftover or stranded balance that is too small to move normally. Moves real funds. Call zerodust_get_quote first to show the user what they will receive. Requires ZERODUST_ALLOW_EXECUTE=true plus a signing key; without them this tool returns an error and moves no funds. Pass dryRun=true to rehearse the whole flow without moving anything.

Input parameters:

- `destination` (string): Destination address (defaults to the agent's own address)
- `dryRun` (boolean): Rehearse without moving funds (default false). Fetches a real quote and produces the real signatures, then stops before submitting. Use this to prove the setup works before sweeping a real balance.
- `fromChainId` (integer, required): Chain to empty
- `toChainId` (integer, required): Chain to receive funds on (same as fromChainId for a same-chain sweep)

### `zerodust_sweep_all` (~206 tokens)

Empty every chain that still holds a native gas balance, consolidating all of it onto one destination chain and leaving each source at exactly zero. Use when the goal is to clean up a wallet across chains, collect scattered leftover gas, or retire a wallet entirely. Moves real funds across multiple chains. Call zerodust_get_balances first to show the user what will be swept. Requires ZERODUST_ALLOW_EXECUTE=true plus a signing key; without them this tool returns an error and moves no funds. Pass dryRun=true to rehearse the whole flow without moving anything.

Input parameters:

- `destination` (string): Destination address (defaults to the agent's own address)
- `dryRun` (boolean): Rehearse without moving funds (default false). Fetches a real quote and produces the real signatures, then stops before submitting. Use this to prove the setup works before sweeping a real balance.
- `toChainId` (integer, required): Chain to consolidate all funds onto

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 72
- 2026-08-01: 5
- 2026-07-31: 20
- 2026-07-30: 6
- 2026-07-28: 6
- 2026-07-27: 27

## Links

- npm package: https://www.npmjs.com/package/@zerodust/mcp-server
- Socket report: https://socket.dev/npm/package/@zerodust/mcp-server
- Repository: https://github.com/andresdefi/zerodust
- Changelog RSS feed: https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/andresdefi-zerodust/zerodust-mcp-server
