# io.github.andresdefi/zerodust

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

- name: io.github.andresdefi/zerodust
- version: 0.5.1
- connection class: unknown (unknown)
- trust: 64/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.andresdefi%2Fzerodust
- tools: https://api.protogrid.dev/v1/servers/io.github.andresdefi%2Fzerodust/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "zerodust": {
      "type": "http",
      "url": "https://api.zerodust.xyz/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 0
- freshness: 100
- provenance: 80
- drivers: +repository +namespace-matches-repo -unreachable(5 failures) +updated-19d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: zerodust_get_quote (destructiveHint, idempotentHint); zerodust_register_api_key (idempotentHint); zerodust_info (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,172 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @zerodust/mcp-server@0.5.1

- tools: 8, about 1,172 tokens to load them all
- tool set hash: f6fced0c0d7cc83bf8fc493cde6aeebd
- tools last changed: 2026-10-01T20:50:59.152Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.andresdefi/zerodust.svg)](https://protogrid.dev/servers/io.github.andresdefi/zerodust)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-01 `zerodust_get_destinations` added
  - List the chains a balance on fromChainId can be swept to, receiving that chain's native gas (e.g. ETH on Base, BNB on BSC, HYPE on HyperEVM). Destinations are not limited to the chains ZeroDust sweeps from: any EVM chain a bridge serves qualifies. Call this before quoting a cross-chain sweep to pick where the funds should go.

Full history: https://api.protogrid.dev/v1/servers/io.github.andresdefi%2Fzerodust/changes

## Dependencies

- npm @zerodust/mcp-server@0.5.1: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.zerodust.xyz/mcp (streamable-http, auth none, reachable false, uptime30d 0.94623655)

## Packages

- npm @zerodust/mcp-server@0.5.1 secrets: ZERODUST_API_KEY, ZERODUST_KEYSTORE_PASSWORD, ZERODUST_PRIVATE_KEY

## Tools (8)

- `zerodust_get_balances`: 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.
- `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.
- `zerodust_get_destinations`: List the chains a balance on fromChainId can be swept to, receiving that chain's native gas (e.g. ETH on Base, BNB on BSC, HYPE on HyperEVM). Destinations are not limited to the chains ZeroDust sweeps from: any EVM chain a bridge serves qualifies. Call this before quoting a cross-chain sweep to pick where the funds should go.
- `zerodust_get_quote`: 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.
- `zerodust_get_sweep_status`: 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.
- `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.
- `zerodust_list_sweeps`: List past sweeps for a wallet address, with status and amounts. Useful for confirming a chain was already emptied before trying again.
- `zerodust_register_api_key`: 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.
