Skip to main content
Glama

Name Whisper — ENS Intelligence Layer

purchase_name

Destructive

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, Grails) for the best price. If there are MULTIPLE active listings, returns CHOOSE_LISTING status with all options — present these to the user and ask which one they want. When the user chooses, call this tool again with the chosen orderHash to get the buy transaction.

The tool auto-detects whether the name is available or listed. You can override with the 'action' parameter.

Input Schema

NameRequiredDescriptionDefault
nameYesENS name to purchase (e.g. "coffee.eth")
actionNoAction: buy_listing (purchase listed name), register (register available name), auto (detect automatically)auto
durationNoRegistration duration in days. ENS protocol minimum is 28 days; maximum is 3650 (10 years); default is 365 (1 year). Sub-year is allowed.
orderHashNoSpecific Seaport order hash to fulfill. Use this when the user has chosen a specific listing from multiple options.
fromAddressNoENS v2 only: the wallet that signs and pays in USDC/DAI, when it is not walletAddress (registering to another wallet). Defaults to walletAddress.
maxPriceEthNoMaximum 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
maxPriceUsdNoENS v2 registrations only: the most to pay in USD (v2 is priced in USDC/DAI, so maxPriceEth does not apply to it).
paymentTokenNoENS 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; Circle USDC is not accepted there), then DAI, then other accepted tokens. Do not choose based on wallet balances.
durationYearsNoDEPRECATED — use duration (days) instead. Number of years (converted to days internally).
walletAddressYesBuyer wallet address (will own the name)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / fromAddress
      Added value: +{
      +  "description": "ENS v2 only: the wallet that signs and pays in USDC/DAI, when it is not walletAddress (registering to another wallet). Defaults to walletAddress.",
      +  "type": "string"
      +}
    • addedInput schema / properties / maxPriceUsd
      Added value: +{
      +  "description": "ENS v2 registrations only: the most to pay in USD (v2 is priced in USDC/DAI, so maxPriceEth does not apply to it).",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / paymentToken
      Added value: +{
      +  "description": "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; Circle USDC is not accepted there), then DAI, then other accepted tokens. Do not choose based on wallet balances.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / maxPriceEth / description
      Previous value: -"Maximum price willing to pay in ETH (for listed names)"New value: +"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"
  3. Changed5 schema fields changed
    • addedInput schema / properties / duration
      Added value: +{
      +  "default": 365,
      +  "description": "Registration duration in days. ENS protocol minimum is 28 days; maximum is 3650 (10 years); default is 365 (1 year). Sub-year is allowed.",
      +  "maximum": 3650,
      +  "minimum": 28,
      +  "type": "integer"
      +}
    • removedInput schema / properties / durationYears / default
      Removed value: -1
    • changedInput schema / properties / durationYears / description
      Previous value: -"Registration duration in years (1-10, default: 1)"New value: +"DEPRECATED — use duration (days) instead. Number of years (converted to days internally)."
    • removedInput schema / properties / durationYears / maximum
      Removed value: -10
    • removedInput schema / properties / durationYears / minimum
      Removed value: -1
  4. Changed3 schema fields changed
    • changedInput schema / properties / durationYears / description
      Previous value: -"Registration duration in years (default: 1)"New value: +"Registration duration in years (1-10, default: 1)"
    • addedInput schema / properties / durationYears / maximum
      Added value: +10
    • addedInput schema / properties / durationYears / minimum
      Added value: +1
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the crucial trait that the tool does not execute transactions itself — it returns a recipe (contract address, ABI, steps, pre-generated secret) and the wallet signs and submits. It also surfaces the commit → 60s wait → register sequencing and the intermediate CHOOSE_LISTING status an agent must handle before proceeding, which is exactly the kind of state-machine detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then a short paragraph per branch keyed by uppercase labels (AVAILABLE / LISTED), closing with the auto-detect rule. No sentence is filler and the branching structure mirrors how the agent must reason about the call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, non-idempotent, destructive purchase tool with no output schema, the description covers both branches and the shape of the two possible responses. Minor gaps remain: it does not state approval/prerequisite requirements (approve_operator is a sibling) or failure behavior, though the detailed schema covers the individual parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining the override semantics of 'action' and, importantly, the two-phase use of 'orderHash' (returned in CHOOSE_LISTING, then passed back on the second call). The pricing and payment-token parameters are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Purchase an ENS name') and immediately splits the two execution paths: buying a listed name from a marketplace vs registering an available one on-chain. The reader can tell exactly what this does and how it differs from renew_ens_name or create_listing without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete procedural guidance for the multi-listing case (returns CHOOSE_LISTING, present options to the user, re-call with the chosen orderHash) and states that auto-detection can be overridden via 'action'. It does not, however, route the agent away from sibling tools such as batch_purchase or bulk_register when several names are involved, so the when-not is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.