Ethereum mainnet · live

Permanent onchain identity for x402 agents.

ENS subnames under 402bot.eth, 402api.eth, and 402mcp.eth — issued once, no renewals for holders, resolvable on every chain.

0.0015 ETH  per nameNo renewals for holdersNameWrapper-lockedParents renewed from $X402ID trading fees
01 / Namespaces

One tree. Three surfaces institutions integrate.

402bot, 402api, and 402mcp map to the three places autonomous software shows up in production today: agents that act on a user's behalf, services that expose paid endpoints, and Model Context Protocol servers that broker tool use.

Surface 01 — Agents
402bot.eth

Autonomous agents that hold wallets, negotiate, transact, and represent a principal across chains.

treasury.402bot.eth
scheduler.402bot.eth
trader-7.402bot.eth
Surface 02 — Services
402api.eth

Paid HTTP services that return data, run inference, or settle the HTTP 402 response in real time.

prices.402api.eth
inference.402api.eth
geocode.402api.eth
Surface 03 — MCP
402mcp.eth

Model Context Protocol servers — the tool surface assistants attach to. Resolvable by name, not by URL.

github.402mcp.eth
slack.402mcp.eth
analytics.402mcp.eth
02 / Institutions

Designed for both sides of the agent market.

Payment processors, infrastructure providers, and standards bodies issue and verify agent identities. Developers and end users mint and own them. The same primitive serves both audiences without intermediation.

All third-party names, logos, and trademarks shown above are the property of their respective owners and are used here solely to illustrate integration surfaces relevant to x402. Their inclusion does not imply endorsement, sponsorship, partnership, affiliation, or any commercial relationship with x402 Identity Hub.

P.01

Verifiable identity

Every agent resolves to a single onchain record. Replace API-key allowlists and certificate pinning with namespace-level trust that any party can verify without a directory call.

P.02

No vendor lock-in

ENS is a public good. No registrar, foundation, or platform can revoke a name. Identities port across wallets, chains, and providers without re-issuance.

P.03

Audit-ready trail

Every issuance is a transaction. Every resolution is verifiable. Compliance can grep the chain — no proprietary log shipping, no opaque registrar API.

03 / Architecture

One name, every chain, every wallet.

x402 sits between the agent and the broader ENS infrastructure. The NameWrapper holds the issued subname; resolvers expose it across L1, every major L2, and via CCIP-Read to anywhere ENS reaches.

AGENTalice.402bot.ethholds wallet · signsregister()x402 REGISTRARX402SubnameRegistrar0xeb9e…9633fee · validation · fusessetSubnodeRecord()ENS NAMEWRAPPER0xD441…6401fuses: CANNOT_UNWRAPPARENT_CANNOT_CONTROLresolve()RESOLVERPublicResolveraddr · text · contenthashCCIP-Read enabledEthereum L1BaseOptimismArbitrumLinea · CCIP-*Single transaction · Single source of truth · No off-chain registrar
RegistrarReceives the 0.0015 ETH fee, validates the label, and calls the NameWrapper.
NameWrapperIssues the wrapped subname with permanence fuses burned at mint time.
ResolverExposes address, text, and contenthash records to any consumer of ENS.
CCIP-ReadResolves the name from any chain or off-chain backend implementing EIP-3668.
04 / Live metrics

Verifiable, in real time.

Everything you can grep on Etherscan, surfaced as live state. No analytics layer, no proprietary dashboard — just the chain.

Names minted—all-time · across all parents
Parent expiry—earliest of 3 parents · renewed from $X402ID trading fees
Registrar0xeb9e9ea3
85fe28b51a3f
9a7d93fb893e
0a1f9633
View on Etherscan ↗
Last mintawaiting first mintlive · listening for SubnameMinted
05 / Token

$X402ID — the token for the Identity Hub.

Launched on Base via Bankr. Registering a name earns 25% of the mint fee back in $X402ID, and trading fees flow to the x402 treasury to keep the parent names renewed.

$X402ID · ERC-20 · Base0xb9490fc272642A7De0539FB3dC52A2769936FBa3
$X402ID token icon
Supply100,000,000,000 · fixed, non-mintable
Liquidity85% in a Uniswap v4 pool paired with WETH
Treasury15% vesting to the x402 Safe (2-of-3) over 1 year, 30-day cliff — funds user rewards
Trading fees0.665% of volume to the Safe in WETH — parent-name renewals first, then development and buybacks
Mint cashback25% of the mint fee paid back in $X402ID for every name registered since 2026-09-26. Claimable on Base in monthly rounds, first round 2026-10-26
IntegratorsMints through partner platforms (the forwarder) count toward the buyer's cashback

$X402ID is a utility token for the x402 Identity Hub. It is not an investment, carries no claim on revenue, and its price can go to zero. Cashback terms may change; changes are announced before they take effect.

Base
You receive (est.)
0.0X402ID

Quotes via 0x · pool fee 1.75% applies on every trade. Swaps settle on Base; minting names stays on Ethereum mainnet.

06 / Permanence

An identity you can build a 10-year roadmap on.

The NameWrapper locks each subname away from the parent at mint, and holders never renew. The one remaining dependency — the parent names themselves — is renewed from $X402ID trading fees, paid to the x402 treasury Safe.

NameWrapper fuse, burned at mint

Every subname is issued with PARENT_CANNOT_CONTROL already burned. A burned fuse cannot be cleared — by us, by the parent owner, or by the registrar contract. The holder controls the name's records, resolver, and transfers.

PARENT_CANNOT_CONTROL
The parent owner — including us — cannot reclaim, replace, or burn the subname.
HOLDER CONTROL
Resolver, records, and transfers are set by the holder, not the parent.
EXPIRY
Follows the parent. When a parent is renewed, subname expiries are extended to match — no action or fee from the holder.

Trading fees from $X402ID flow to the x402 treasury Safe in WETH. Parent renewals are the first call on that treasury, ahead of development and buybacks, and every renewal is a public transaction on Ethereum.

07 / Integrate

One contract, two calls, no SDK required.

The registrar exposes a register/batchRegister pair and an availability check. Wagmi, viem, ethers, cast — anything that speaks the ABI works.

X402SubnameRegistrar · Ethereum mainnet0xeb9e9ea385fe28b51a3f9a7d93fb893e0a1f9633
check availability · cast
# Is 'alice' available under 402bot.eth?
cast call \\
  0xeb9e9ea385fe28b51a3f9a7d93fb893e0a1f9633 \\
  "isAvailable(bytes32,string)" \\
  $(cast namehash 402bot.eth) \\
  "alice"
register · wagmi
import { useReadContract, useWriteContract } from 'wagmi'
import { namehash } from 'viem'

const { writeContract } = useWriteContract()
// The fee is set on-chain; read it rather than hardcoding it
const { data: fee } = useReadContract({ address: '0xeb9e…9633', abi: registrarAbi, functionName: 'mintFee' })

writeContract({
  address: '0xeb9e…9633',
  abi:     registrarAbi,
  functionName: 'register',
  args: [namehash('402bot.eth'), 'alice'],
  value: fee,
})
GitHub repository ↗Read the contract ↗NameWrapper spec ↗