ENS bulk reverse resolver
POST /api/ens-bulk-resolveReverse-resolve a batch of Ethereum addresses to ENS primary names + avatar URLs (up to 50 per call). Send POST /api/ens-bulk-resolve with the required field addresses and pay $0.002 per call over x402 or MPP (there is no free tier). It returns a JSON object with count, namedCount, namedPct, results and source.
Returns one row per address with name (or null), displayName (with checksum if no name), and avatar URI. Use to label transaction lists, wallet leaderboards, or NFT holder snapshots with human-readable names instead of 0xabc… stubs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
addresses | array | yes | 1-50 Ethereum addresses (0x-prefixed 40-hex). |
Example request
curl -i -X POST https://agent402.tools/api/ens-bulk-resolve \
-H "Content-Type: application/json" \
-d '{"addresses":["0xd8da6bf26964af9d7eed9e03e53415d37aa96045","0x000000000000000000000000000000000000dead"]}'
Without payment this returns HTTP 402 Payment Required with the exact price for ens-bulk-resolve; any x402 v2 or MPP client pays it and retries.
Example response
{
"count": 2,
"namedCount": 1,
"namedPct": 50,
"results": [
{
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"name": "vitalik.eth",
"displayName": "vitalik.eth",
"avatar": "https://..."
},
{
"address": "0x000000000000000000000000000000000000dead",
"name": null,
"displayName": "0x0000…dead",
"avatar": null
}
],
"source": "ensideas"
}
| Field | Type | Always present | In the example |
|---|---|---|---|
count | number | yes | 2 |
namedCount | number | yes | 1 |
namedPct | number | yes | 50 |
results | array of objects | yes | 2 items in the example |
source | string | yes | ensideas |
From an MCP client
catalog.call {
"slug": "ens-bulk-resolve",
"params": {
"addresses": [
"0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"0x000000000000000000000000000000000000dead"
]
}
}
The hosted connector at https://agent402.tools/mcp needs a payment for ens-bulk-resolve; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.
Errors and behavior
addressesis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Wallet-only: this tool reaches the network or stored state, so it has no proof-of-work tier. A prepaid card-credits key issued earlier (
Authorization: Bearer a402_...) also pays it. - A
GETorHEADto /api/ens-bulk-resolve returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/ens-bulk-resolve", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"addresses": [
"0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"0x000000000000000000000000000000000000dead"
]
}),
});
Related tools
Known-address label lookup
POST /api/address-labelLabel a known EVM address from a curated, committed dataset: major stablecoin + token contracts (the USDC and USDG contr…
All coin ids (paged)
GET /api/coins-listThe complete list of tracked coins (~18k) as {id, symbol, name}, paged: `page` + `perPage` (1-500, default 250). `includ…
EAS attestations
POST /api/eas-attestationsList EAS (Ethereum Attestation Service) attestations for an address as recipient, attester, or either, on mainnet/Base/O…
Farcaster by Ethereum address
POST /api/farcaster-by-addressReverse-lookup an Ethereum address to its Farcaster account (via verified address). Returns FID, username, display name,…
Farcaster profile
POST /api/farcaster-profileLookup a Farcaster profile by username or FID. Returns FID, username, display name, bio, profile picture URL, follower/f…
Wallet token transfers (filtered)
POST /api/asset-transfersRecent token transfers for a wallet on Base, Ethereum and other EVM chains, newest first. Filtered transfer log for an E…