Skip to main content
Glama

Name Whisper — ENS Intelligence Layer

set_ens_records

DestructiveIdempotent

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 ipfs:///ipns:// URI or bare CID (auto-encoded) or a pre-encoded 0x value; ENSIP-25 agent-registration records; and ENSIP-26 agent context and endpoint discovery. Always pass addresses and CIDs EXACTLY as the user gave them — never reconstruct or abbreviate them.

Multiple records are batched into a single multicall transaction to save gas.

Common text record keys: avatar, description, url, email, com.twitter, com.github, com.discord, ai.agent, ai.purpose, ai.capabilities, ai.category.

ENSIP-25 support: Pass agentRegistration with registryAddress and agentId to automatically set the standardized agent-registration text record. This creates a verifiable on-chain binding between your ENS name and your agent identity in an ERC-8004 registry.

ENSIP-26 support: Pass agentContext to set the agent-context text record (free-form agent description). Pass agentEndpoints with protocol URLs (mcp, a2a, oasf, web) to set agent-endpoint[protocol] discovery records.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesENS name to set records for (e.g. "myagent.eth")
recordsYesRecords to set on the name
walletAddressYesWallet address that owns the name (must sign the transaction)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / records / properties / addresses / description
      Previous value: -"Address records by coin type. ETH takes a standard 0x address (copy it EXACTLY from the user or a tool result). Non-ETH coins (BTC, SOL, …) accept ONLY pre-encoded 0x hex bytes — raw wallet strings like \"bc1…\" or base58 are NOT supported yet; if the user gives one, do not call this tool with it — tell them non-ETH address records aren't supported yet."New value: +"Address records by coin type. ETH takes a standard 0x address (copy it EXACTLY from the user or a tool result). Non-ETH coins (BTC, SOL, LTC, DOGE, …) take the raw wallet-format address exactly as the user gives it (e.g. \"bc1…\" bech32, base58 SOL) — it is encoded to ENSIP-9 bytes automatically. Pre-encoded 0x hex bytes are also accepted and passed through."
    • changedInput schema / properties / records / properties / contentHash / description
      Previous value: -"Content hash for a decentralized website — must be an ALREADY-ENCODED 0x hex contenthash (0xe301…). Raw \"ipfs://…\" URIs and bare CIDs (Qm…, bafy…) are NOT auto-encoded yet; if the user gives one, tell them to paste the encoded 0x value instead of calling this tool with the raw CID."New value: +"Content hash for a decentralized website. Accepts an ipfs:// or ipns:// URI, a bare IPFS CID (Qm…, bafy…), or an already-encoded 0x hex contenthash (0xe301…) — raw CIDs/URIs are encoded to the multicodec form automatically. Copy the CID exactly as the user gives it."
  2. Changed2 schema fields changed
    • changedInput schema / properties / records / properties / addresses / description
      Previous value: -"Address records by coin type (e.g. {\"ETH\": \"0x...\", \"BTC\": \"bc1...\"})"New value: +"Address records by coin type. ETH takes a standard 0x address (copy it EXACTLY from the user or a tool result). Non-ETH coins (BTC, SOL, …) accept ONLY pre-encoded 0x hex bytes — raw wallet strings like \"bc1…\" or base58 are NOT supported yet; if the user gives one, do not call this tool with it — tell them non-ETH address records aren't supported yet."
    • changedInput schema / properties / records / properties / contentHash / description
      Previous value: -"Content hash for decentralized website (IPFS CID or IPNS key)"New value: +"Content hash for a decentralized website — must be an ALREADY-ENCODED 0x hex contenthash (0xe301…). Raw \"ipfs://…\" URIs and bare CIDs (Qm…, bafy…) are NOT auto-encoded yet; if the user gives one, tell them to paste the encoded 0x value instead of calling this tool with the raw CID."
  3. Changed2 schema fields changed
    • addedInput schema / properties / records / properties / agentContext
      Added value: +{
      +  "description": "ENSIP-26 agent-context text record — free-form text describing the agent (markdown, JSON, YAML, etc.). The entry point for agent discovery.",
      +  "type": "string"
      +}
    • addedInput schema / properties / records / properties / agentEndpoints
      Added value: +{
      +  "description": "ENSIP-26 agent endpoint URLs by protocol. Sets agent-endpoint[<protocol>] text records.",
      +  "properties": {
      +    "a2a": {
      +      "description": "Agent-to-Agent Protocol endpoint URL",
      +      "type": "string"
      +    },
      +    "mcp": {
      +      "description": "Model Context Protocol endpoint URL",
      +      "type": "string"
      +    },
      +    "oasf": {
      +      "description": "OpenAPI Service Format endpoint URL",
      +      "type": "string"
      +    },
      +    "web": {
      +      "description": "Web interface URL",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate idempotent and destructive behavior. The description adds that it 'Returns encoded transaction calldata ready to sign and broadcast' and that multiple records are batched into a multicall. This provides context beyond annotations without contradiction.

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

Conciseness4/5

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

The description is long but well-organized into sections for each record type, with the core purpose front-loaded. Every sentence adds information, though it could be slightly more concise without losing clarity.

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

Completeness5/5

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

Given the tool's complexity (3 parameters, nested objects, no output schema), the description covers input formats, auto-encoding, return value (calldata), and common record keys. It addresses all necessary usage context.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant value: explains auto-encoding for non-ETH addresses and contentHash CIDs/URIs, details on ENSIP-25/26 structures, and lists common text record keys. This clarifies usage beyond 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?

The description clearly states 'Set ENS resolver records for a name you own.' and lists supported record types (address, text, contenthash, ENSIP-25, ENSIP-26). It distinguishes itself by noting it returns calldata, not executing directly. The purpose is specific and unambiguous.

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?

The description implies the user must own the name ('for a name you own') and provides explicit input formatting instructions ('Always pass addresses and CIDs EXACTLY as the user gave them'). However, it does not explicitly contrast with sibling 'bulk_set_records' or state when not to use this tool.

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.