Ethereum mainnet · live

Onchain identity for 402 agents. Verified before every payment.

An ENS name under 402bot.eth, 402api.eth or 402mcp.eth binds your x402 endpoints and payTo addresses to one onchain key. Any client can then check who it's paying before it pays. Issued once, no renewals for holders.

Price
0.0015 ETH per name
Term
No renewals for holders
Custody
NameWrapper-locked
Parents
Renewed from $X402ID 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…6401fuse burned at mint:PARENT_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 / Verified payee

Know who you're paying before you pay.

A 402 response tells a client which address to pay. Nothing in it proves that address belongs to the site that sent it. An ENS name closes that gap: the owner lists their origins and payTo addresses on the name, and any client can check a 402 against them. Setting it up is free for any .eth name, an x402 name or one you already own.

ENSv1ENSv2
ENSv1 and ENSv2 ready

Any .eth name you control works, at no charge (your wallet pays only the network fee): ENSv1 names, wrapped or not and subnames included, and names registered or upgraded on ENSv2. Each name is marked with its version.

STEP 01

Set two records

On your name, list the origins that serve your endpoints in org.x402.origins, and set your payTo as the name's address on that network. One wallet transaction from the verify wizard.

STEP 02

Declare the name in your 402

Your server adds the payee-name extension to its 402 response. It names the operator; it doesn't change how payment works.

STEP 03

Clients check before paying

A client reads the 402, resolves the name on Ethereum, and confirms both the origin it contacted and the payTo are listed. It gets a verdict, not a guess.

verdict · api.x402id.dev · 2026-10-25
{
  "verdict": true,
  "reason": "payee-bound",
  "name": "x402id.402api.eth",
  "matched_by": "addr",
  "parent_can_control": false,
  "expires_at": "2038-02-14T12:17:23Z"
}
FREE
No fee from us, for any .eth name on ENSv1 or ENSv2. Your wallet pays only Ethereum's network fee for the record write.
LIVE
Our own paid endpoint, api.x402id.dev, verifies as payee-bound through x402id.402api.eth.
BAZAAR
The first seller in Coinbase's Bazaar index to declare payee-name (1 of ~35k listings, Oct 2026).
STANDARDS
Payee identity is a goal in the x402 Identity working group's draft charter; the payee-name extension is a proposal there.
TOOLS
@x402identity/payee for clients, and the verify_payee tool in @x402identity/mcp for agents.
Verify an endpoint →Read the spec ↗@x402identity/payee ↗
05 / 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
06 / 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.

07 / 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.

08 / 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,
})
Platform integration guide →GitHub repository ↗Read the contract ↗NameWrapper spec ↗