eggybug42069 avatar

Name Whisper — ENS Intelligence Layer

eggybug42069/namewhisper-mcp

Connects Claude to Ethereum Name Service operations through 34 specialized tools. You get full ENS lifecycle management: search available domains, register new names, handle renewals, transfer ownership, and manage DNS records. The AI intelligence layer adds valuation estimates and trading capabilities, so you can appraise names and execute marketplace transactions without leaving your workflow. Useful when you're building ENS-integrated applications, managing a domain portfolio, or need to automate registration and renewal tasks. Runs over streamable HTTP, so it works with any MCP-compatible client pointed at namewhisper.ai's endpoint.

tools
44
transport
HTTP
last updated
Jul 31, 2026

Install

From registry metadata
$ npx add-mcp https://namewhisper.ai/mcp --name ens-tools

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http ens-tools https://namewhisper.ai/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 44 tools

Verified live against the running server on Nov 6, 2026.

search_ens_namesSearch ENS names using natural language. Supports all query types: - Filtered search: "4-letter words under 0.1 ETH" - Concept search: "ocean themed names" (semantic similarity across 3.5M indexed ENS names) - Creative search: "names for a coffee brand" (AI-generated suggestio...1 params

Search ENS names using natural language. Supports all query types: - Filtered search: "4-letter words under 0.1 ETH" - Concept search: "ocean themed names" (semantic similarity across 3.5M indexed ENS names) - Creative search: "names for a coffee brand" (AI-generated suggestio...

Parameters* required
query*string
Natural language search query (e.g. "cheap 3-letter words", "ocean themed names", "is coffee.eth taken?")
enumerate_entitiesEnumerate ENS-friendly labels for a finite real-world entity category and report which are available vs registered. USE THIS for ANY finite set of real-world people, companies, teams, or works — including queries that name a ROLE or PROFESSION rather than a league, e.g. "which...2 params

Enumerate ENS-friendly labels for a finite real-world entity category and report which are available vs registered. USE THIS for ANY finite set of real-world people, companies, teams, or works — including queries that name a ROLE or PROFESSION rather than a league, e.g. "which...

Parameters* required
category*string
Real-world entity category ONLY — e.g. "NBA hall of fame players", "Pixar feature films", "F1 world champions", "US presidents", "Italian cities", "Beatles songs". Be specific ("NBA hall of famers"...
filterstring
Which slice to return. "available" = registerable names only (most common for "what can I buy" queries). "registered" = names already owned. "all" = both, with status. Default: all.one of all · available · registereddefault: all
get_name_detailsGet full details for a specific ENS name including owner, expiry, creation date, tags, active listings (with prices in ETH and USD), active offers, ENSIP-25 agent identity bindings, and ENSIP-26 agent context records. creationDate is always populated — for Vickrey-era names (i...1 params

Get full details for a specific ENS name including owner, expiry, creation date, tags, active listings (with prices in ETH and USD), active offers, ENSIP-25 agent identity bindings, and ENSIP-26 agent context records. creationDate is always populated — for Vickrey-era names (i...

Parameters* required
name*string
ENS name or label (e.g. "vitalik" or "vitalik.eth")
check_availabilityCheck availability of one or more ENS names the user named, or labels returned by enumerate_entities. Do NOT feed it names you invented/typed yourself (especially real-world people, teams, brands, or films — models misspell those); get verified labels from enumerate_entities f...1 params

Check availability of one or more ENS names the user named, or labels returned by enumerate_entities. Do NOT feed it names you invented/typed yourself (especially real-world people, teams, brands, or films — models misspell those); get verified labels from enumerate_entities f...

Parameters* required
names*array
Array of ENS names or labels to check (max 100). e.g. ["coffee", "tea.eth", "pixel"]
get_similar_namesFind ENS names semantically similar to a given name using vector embeddings across 3.5M indexed ENS names. Returns similar names with similarity scores, status (REGISTERED / GRACE_PERIOD / PREMIUM_AUCTION / AVAILABLE), and live marketplace data. Names in GRACE_PERIOD are NOT r...2 params

Find ENS names semantically similar to a given name using vector embeddings across 3.5M indexed ENS names. Returns similar names with similarity scores, status (REGISTERED / GRACE_PERIOD / PREMIUM_AUCTION / AVAILABLE), and live marketplace data. Names in GRACE_PERIOD are NOT r...

Parameters* required
limitnumber
Max results (default 20, max 50)default: 20
name*string
ENS name or label to find similar names for (e.g. "coffee", "pixel.eth")
get_valuationGet a confidence-rated valuation for an ENS name based on comparable sales, entity recognition (Wikipedia/Wikidata), search interest, word frequency, and fame-scaled pricing. Returns estimated value range, background context on the name (person/place/brand/concept), comparable...1 params

Get a confidence-rated valuation for an ENS name based on comparable sales, entity recognition (Wikipedia/Wikidata), search interest, word frequency, and fame-scaled pricing. Returns estimated value range, background context on the name (person/place/brand/concept), comparable...

Parameters* required
name*string
ENS name or label to value (e.g. "coffee" or "coffee.eth")
get_market_activityGet recent ENS marketplace activity. Covers exactly three event types — SALE, PREMIUM_REGISTRATION and SWAP — and nothing else: it does NOT report listings, standing offers, mints, transfers, renewals or burns, so never conclude from an empty result that none of those occurred...4 params

Get recent ENS marketplace activity. Covers exactly three event types — SALE, PREMIUM_REGISTRATION and SWAP — and nothing else: it does NOT report listings, standing offers, mints, transfers, renewals or burns, so never conclude from an empty result that none of those occurred...

Parameters* required
collectionstring
Restrict to names in one collection, by slug — e.g. "10k-club", "999-club", "3-letter-dictionary". Use it whenever the user names a club or collection; without it the results are the WHOLE market a...
eventTypesarray
Filter by event type. Defaults to all three; see the tool description for what each means.
limitinteger
Max results (default 25, max 100)default: 25
offsetinteger
Pagination offsetdefault: 0
get_expiring_namesList ENS names by lifecycle window across the WHOLE market — THE tool for "which names are in premium / on Dutch auction", "names in grace period", "what's expiring soon / about to drop". NOT for the user's own names: it has no wallet filter, so "my names close to premium / in...10 params

List ENS names by lifecycle window across the WHOLE market — THE tool for "which names are in premium / on Dutch auction", "names in grace period", "what's expiring soon / about to drop". NOT for the user's own names: it has no wallet filter, so "my names close to premium / in...

Parameters* required
categorystring
Collection slug filter (e.g. "crypto-terms", "999-club")
charTypestring
Character composition filter. When this tool is the right one AND the request is for digits — "N-digit", "numeric", or a digit club (999 Club = 3-digit, 10K Club = 4-digit, 100K Club = 5-digit) — s...one of letters · numbers · emoji · mixed
daysnumber
For status "active"/"all": look-ahead window in days (default 30).
dictionaryOnlyboolean
Only dictionary words
limitnumber
Max results (default 25, max 100)default: 25
maxLengthnumber
Maximum label length in CHARACTERS (see minLength note re digits).
minGradestring
Only names graded at least this well (A best). Combine with sortBy:"grade" for the shortlist.one of A · B · C · D · E
minLengthnumber
Minimum label length in CHARACTERS. Length alone does NOT imply digits — a "4-digit" query needs charType:"numbers" too, or 4-letter names leak in.
sortBystring
Sort order (default expires ascending — closest to dropping first). "grade" = best expected auction outcome first; use it for "which premium names are worth the most / best opportunities".one of expires · length · social · grade
statusstring
Lifecycle window: "premium" = in the 21-day post-grace Dutch auction (registerable at a decaying premium), "grace" = 0-90d past expiry (NOT registerable, holder can renew), "active" = registered na...one of premium · grace · active · alldefault: premium
wash_checkAssess whether an ENS name's sale(s) are WASH TRADING / fake / self-dealt / manipulated volume. THE tool for any "is this wash trading?", "is the sale history of X suspicious/fake/real?", "are these trades legit?", "is someone wash-trading this name?" question — route straight...5 params

Assess whether an ENS name's sale(s) are WASH TRADING / fake / self-dealt / manipulated volume. THE tool for any "is this wash trading?", "is the sale history of X suspicious/fake/real?", "are these trades legit?", "is someone wash-trading this name?" question — route straight...

Parameters* required
buyerstring
Buyer wallet address for live analysis
labelstring
ENS label (e.g. "defirm") for live analysis, or to pick one name out of a multi-name (bulk sweep) tx_hash lookup
price_ethnumber
Sale price in ETH for live analysis
sellerstring
Seller wallet address for live analysis
tx_hashstring
Transaction hash to look up pre-computed wash score
get_wallet_portfolioGet all ENS names owned by a wallet address. Returns each name with label, tags, expiry, lifecycle status, registration date, and active listing/offer prices. Useful for portfolio analysis and wallet profiling. THE tool for any question about the connected wallet's OWN names b...4 params

Get all ENS names owned by a wallet address. Returns each name with label, tags, expiry, lifecycle status, registration date, and active listing/offer prices. Useful for portfolio analysis and wallet profiling. THE tool for any question about the connected wallet's OWN names b...

Parameters* required
limitnumber
Max results (default 100, max 200)default: 100
offsetnumber
Pagination offset. Page until `totalMatching` names have been seen — the summary counts the whole portfolio, the rows are one page.default: 0
statusstring
Lifecycle filter, applied BEFORE paging. "GRACE_PERIOD" = expired ≤90 days, the window right before premium — use it for "my names close to / about to hit premium". "EXPIRING_SOON" = active, ≤90 da...one of ACTIVE · EXPIRING_SOON · GRACE_PERIOD · PREMIUM_AUCTION · alldefault: all
wallet*string
Ethereum wallet address (0x...) or ENS name
find_alphaScan the ENS marketplace for alpha — names listed below their valuation. Returns ranked opportunities with a discount %, fair-value range, confidence rating, and comparable data. Candidates are selected by DESIRABILITY (real curated collections, short, accessibly priced above...7 params

Scan the ENS marketplace for alpha — names listed below their valuation. Returns ranked opportunities with a discount %, fair-value range, confidence rating, and comparable data. Candidates are selected by DESIRABILITY (real curated collections, short, accessibly priced above...

Parameters* required
charTypestring
Filter by character typeone of letters · numbers · emoji
limitnumber
Max results to return. Default 25, max 100.default: 25
maxLengthinteger
Maximum label length (e.g. 5 for up to 5-letter names). Omit for no cap — never pass a huge sentinel number.
maxPriceEthnumber
Maximum listing price in ETH (e.g. 1.0). Omit for no cap — never pass a huge sentinel number.
minConfidencestring
Minimum engine confidence. Floored at MEDIUM — find_alpha never returns LOW-confidence (thin-comp) picks. HIGH = 20+ comps, MEDIUM = 10+.one of HIGH · MEDIUM · LOWdefault: MEDIUM
minDiscountPctnumber
Minimum discount vs the engine fair value. Default 20%. Range: 1-99.default: 20
minLengthinteger
Minimum label length (e.g. 3 for 3-letter names and up)
get_primary_nameCheck what primary ENS name is set for a wallet address (reverse resolution). Returns the ENS name that this address resolves to, or null if no primary name is set. This verifies both directions: - Reverse: address → name (the reverse record) - Forward: name → address (confirm...1 params

Check what primary ENS name is set for a wallet address (reverse resolution). Returns the ENS name that this address resolves to, or null if no primary name is set. This verifies both directions: - Reverse: address → name (the reverse record) - Forward: name → address (confirm...

Parameters* required
walletAddress*string
Ethereum wallet address (0x...) to check reverse resolution for
provision_agent_identityProvision a complete ENS identity for an AI agent in one call. Describe your agent's purpose and budget — get back recommended available names, a multi-step registration recipe (commit → register → set agent records), and ready-to-sign transaction data. The registration recipe...5 params

Provision a complete ENS identity for an AI agent in one call. Describe your agent's purpose and budget — get back recommended available names, a multi-step registration recipe (commit → register → set agent records), and ready-to-sign transaction data. The registration recipe...

Parameters* required
agentRegistryobject
ENSIP-25 agent registry binding. If provided, the provisioning flow will include the agent-registration text record that links this ENS name to your on-chain agent identity.
budgetEthnumber
Maximum budget in ETH for name acquisition (default: 0.1)default: 0.1
preferencesobject
Optional naming preferences
purpose*string
What the agent does (e.g. "DeFi trading bot", "data analytics agent", "social media manager", "infrastructure monitor")
walletAddress*string
Agent wallet address (will own the name and sign transactions)
make_offerPlace an offer (bid) on a registered ENS name on NameWhisper via Seaport 1.6. Returns an unsigned Seaport OrderComponents payload (plus EIP-712 domain/types) that the caller's wallet signs. The buyer offers WETH and receives the name on acceptance. After signing, POST { orderC...5 params

Place an offer (bid) on a registered ENS name on NameWhisper via Seaport 1.6. Returns an unsigned Seaport OrderComponents payload (plus EIP-712 domain/types) that the caller's wallet signs. The buyer offers WETH and receives the name on acceptance. After signing, POST { orderC...

Parameters* required
amountEth*number
Offer amount in ETH (placed on-chain as WETH)
currencystring
Offer currency. Seaport offers settle in WETH; ETH is treated as WETH.one of WETH · ETHdefault: WETH
expiryHoursinteger
Offer expiry in hours (default: 72, at most 8760: one year)default: 72
name*string
ENS name to make an offer on (e.g. "coffee.eth")
walletAddress*string
Your wallet address (the offer maker / buyer)
purchase_namePurchase an ENS name — either buy a listed name from a marketplace or register an available name directly on-chain. For AVAILABLE names: Returns a complete registration recipe with contract address, ABI, step-by-step instructions, and a pre-generated secret. Your wallet signs...10 params

Purchase an ENS name — either buy a listed name from a marketplace or register an available name directly on-chain. For AVAILABLE names: Returns a complete registration recipe with contract address, ABI, step-by-step instructions, and a pre-generated secret. Your wallet signs...

Parameters* required
actionstring
Action: buy_listing (purchase listed name), register (register available name), auto (detect automatically)one of buy_listing · register · autodefault: auto
durationinteger
Registration duration in days. ENS protocol minimum is 28 days; maximum is 3650 (10 years); default is 365 (1 year). Sub-year is allowed.default: 365
durationYearsnumber
DEPRECATED — use duration (days) instead. Number of years (converted to days internally).
fromAddressstring
ENS v2 only: the wallet that signs and pays in USDC/DAI, when it is not walletAddress (registering to another wallet). Defaults to walletAddress.
maxPriceEthnumber
Maximum price willing to pay in ETH: a listing's price, or for a registration the registration fee plus any premium and the Name Whisper fee
maxPriceUsdnumber
ENS v2 registrations only: the most to pay in USD (v2 is priced in USDC/DAI, so maxPriceEth does not apply to it).
name*string
ENS name to purchase (e.g. "coffee.eth")
orderHashstring
Specific Seaport order hash to fulfill. Use this when the user has chosen a specific listing from multiple options.
paymentTokenstring
ENS v2 registrations only: the stablecoin symbol or address explicitly chosen by the user. Otherwise omit: defaults to the first USDC-family token accepted by the active router (MOCKUSDC on Sepolia...
walletAddress*string
Buyer wallet address (will own the name)
bulk_registerRegister multiple ENS names in bulk — total 2 transactions (multiCommit + multiRegister) via NWBulkRegistrar. Much cheaper and faster than registering names one at a time. Supports up to 20 names per batch. Flow: multiCommit (1 tx, all N commitments) → wait 60 seconds → multiR...6 params

Register multiple ENS names in bulk — total 2 transactions (multiCommit + multiRegister) via NWBulkRegistrar. Much cheaper and faster than registering names one at a time. Supports up to 20 names per batch. Flow: multiCommit (1 tx, all N commitments) → wait 60 seconds → multiR...

Parameters* required
durationinteger
Registration duration in days, applied to every name in the batch. ENS protocol minimum is 28 days; maximum is 3650 (10 years); default is 365 (1 year).default: 365
durationYearsnumber
DEPRECATED — use duration (days) instead. Number of years (converted to days internally).
fromAddressstring
ENS v2 only: the wallet that signs and pays in USDC/DAI, when it is not walletAddress (registering to another wallet). Defaults to walletAddress.
names*array
Array of ENS names to register (e.g. ["coffee.eth", "tea.eth"]). Max 20 per batch.
paymentTokenstring
ENS v2 only: the stablecoin symbol or address explicitly chosen by the user. Otherwise omit: defaults to the first USDC-family token accepted by the active router (MOCKUSDC on Sepolia; Circle USDC...
walletAddress*string
Wallet address that will own all registered names
create_listingList an ENS name for sale on NameWhisper's marketplace via Seaport 1.6. Returns an unsigned Seaport OrderComponents payload (plus EIP-712 domain/types) that the caller's wallet signs. After signing, POST the { orderComponents, signature, label, orderType: 'listing' } payload t...4 params

List an ENS name for sale on NameWhisper's marketplace via Seaport 1.6. Returns an unsigned Seaport OrderComponents payload (plus EIP-712 domain/types) that the caller's wallet signs. After signing, POST the { orderComponents, signature, label, orderType: 'listing' } payload t...

Parameters* required
durationSecondsinteger
Listing duration in seconds (default: 30 days / 2592000, at most 31536000: one year)default: 2592000
name*string
ENS name to list (e.g. "coffee.eth")
priceEth*number
Total listing price in ETH (buyer pays this; seller receives it minus the 1% marketplace fee)
walletAddress*string
Wallet address of the seller. Must own the name.
cancel_listingCancel an active ENS name listing by submitting Seaport's cancel() on-chain. Returns the unsigned Seaport cancel() transaction calldata. Your wallet signs and submits; once mined, Seaport marks the order invalid and no marketplace (NW, Grails, OpenSea) can fulfill it anymore....3 params

Cancel an active ENS name listing by submitting Seaport's cancel() on-chain. Returns the unsigned Seaport cancel() transaction calldata. Your wallet signs and submits; once mined, Seaport marks the order invalid and no marketplace (NW, Grails, OpenSea) can fulfill it anymore....

Parameters* required
alsoCancelarray
Up to 8 more of your listings FOR THE SAME NAME to cancel atomically in the same tx (e.g. the OpenSea-variant counterpart of an NW listing). Seaport.cancel() accepts an array — cancelling N orders...
orderHash*string
Seaport order hash of the listing to cancel (from get_name_details or the orderbook)
walletAddress*string
Wallet address of the seller. Must match the original offerer on the order.
cancel_offerCancel an active offer you made on an ENS name. Returns unsigned Seaport cancel() calldata. Only the bidder (the order's offerer) can cancel. If the offer was cross-posted to OpenSea, you signed a second 'opensea' variant — pass BOTH order hashes as alsoCancel so one tx kills...3 params

Cancel an active offer you made on an ENS name. Returns unsigned Seaport cancel() calldata. Only the bidder (the order's offerer) can cancel. If the offer was cross-posted to OpenSea, you signed a second 'opensea' variant — pass BOTH order hashes as alsoCancel so one tx kills...

Parameters* required
alsoCancelarray
Up to 8 more of your offers ON THE SAME NAME to cancel in the same tx (e.g. the OpenSea-variant of an NW offer). Cancelling N orders costs barely more than cancelling one.
orderHash*string
Seaport order hash of the offer to cancel (from get_name_details or the orderbook)
walletAddress*string
Wallet address of the bidder. Must match the original offerer on the order.
accept_offerAccept a standing offer on an ENS name you own. Returns unsigned Seaport fulfillOrder() calldata. When you submit this transaction, Seaport atomically: - Pulls the offered WETH from the buyer's wallet - Transfers the ENS name from your wallet to the buyer - Pays the fees the o...2 params

Accept a standing offer on an ENS name you own. Returns unsigned Seaport fulfillOrder() calldata. When you submit this transaction, Seaport atomically: - Pulls the offered WETH from the buyer's wallet - Transfers the ENS name from your wallet to the buyer - Pays the fees the o...

Parameters* required
orderHash*string
Seaport order hash of the buyer's offer to accept
walletAddress*string
Your wallet address (the seller). Must own the ENS name in the offer.
batch_purchaseBuy up to 20 SPECIFIC listed ENS names in a SINGLE Seaport transaction, across NameWhisper, OpenSea, AND Grails listings. Use this when the user names the exact names to buy. To buy the cheapest N names in a category/collection (a floor sweep), use the 'sweep' tool instead. It...2 params

Buy up to 20 SPECIFIC listed ENS names in a SINGLE Seaport transaction, across NameWhisper, OpenSea, AND Grails listings. Use this when the user names the exact names to buy. To buy the cheapest N names in a category/collection (a floor sweep), use the 'sweep' tool instead. It...

Parameters* required
names*array
Array of ENS names to buy (e.g. ["coffee.eth", "tea.eth"]). Max 20 per batch.
walletAddress*string
Buyer wallet address — receives all purchased names.
sweepFloor-sweep: buy the CHEAPEST N listed ENS names in a category/collection (or matching a filter) in ONE Seaport transaction. Use this when the user wants "the cheapest N", "sweep the floor", or "buy up to X ETH of" a cohort — rather than naming specific names (that's batch_pur...9 params

Floor-sweep: buy the CHEAPEST N listed ENS names in a category/collection (or matching a filter) in ONE Seaport transaction. Use this when the user wants "the cheapest N", "sweep the floor", or "buy up to X ETH of" a cohort — rather than naming specific names (that's batch_pur...

Parameters* required
categorystring
Collection slug to sweep, as used by the marketplace (e.g. "999-club", "10k-club", "three-letter"). Comma-separate for multiple. Optional if q/charType/length is given.
charTypestring
Restrict to a character class. "mixed" covers any label combining letters and digits; "hex" narrows to just the all-hex-digit ones (abc666, 1a2b).one of letters · numbers · emoji · mixed · hex
countinteger
How many names to sweep, cheapest-first (max 20 per tx). Defaults to 10 if no budget is given.
maxBudgetEthnumber
Total ETH budget — keeps buying up the floor until adding the next cheapest would exceed this.
maxLengthinteger
Maximum label length.
maxPriceEthnumber
Per-name price cap — skip any listing above this so a pricey outlier just off the floor is not swept up.
minLengthinteger
Minimum label length.
qstring
Label text filter (substring), e.g. "punk" to sweep names containing punk.
walletAddress*string
Buyer wallet address — receives all swept names.
batch_create_listingsBulk-list up to 500 ENS names for sale on NameWhisper in one signing flow. Returns an array of unsigned Seaport OrderComponents payloads. The caller's wallet signs them all in one EIP-712 bulk signature (SIP-6), then POSTs the signed orders back to https://namewhisper.ai/api/o...3 params

Bulk-list up to 500 ENS names for sale on NameWhisper in one signing flow. Returns an array of unsigned Seaport OrderComponents payloads. The caller's wallet signs them all in one EIP-712 bulk signature (SIP-6), then POSTs the signed orders back to https://namewhisper.ai/api/o...

Parameters* required
durationSecondsinteger
Listing duration in seconds (applied to every name, default: 30 days, at most 31536000: one year)default: 2592000
listings*array
Array of { name, priceEth }. Per-item validation (empty name, non-positive price) is collected in the errors array rather than rejecting the whole batch.
walletAddress*string
Wallet address of the seller. Must own all the names.
renew_ens_nameRenew an ENS name or batch of names. Returns the transaction data needed to extend registration. Unlike registration, renewal is simple — just one transaction with payment. No commit/reveal needed. Accepts any duration from 1 day up — days, weeks, months, years. ENS protocol h...7 params

Renew an ENS name or batch of names. Returns the transaction data needed to extend registration. Unlike registration, renewal is simple — just one transaction with payment. No commit/reveal needed. Accepts any duration from 1 day up — days, weeks, months, years. ENS protocol h...

Parameters* required
budgetEthnumber
Spend cap in ETH ("renew X with 0.02 ETH", "I only have 0.05 ETH") — ONLY when the user states an ETH amount. A dollar figure is budgetUsd even when it says ETH ("$1 of eth", "$20 worth of ETH"): n...
budgetUsdnumber
Spend cap in USD ("renew X for $45", "put $20 into it"). The tool prices the name(s) on-chain and picks the LONGEST whole number of days whose transaction value fits under this cap — never compute...
durationinteger
Duration in days to extend registration (e.g. 7 for 1 week, 28 for a month, 365 for a year). Default: 365. Minimum: 1 day. Maximum: 36500 (100 years). When a budget is also given, the budget wins:...
names*value
ENS name or array of names to renew (e.g. "coffee.eth" or ["coffee.eth", "wallet.eth"])
paymentTokenstring
ENS v2 only: the stablecoin symbol or address explicitly chosen by the user. Otherwise omit: defaults to the first USDC-family token accepted by the active router (MOCKUSDC on Sepolia; Circle USDC...
walletAddressstring
The wallet that will sign and pay. Required on ENS v2, where the renewal pulls USDC/DAI from this wallet; ignored on v1.
yearsnumber
DEPRECATED — use duration instead. Number of years (converted to days internally). At most 100, the same ceiling as duration.
transfer_ens_nameTransfer ownership of an ENS name to another wallet. Call this tool IMMEDIATELY — as your first and only action — whenever the user asks to transfer/send/move/give a name to someone: "transfer coffee.eth to vitalik.eth", "send myname.eth to 0xabc...". That message is complete:...3 params

Transfer ownership of an ENS name to another wallet. Call this tool IMMEDIATELY — as your first and only action — whenever the user asks to transfer/send/move/give a name to someone: "transfer coffee.eth to vitalik.eth", "send myname.eth to 0xabc...". That message is complete:...

Parameters* required
fromAddress*string
Current owner wallet address (must sign the transaction)
name*string
ENS name to transfer (e.g. "coffee.eth")
toAddress*string
Recipient — either a 0x wallet address OR an ENS name (e.g. "vitalik.eth"). ENS names are resolved to their on-chain address record automatically.
set_ens_recordsSet ENS resolver records for a name you own. Returns encoded transaction calldata ready to sign and broadcast. Supports: address records — ETH as a plain 0x address, non-ETH coins (BTC, SOL, LTC, DOGE, …) as the raw wallet-format address (bc1…, base58, …) which is ENSIP-9-enco...3 params

Set ENS resolver records for a name you own. Returns encoded transaction calldata ready to sign and broadcast. Supports: address records — ETH as a plain 0x address, non-ETH coins (BTC, SOL, LTC, DOGE, …) as the raw wallet-format address (bc1…, base58, …) which is ENSIP-9-enco...

Parameters* required
name*string
ENS name to set records for (e.g. "myagent.eth")
records*object
Records to set on the name
walletAddress*string
Wallet address that owns the name (must sign the transaction)
bulk_set_recordsSet ENS resolver records for multiple names in a single transaction — bulk record editing. All record updates across all names are batched into one resolver.multicall() call. Much cheaper than setting records one name at a time. Supports the same record types as set_ens_record...2 params

Set ENS resolver records for multiple names in a single transaction — bulk record editing. All record updates across all names are batched into one resolver.multicall() call. Much cheaper than setting records one name at a time. Supports the same record types as set_ens_record...

Parameters* required
nameRecords*array
Array of name + records pairs. Max 50 names per batch.
walletAddress*string
Wallet address that owns these names (must sign the transaction)
bulk_transfer_ens_namesTransfer multiple ENS names in one batch — bulk send. Wrapped names going to the same recipient move in one transaction; each unwrapped name and unwrapped subname takes its own. Supports up to 20 names per batch. Automatically detects whether each name is wrapped (NameWrapper/...2 params

Transfer multiple ENS names in one batch — bulk send. Wrapped names going to the same recipient move in one transaction; each unwrapped name and unwrapped subname takes its own. Supports up to 20 names per batch. Automatically detects whether each name is wrapped (NameWrapper/...

Parameters* required
fromAddress*string
Current owner wallet address (must sign the transaction). All names must be owned by this address.
transfers*array
Array of name + recipient pairs. Max 20 per batch. All names must be owned by fromAddress.
set_primary_nameSet the primary ENS name (reverse resolution) for a wallet address. This controls what name is displayed when someone looks up your Ethereum address. For example, instead of seeing "0x1234...abcd", they'd see "myname.eth". Requirements: - You must own or control the ENS name -...2 params

Set the primary ENS name (reverse resolution) for a wallet address. This controls what name is displayed when someone looks up your Ethereum address. For example, instead of seeing "0x1234...abcd", they'd see "myname.eth". Requirements: - You must own or control the ENS name -...

Parameters* required
name*string
ENS name to set as primary (e.g. "myname.eth")
walletAddress*string
Wallet address to set the primary name for (must sign the transaction)
set_resolverChange the resolver contract for an ENS name. The resolver is where a name's records live (ETH address, text records, content hash, etc.). Changing the resolver points the name at a different contract. Common use cases: - Migrating to the latest ENS Public Resolver - Pointing...2 params

Change the resolver contract for an ENS name. The resolver is where a name's records live (ETH address, text records, content hash, etc.). Changing the resolver points the name at a different contract. Common use cases: - Migrating to the latest ENS Public Resolver - Pointing...

Parameters* required
name*string
ENS name to change resolver for (e.g. "coffee.eth")
resolver*string
New resolver contract address. Use "public" for the ENS Public Resolver.
manage_ens_nameOne-shot management report for an ENS name. This is the ONLY tool you need to answer "management report", "full overview", "health check", "status check", "what should I do about X", or "tell me what to do with X" queries. Prefer this over calling get_name_details + get_valuat...2 params

One-shot management report for an ENS name. This is the ONLY tool you need to answer "management report", "full overview", "health check", "status check", "what should I do about X", or "tell me what to do with X" queries. Prefer this over calling get_name_details + get_valuat...

Parameters* required
includeRenewalPricingboolean
Include on-chain renewal pricing (default: true)default: true
name*string
ENS name to check (e.g. "coffee.eth")
wrap_nameWrap an unwrapped .eth name into the ENS NameWrapper contract. Wrapping converts the name from an ERC-721 token (BaseRegistrar) to an ERC-1155 token (NameWrapper). This enables: - Fuse permissions (restrict what can be done with the name) - Protected subnames (subnames with gu...3 params

Wrap an unwrapped .eth name into the ENS NameWrapper contract. Wrapping converts the name from an ERC-721 token (BaseRegistrar) to an ERC-1155 token (NameWrapper). This enables: - Fuse permissions (restrict what can be done with the name) - Protected subnames (subnames with gu...

Parameters* required
fusesarray
Optional fuses to burn on wrap (e.g. ["CANNOT_UNWRAP"]). WARNING: irreversible.
name*string
ENS name to wrap (e.g. "coffee.eth")
owner*string
Address of the current name owner (must own the BaseRegistrar token)
unwrap_nameUnwrap a .eth name from the ENS NameWrapper back to BaseRegistrar. This converts the name from an ERC-1155 token back to an ERC-721 token. All fuses are cleared upon unwrapping. Will fail if the CANNOT_UNWRAP fuse has been burned — that restriction is permanent. Use cases: - R...2 params

Unwrap a .eth name from the ENS NameWrapper back to BaseRegistrar. This converts the name from an ERC-1155 token back to an ERC-721 token. All fuses are cleared upon unwrapping. Will fail if the CANNOT_UNWRAP fuse has been burned — that restriction is permanent. Use cases: - R...

Parameters* required
name*string
ENS name to unwrap (e.g. "coffee.eth")
owner*string
Address of the current wrapped name owner
manage_fusesManage fuses on a wrapped ENS name. Fuses are permission bits that can be permanently burned to restrict what can be done with a name. Three modes: 1. **read** — Check which fuses are currently burned on a name 2. **burn_owner_fuses** — Burn fuses on a name you own (CANNOT_UNW...4 params

Manage fuses on a wrapped ENS name. Fuses are permission bits that can be permanently burned to restrict what can be done with a name. Three modes: 1. **read** — Check which fuses are currently burned on a name 2. **burn_owner_fuses** — Burn fuses on a name you own (CANNOT_UNW...

Parameters* required
actionstring
Action: "burn_owner_fuses" burns fuses on a name you own, "burn_child_fuses" burns fuses on a subname you are parent of, "read" reads current fusesone of burn_owner_fuses · burn_child_fuses · readdefault: read
expirynumber
For burn_child_fuses only: Unix timestamp for subname expiry (cannot exceed parent expiry)
fusesarray
Fuses to burn. Required for burn actions, optional for read. Owner fuses: CANNOT_UNWRAP, CANNOT_BURN_FUSES, CANNOT_TRANSFER, CANNOT_SET_RESOLVER, CANNOT_SET_TTL, CANNOT_CREATE_SUBDOMAIN, CANNOT_APP...
name*string
ENS name to manage fuses on (e.g. "coffee.eth" for owner fuses, or "sub.coffee.eth" for child fuses)
mint_subnamesBulk-create subnames under a parent ENS name. Designed for agent fleet deployment — create identities like agent001.company.eth, agent002.company.eth, etc. Each subname can have its own owner and records (addresses, text records). Each subname mints in its own NameWrapper.setS...4 params

Bulk-create subnames under a parent ENS name. Designed for agent fleet deployment — create identities like agent001.company.eth, agent002.company.eth, etc. Each subname can have its own owner and records (addresses, text records). Each subname mints in its own NameWrapper.setS...

Parameters* required
allowOverwriteboolean
Default false. If false, throws when any subname already exists. Set true to overwrite existing subnames (destructive — replaces current owner).
parentName*string
Parent ENS name (e.g. "company.eth")
subnames*array
Array of subnames to create (max 50 per batch)
walletAddress*string
Wallet address that owns the parent name
extend_subname_expiryExtend the expiry of an ENS subname in the NameWrapper. Subnames have their own expiry that cannot exceed the parent name's expiry. This tool extends a subname's expiry. Who can call this: - The parent name owner (always) - The subname owner (only if CAN_EXTEND_EXPIRY fuse is...2 params

Extend the expiry of an ENS subname in the NameWrapper. Subnames have their own expiry that cannot exceed the parent name's expiry. This tool extends a subname's expiry. Who can call this: - The parent name owner (always) - The subname owner (only if CAN_EXTEND_EXPIRY fuse is...

Parameters* required
name*string
Full subname to extend (e.g. "sub.coffee.eth")
yearsnumber
Number of years to extend from now (default: 1). Cannot exceed parent expiry.default: 1
approve_operatorApprove or revoke an operator for ENS contract interactions. An approved operator can transfer ANY token owned by the approver on the specified contract. This is setApprovalForAll — it covers all tokens, not just one. Contracts: - **base_registrar** — ERC-721 tokens (unwrapped...4 params

Approve or revoke an operator for ENS contract interactions. An approved operator can transfer ANY token owned by the approver on the specified contract. This is setApprovalForAll — it covers all tokens, not just one. Contracts: - **base_registrar** — ERC-721 tokens (unwrapped...

Parameters* required
approvedboolean
true to approve, false to revoke (default: true)default: true
contract*string
Which contract to set approval on: base_registrar (ERC-721), name_wrapper (ERC-1155), ens_registry, or ens_v2_registry (ENS v2 names, ERC-1155)one of base_registrar · name_wrapper · ens_registry · ens_v2_registry
operator*string
Address being approved/revoked as operator
owner*string
Address granting/revoking operator approval
reclaim_nameReclaim ENS Registry ownership of a .eth name. This syncs the ENS Registry owner to match the BaseRegistrar token owner. Used when: - A name was transferred via direct safeTransferFrom (bypassed ENS routing) - ENS Registry ownership is out of sync with token ownership - Recove...2 params

Reclaim ENS Registry ownership of a .eth name. This syncs the ENS Registry owner to match the BaseRegistrar token owner. Used when: - A name was transferred via direct safeTransferFrom (bypassed ENS routing) - ENS Registry ownership is out of sync with token ownership - Recove...

Parameters* required
name*string
ENS name to reclaim (e.g. "coffee.eth")
owner*string
Address to set as the ENS Registry owner (must own the BaseRegistrar token)
register_agentRegister an ENS name as an ERC-8004 agent identity on Ethereum mainnet. Returns a ready-to-sign transaction. Default route binds the agent to the name itself (ERC-8217 via Adapter8004): whoever holds the name controls the agent, OpenSea shows the agent identity on the name's p...4 params

Register an ENS name as an ERC-8004 agent identity on Ethereum mainnet. Returns a ready-to-sign transaction. Default route binds the agent to the name itself (ERC-8217 via Adapter8004): whoever holds the name controls the agent, OpenSea shows the agent identity on the name's p...

Parameters* required
agentURIstring
Override the agent registration file URI. Defaults to NameWhisper's hosted file, which is built live from the name's ENS records (agent-context, endpoints) so it stays current automatically.
name*string
ENS name to register as an agent (e.g. "myagent.eth"). You must own it.
routestring
adapter (default): bind the agent to the name via ERC-8217 — control and marketplace visibility follow the name. direct: mint the agent NFT to your wallet, independent of the name.one of adapter · directdefault: adapter
walletAddressstring
Wallet that will sign the transaction. For the adapter route this MUST be the name's current token holder. Auto-filled from ERC-8128 auth when omitted.
get_agent_reputationCheck if an ENS name or wallet is a registered AI agent. Returns ENSIP-25 agent-registration verification (text record bindings between ENS names and on-chain agent registries), AI metadata from text records, ERC-8004 identity + reputation data, and ERC-8217 binding status (wh...1 params

Check if an ENS name or wallet is a registered AI agent. Returns ENSIP-25 agent-registration verification (text record bindings between ENS names and on-chain agent registries), AI metadata from text records, ERC-8004 identity + reputation data, and ERC-8217 binding status (wh...

Parameters* required
nameOrWallet*string
ENS name (e.g. "agent.eth") or wallet address (0x...) to look up
search_agent_directorySearch the AI agent directory — find registered agents by name, capability, protocol support, or reputation. Powered by the live ERC-8004 registry via 8004scan (110,000+ agents indexed across 50+ chains). Returns agent identity, owner wallet/ENS, reputation scores, supported p...5 params

Search the AI agent directory — find registered agents by name, capability, protocol support, or reputation. Powered by the live ERC-8004 registry via 8004scan (110,000+ agents indexed across 50+ chains). Returns agent identity, owner wallet/ENS, reputation scores, supported p...

Parameters* required
capabilitiesarray
Filter by supported protocols (e.g. ["MCP", "A2A", "OASF"])
chainstring
Filter by chain name (e.g. "Ethereum Mainnet", "Base", "Solana Mainnet")
limitnumber
Max results (default 25, max 50)default: 25
minReputationnumber
Minimum total score (0-100)
querystring
Search query — agent name, capability, or description
get_caller_identityReturns the authenticated identity of the calling agent. If you connected with ERC-8128 signed requests, this resolves your wallet address to your ENS name, agent metadata, and portfolio summary. Call this first to confirm your identity is recognized. Requires ERC-8128 authent...

Returns the authenticated identity of the calling agent. If you connected with ERC-8128 signed requests, this resolves your wallet address to your ENS name, agent metadata, and portfolio summary. Call this first to confirm your identity is recognized. Requires ERC-8128 authent...

No parameters. Call it with no arguments.

search_knowledgeSearch the ENS knowledge base — governance proposals, protocol documentation, developer insights, blog posts, forum discussions, and Farcaster casts from key ENS figures (Vitalik, Nick Johnson, etc.). Powered by semantic search over curated ENS sources. USE THIS (don't answer...3 params

Search the ENS knowledge base — governance proposals, protocol documentation, developer insights, blog posts, forum discussions, and Farcaster casts from key ENS figures (Vitalik, Nick Johnson, etc.). Powered by semantic search over curated ENS sources. USE THIS (don't answer...

Parameters* required
limitnumber
Number of results to return (default 6)default: 6
query*string
Search query — what you want to know about ENS governance, protocol, ecosystem, or history
sourcestring
Filter to a specific source. Omit to search all sources.one of ens-forum · vitalik-blog · ens-blog · ens-docs · farcaster
get_usage_statsGet usage statistics for this MCP server session. Returns tool call counts, success rates, and average latency.

Get usage statistics for this MCP server session. Returns tool call counts, success rates, and average latency.

No parameters. Call it with no arguments.

Sponsors

Readme

NameWhisper MCP Server

AI-powered ENS intelligence for autonomous agents. Search 3.5M+ names, get valuations, trade, and manage ENS domains — all via the Model Context Protocol.

License: AGPL-3.0 npm MCP

Quick Start

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "namewhisper": {
      "command": "npx",
      "args": ["-y", "namewhisper-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "namewhisper": {
      "command": "npx",
      "args": ["-y", "namewhisper-mcp"]
    }
  }
}

Claude Code

claude mcp add namewhisper -- npx -y namewhisper-mcp

Direct Usage

npx namewhisper-mcp

Remote endpoint (no install)


View the full README on GitHub

Details

Repository
github.com/eggybug42069/namewhisper-mcp
Website
namewhisper.ai
Category
Search & Web Crawling
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Search & Web Crawling MCP servers

View all
1nordax avatarNordax AI Entity Networkai.nordax/mcpSearch and verify 360K+ business entities with trust scores and W3C credentials.0stars
2pocketdrives avatarPocket Drivesai.pocketdrives/pocket-drivesPeer-to-peer car rental search — luxury, exotic, and EV vehicles with delivery across the US.0stars
3productnowai avatarProductNowproductnowai/productnow-mcpConnect AI agents to ProductNow's context engine to search, create, review, and act.0stars
4sitepulsar avatarMcpsitepulsar/mcp-serverSitePulsar AEO audits: fetch FIND/READ/USE agent-readiness scores for any website.0stars
5aryankeluskar avatarAryankeluskar Poke Video Mcparyankeluskar/poke-video-mcpSearch your Flashback video library with natural language to instantly find relevant moments. Get…0stars
6bigvik193 avatarBigvik193 Reddit User Mcpbigvik193/reddit-user-mcpBrowse and manage Reddit posts, comments, and threads. Fetch user activity, explore hot/new/rising…0stars