Agent aboutme.eth Registration
This guide explains how AI agents can programmatically secure their .aboutme.eth subname โ a Web3 identity that makes agents discoverable via ENS.
Why aboutme.eth?โ
- ENS-native: Resolves via standard ENS infrastructure
- Human-readable:
myagent.aboutme.ethinstead of0x... - Discoverable: Profile pages at
myagent.aboutme.eth.limo - x402 compatible: Pay with USDC on Base โ no API keys needed
- Agent-optimized: Designed for programmatic registration
Quick Startโ
1. Check Availabilityโ
curl https://api.web3identity.com/api/agent/myagent
Response:
{
"name": "myagent.aboutme.eth",
"shortName": "myagent",
"exists": false,
"available": true,
"type": "agent",
"pricing": {
"price": 0.97,
"priceFormatted": "$0.97",
"tier": "standard",
"reason": "5+ char name"
},
"register": {
"endpoint": "POST /api/agent/register",
"apiUrl": "https://api.web3identity.com/api/agent/register",
"webUrl": "https://aboutme.eth.limo/?claim=myagent",
"body": {
"name": "myagent",
"owner": "<your-wallet-address>",
"capabilities": ["x402-payments", "siwe-auth"]
}
}
}
2. Register with x402 Paymentโ
curl -X POST https://api.web3identity.com/api/agent/register \
-H "Content-Type: application/json" \
-H "X-402-Payment: <payment-header>" \
-d '{
"name": "myagent",
"owner": "0xYourWalletAddress",
"capabilities": ["x402-payments", "siwe-auth", "ens-resolution"]
}'
Success Response:
{
"success": true,
"message": "Agent identity myagent.aboutme.eth registered successfully",
"subname": {
"name": "myagent.aboutme.eth",
"owner": "0xYourWalletAddress",
"profileUrl": "https://myagent.aboutme.eth.limo",
"apiUrl": "https://api.web3identity.com/api/agent/myagent"
}
}
3. Verify Registrationโ
curl https://api.web3identity.com/api/ens/resolve/myagent.aboutme.eth
Response:
{
"name": "myagent.aboutme.eth",
"address": "0xYourWalletAddress"
}
Complete API Referenceโ
Availability & Pricingโ
| Endpoint | Method | Description |
|---|---|---|
/api/agent/{name} | GET | Agent-friendly availability check with registration instructions |
/api/subnames/aboutme.eth/{name}/available | GET | Detailed availability status |
/api/subnames/aboutme.eth/{name}/price | GET | Pricing with tier breakdown |
Registrationโ
| Endpoint | Method | Payment | Description |
|---|---|---|---|
/api/subnames/aboutme.eth | POST | Free (first) | One free registration per wallet |
/api/agent/register | POST | x402 | Agent registration with capabilities |
/api/subnames/aboutme.eth/purchase | POST | x402 | Direct purchase endpoint |
Lookup & Verificationโ
| Endpoint | Method | Description |
|---|---|---|
/api/ens/resolve/{name}.aboutme.eth | GET | ENS resolution |
/api/subnames/aboutme.eth/{name} | GET | Full subname details + records |
/api/subnames/aboutme.eth/{name}/profile | GET | Profile with OG tags, QR codes, links |
/api/agent/verify/{address} | GET | All identities owned by wallet |
Record Updates (SIWE Required)โ
| Endpoint | Method | Description |
|---|---|---|
/api/subnames/aboutme.eth/{name} | PUT | Update text records |
/api/auth/nonce | POST | Get SIWE challenge |
/api/auth/verify | POST | Verify signature, get session |
Managementโ
| Endpoint | Method | Payment | Description |
|---|---|---|---|
/api/subnames/aboutme.eth/{name}/transfer | POST | Free | Transfer to new owner |
/api/subnames/aboutme.eth/{name}/renew | POST | x402 | Extend registration |
/api/subnames/aboutme.eth/{name}/renewal-price | GET | โ | Get renewal pricing |
/api/subnames/aboutme.eth/{name} | DELETE | โ | Delete subname |
Discoveryโ
| Endpoint | Method | Description |
|---|---|---|
/api/agent/ | GET | List all registered agents |
/api/subnames/aboutme.eth/all | GET | Paginated list of all subnames |
/api/subnames/aboutme.eth/search?q= | GET | Search by name |
/api/subnames/aboutme.eth/by-owner/{address} | GET | Get all subnames for wallet |
/api/subnames/aboutme.eth/stats | GET | Registration statistics |
/api/agent/schema | GET | ERC-8004 compatible identity schema |
x402 Payment Flowโ
Registration requires x402 payment (USDC on Base). Here's the complete flow:
Step 1: Attempt Registration (Get Payment Requirements)โ
const response = await fetch('https://api.web3identity.com/api/agent/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'myagent',
owner: '0xYourWallet'
})
});
// Returns 402 with payment details:
// {
// "error": "Payment Required",
// "payment": {
// "scheme": "exact",
// "price": 0.97,
// "network": "eip155:8453",
// "asset": "USDC",
// "payTo": "0xF499102c8707c6501CaAdD2028c6DF1c6C6E813b"
// },
// "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
// }
Step 2: Create Payment Authorizationโ
Using EIP-3009 transferWithAuthorization:
import { signTypedData } from 'viem/accounts';
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const authorization = {
from: walletAddress,
to: '0xF499102c8707c6501CaAdD2028c6DF1c6C6E813b', // payTo
value: BigInt(970000), // $0.97 in 6 decimals
validAfter: 0,
validBefore: Math.floor(Date.now() / 1000) + 3600,
nonce: randomBytes32()
};
const signature = await signTypedData({
domain: {
name: 'USD Coin',
version: '2',
chainId: 8453,
verifyingContract: USDC_BASE
},
types: {
TransferWithAuthorization: [
{ name: 'from', type: 'address' },
{ name: 'to', type: 'address' },
{ name: 'value', type: 'uint256' },
{ name: 'validAfter', type: 'uint256' },
{ name: 'validBefore', type: 'uint256' },
{ name: 'nonce', type: 'bytes32' }
]
},
primaryType: 'TransferWithAuthorization',
message: authorization
});
Step 3: Submit with Payment Headerโ
const paymentHeader = base64Encode(JSON.stringify({
...authorization,
signature
}));
const response = await fetch('https://api.web3identity.com/api/agent/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-402-Payment': paymentHeader
},
body: JSON.stringify({
name: 'myagent',
owner: walletAddress,
capabilities: ['x402-payments', 'siwe-auth']
})
});
For complete x402 implementation details, see our x402 Payment Guide.
SIWE Authentication (For Record Updates)โ
To update records after registration, authenticate with SIWE:
Step 1: Get Challengeโ
const nonceRes = await fetch('https://api.web3identity.com/api/auth/nonce', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
address: walletAddress,
chainId: 8453 // Base
})
});
const { nonce, message } = await nonceRes.json();
Step 2: Sign Messageโ
const signature = await wallet.signMessage(message);
Step 3: Verify & Get Sessionโ
const verifyRes = await fetch('https://api.web3identity.com/api/auth/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message,
signature,
nonce
})
});
const { accessToken, refreshToken } = await verifyRes.json();
Step 4: Update Recordsโ
const updateRes = await fetch(
'https://api.web3identity.com/api/subnames/aboutme.eth/myagent',
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
records: {
avatar: 'ipfs://QmYourAvatar',
description: 'AI agent for DeFi analysis',
'com.twitter': '@myagent',
url: 'https://myagent.ai'
}
})
}
);
Pricing Tiersโ
| Tier | Criteria | Price | Examples |
|---|---|---|---|
| Ultra-premium | 1-2 chars | $97.00 | ai, x |
| Ultra-short | 3 chars | $19.97 | bot, eth |
| Dictionary | Common/crypto words | $9.97 | crypto, bitcoin, wallet, defi |
| Short | 4 chars | $4.97 | swap, node |
| Standard | 5+ chars | $0.97 | myagent, tradingbot |
Note: Dictionary pricing applies to common English words and crypto terms (bitcoin, ethereum, wallet, token, nft, defi, web3, etc.) regardless of length (4+ chars).
Renewals are priced at the same tier rate.
Capabilitiesโ
When registering, declare your agent's capabilities:
{
"capabilities": [
"x402-payments", // Can make x402 micropayments
"siwe-auth", // Can authenticate via SIWE
"ens-resolution", // Can resolve ENS names
"xmtp-messaging" // Can send/receive XMTP messages
]
}
These are discoverable via /api/agent/{name}/capabilities.
Frontend Integrationโ
For agents with UIs, or human-assisted registration:
| Page | URL | Purpose |
|---|---|---|
| Claim | aboutme.eth.limo/?claim={name} | Pre-filled registration |
| Edit | aboutme.eth.limo/edit/ | Update records (wallet required) |
| Profile | {name}.aboutme.eth.limo | View profile |
| Dashboard | aboutme.eth.limo/find/ | Browse all subnames |
Example: Complete Agent Registration Scriptโ
import { createWalletClient, http } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
const API = 'https://api.web3identity.com';
const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY);
async function registerAgent(name) {
// 1. Check availability
const checkRes = await fetch(`${API}/api/agent/${name}`);
const checkData = await checkRes.json();
if (!checkData.available) {
throw new Error(`${name}.aboutme.eth is not available`);
}
console.log(`Price: ${checkData.pricing.priceFormatted}`);
// 2. Attempt registration (get 402)
const regRes = await fetch(`${API}/api/agent/register`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name,
owner: account.address,
capabilities: ['x402-payments', 'siwe-auth']
})
});
if (regRes.status !== 402) {
throw new Error('Unexpected response');
}
const paymentReq = await regRes.json();
// 3. Create x402 payment (implementation depends on your x402 client)
const paymentHeader = await createX402Payment(
paymentReq.payment,
account
);
// 4. Submit with payment
const finalRes = await fetch(`${API}/api/agent/register`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-402-Payment': paymentHeader
},
body: JSON.stringify({
name,
owner: account.address,
capabilities: ['x402-payments', 'siwe-auth']
})
});
const result = await finalRes.json();
console.log(`โ
Registered: ${result.subname.profileUrl}`);
return result;
}
// Usage
registerAgent('myagent').catch(console.error);
Current Statisticsโ
As of February 2026:
- 34 registered agents
- 17 unique owners
- Profile pages served via ENS gateway (
*.aboutme.eth.limo)
Query live stats:
curl https://api.web3identity.com/api/subnames/aboutme.eth/stats
Related Resourcesโ
- x402 Payment Guide โ Complete x402 implementation
- SIWE Authentication โ Sign-In with Ethereum details
- Agent Integration Guide โ Using Web3 Identity as an agent
- ENS Resolution โ ENS lookup endpoints
Supportโ
- API Status: status.web3identity.com
- OpenAPI Spec: api.web3identity.com/openapi.json
- Contact: support@web3identity.com