NW

Name Whisper — ENS Intelligence Layer

ai.namewhisper/ens-tools

44 MCP tools to search, value, register, trade, and manage ENS names. AI-powered intelligence layer.

Yes, your AI can use this right now.Answered a live MCP handshake in 164 ms with no sign-in needed and exposes 44 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://namewhisper.ai/mcp

44 tools, verified live

Pulled straight from the server with tools/list on 2026-10-18.
search_ens_namesread-only

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 suggestions) - Collection search: "crypto terms expiring soon" - Activity: "what sold recently?" - Availability check: "is coffee.et

enumerate_entitiesread-only

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 tech founders have an available .eth?", "available CEOs / politicians / authors / footballers", "famous musicians I can

get_name_detailsread-only

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 (isVickreyEra=true) it reflects the true first-creation date from the 2017-2019 legacy auction contract; for all other name

check_availabilityread-only

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 first. Returns status (AVAILABLE, PREMIUM_AUCTION, REGISTERED, GRACE_PERIOD, INVALID, or UNKNOWN), owner address, and expi

get_similar_namesread-only

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 registerable by anyone but the original holder.

get_valuationread-only

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 sales data, and a narrative explaining the valuation methodology. Essential for pricing decisions.

get_market_activityread-only

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. Returns event details including name, price (in ETH), buyer/seller addresses, and timestamp. Sorted by most recent fi

get_expiring_namesread-only

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 grace / expiring" must go to get_wallet_portfolio with its status parameter (live 2026-09-06 this tool answered "my name

wash_checkread-only

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 here, do NOT use get_name_details or get_market_activity for that (those return sale rows but make NO wash-trading judgm

get_wallet_portfolioread-only

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 by lifecycle window ("my names close to premium" → status:"GRACE_PERIOD"; "my names about to expire" → "EXPIRING_SOON";

find_alpharead-only

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 a floor that excludes 0.001-ETH floor-dumps), then each is precision-priced by the full Name Whisper valuation engine —

get_primary_nameread-only

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 (confirms the name actually points back to this wallet) If either direction is missing, the primary name won't resolve. Use

provision_agent_identitycan modify

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 includes agent identity records (ENSIP-25: ai.agent, ai.purpose, ai.capabilities + ENSIP-26: agent-context) as a ma

make_offer

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 { orderComponents, signature, label, orderType: 'offer', variant: 'nw' } to https://namewhisper.ai/api/orderbook/submit (authentic

purchase_namecan modify

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 and submits the transactions (commit → wait 60s → register). For LISTED names: Searches all marketplaces (OpenSea,

bulk_registercan modify

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 → multiRegister (1 tx with total ETH for all N names). Excess ETH is refunded. Each batch shares one secret across all nam

create_listing

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 to https://namewhisper.ai/api/orderbook/submit (authenticated) to store the order. Fee structure: 1% marketplace fee baked

cancel_listingcan modify

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. Only the original seller (the order's offerer) can cancel. If you cross-posted to OpenSea, you signed a second 'opensea'

cancel_offercan modify

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 both. alsoCancel takes at most 8 other hashes (do not repeat orderHash), all offers on the same name; the result lists e

accept_offercan modify

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 offer was signed with out of the WETH you receive You receive the offer amount minus those fees; the response states both,

batch_purchasecan modify

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's one signature and amortizes gas, far cheaper than calling purchase_name once per name. For each name it picks the chea

sweepcan modify

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_purchase). Pick the cohort with 'category' (a collection slug like "999-club") and/or 'q'/'charType'/'minLength'/'maxLengt

batch_create_listings

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/orderbook/submit-bulk (up to 500 per request) to store. NW-native only — listings stay on NameWhisper. Cheaper UX than c

renew_ens_namecan modify

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 has no minimum renewal period; this tool floors at 1 day for safety. Examples: 1 day, 7 days (1 week), 28 days (1 mont

transfer_ens_namecan modify

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: name + connected wallet (fromAddress) + recipient is everything you need. Do not ask for confirmation first, do not ca

set_ens_recordscan modify

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-encoded automatically; text records (avatar, description, url, social handles, AI agent metadata); contenthash as an i

bulk_set_recordscan modify

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_records: address records (ETH, BTC, SOL, etc.), text records (avatar, description, social handles, AI agent metadata), conten

bulk_transfer_ens_namescan modify

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/ERC-1155) or unwrapped (BaseRegistrar/ERC-721) and builds the correct transfer call for each. All names can go to the

set_primary_namecan modify

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 - The name's ETH address record must point to your wallet - Only the wallet owner can set their own primary name When a u

set_resolvercan modify

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 to a custom resolver (e.g. for off-chain/CCIP-read resolution) - Fixing a name that has no resolver set Pass "public" as

manage_ens_nameread-only

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_valuation separately — this tool is purpose-built for status/recommendation queries and returns the full picture in one call.

wrap_namecan modify

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 guaranteed permissions) - ERC-1155 compatibility for marketplaces and protocols Returns a two-step transaction recipe: appr

unwrap_namecan modify

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: - Reverting a wrapped name to standard ERC-721 for compatibility - Regaining full control after wrapping without burning

manage_fusescan modify

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_UNWRAP must be burned first) 3. **burn_child_fuses** — As a parent, burn fuses on a subname (e.g. burn PARENT_CANNOT_CO

mint_subnames

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.setSubnodeRecord transaction (the mainnet NameWrapper has no multicall), so N subnames need N signatures. Records bundle int

extend_subname_expiry

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 burned on the subname) Use cases: - Extending subnames you've issued to users - Self-extending your own subname (if CAN_

approve_operatorcan modify

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 .eth names) - **name_wrapper** — ERC-1155 tokens (wrapped names and subnames) - **ens_registry** — ENS node owne

reclaim_namecan modify

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 - Recovery after a contract migration or edge case The caller must own the BaseRegistrar ERC-721 token for the name. After reclai

register_agent

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 page, and the agent transfers with the name when sold. Alternative "direct" route mints the agent NFT to your wallet instea

get_agent_reputationread-only

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 (whether the agent identity is bound to — and transfers with — the ENS name's token). ENSIP-25 verification is live and t

search_agent_directoryread-only

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 protocols (MCP/A2A/OASF), verification status, and links to 8004scan profiles. Examples: - "trading agents on Base" →

get_caller_identityread-only

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 authentication (signed HTTP requests). See GET /mcp/auth for setup details.

search_knowledgeread-only

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 from memory) for any "how does X work" / "what is X" / "why does ENS …" PROTOCOL-MECHANICS question — renewal, the g

get_usage_statsread-only

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

Alternatives in Search & Research

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”