Search / io.github.andresdefi/zerodust
zerodust
not classifiedRecover stranded native gas: empty a chain's balance to exactly zero on 25 EVM chains.
v0.5.1 · active · repository · descriptor JSON · versions
Search / io.github.andresdefi/zerodust
Recover stranded native gas: empty a chain's balance to exactly zero on 25 EVM chains.
v0.5.1 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"zerodust": {
"type": "http",
"url": "https://api.zerodust.xyz/mcp"
}
}
}claude mcp add --transport http zerodust https://api.zerodust.xyz/mcp[mcp_servers.zerodust]
url = "https://api.zerodust.xyz/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"zerodust": {
"type": "remote",
"url": "https://api.zerodust.xyz/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"zerodust": {
"type": "http",
"url": "https://api.zerodust.xyz/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=zerodust&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLnplcm9kdXN0Lnh5ei9tY3AifQ%3D%3D"
}{
"servers": {
"zerodust": {
"type": "http",
"url": "https://api.zerodust.xyz/mcp"
}
}
}{
"mcpServers": {
"zerodust": {
"httpUrl": "https://api.zerodust.xyz/mcp"
}
}
}extensions:
"zerodust":
enabled: true
name: "zerodust"
type: streamable_http
uri: "https://api.zerodust.xyz/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations8 of 8 tools declare readOnlyHint or destructiveHinttools.directory_hintsno 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); …tools.token_costabout 1,172 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes1 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know @zerodust/[email protected]zerodust_get_destinationsaddedList 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: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+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. How it is computed.
@zerodust/[email protected] npmthis version is not known to the dependency resolver
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://api.zerodust.xyz/mcp streamable-http | none | no (5 failures) | 95% | 582 ms | 2025-06-18 | 2026-10-12 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@zerodust/mcp-server | npm | 0.5.1 | – | ZERODUST_API_KEY, ZERODUST_KEYSTORE_PASSWORD, ZERODUST_PRIVATE_KEY |
zerodust_get_balancesread-only | 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_chainsread-only | 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_destinationsread-only | 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_quoteread-only | 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_statusread-only | 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_inforead-only | 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_sweepsread-only | 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. |
Schemas: list_tools.
{
"name": "io.github.andresdefi/zerodust",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://api.zerodust.xyz/mcp",
"type": "streamable-http"
}
],
"version": "0.5.1",
"packages": [
{
"version": "0.5.1",
"transport": {
"type": "stdio"
},
"identifier": "@zerodust/mcp-server",
"registryType": "npm",
"environmentVariables": [
{
"name": "ZERODUST_API_URL",
"format": "string",
"description": "Custom API URL (defaults to https://api.zerodust.xyz)"
},
{
"name": "ZERODUST_API_KEY",
"format": "string",
"isSecret": true,
"description": "API key for higher rate limits. An agent can issue itself one with the zerodust_register_api_key tool, with no human signup step."
},
{
"name": "ZERODUST_ALLOW_EXECUTE",
"format": "string",
"description": "Set to \"true\" to enable the sweep tools. Sweeping moves real funds, so it is off by default and also requires one of the four signing-key variables below."
},
{
"name": "ZERODUST_SIGNER_MODULE",
"format": "string",
"description": "Path or specifier of a module whose default export returns a viem LocalAccount. This is how Turnkey, Privy, AWS KMS or any other custody service is used, without a raw key ever reaching this server. Preferred over ZERODUST_PRIVATE_KEY."
},
{
"name": "ZERODUST_KEYSTORE_FILE",
"format": "string",
"description": "Path to an encrypted V3 keystore (as produced by `cast wallet import` or geth). Requires ZERODUST_KEYSTORE_PASSWORD_FILE or ZERODUST_KEYSTORE_PASSWORD."
},
{
"name": "ZERODUST_KEYSTORE_PASSWORD_FILE",
"format": "string",
"description": "Path to a file containing the keystore password, so the password never enters the MCP config."
},
{
"name": "ZERODUST_KEYSTORE_PASSWORD",
"format": "string",
"isSecret": true,
"description": "Keystore password inline. Prefer ZERODUST_KEYSTORE_PASSWORD_FILE."
},
{
"name": "ZERODUST_PRIVATE_KEY_FILE",
"format": "string",
"description": "Path to a file containing a hex private key, so the key stays out of the MCP config."
},
{
"name": "ZERODUST_PRIVATE_KEY",
"format": "string",
"isSecret": true,
"description": "Private key for the agent's own wallet, inline. Used locally to sign the EIP-7702 authorization and EIP-712 sweep intent; never transmitted, only the resulting signatures are sent. The signer-module, keystore and key-file options above keep it out of your config entirely."
},
{
"name": "ZERODUST_ALLOWED_DESTINATIONS",
"format": "string",
"description": "Comma-separated allowlist of sweep destinations. When unset, funds can only be swept to the agent's own address."
}
]
}
],
"repository": {
"url": "https://github.com/andresdefi/zerodust",
"source": "github"
},
"description": "Recover stranded native gas: empty a chain's balance to exactly zero on 25 EVM chains."
}