Works with your agent stack
First-class integrations for ElizaOS and Coinbase AgentKit. Tool adapters for OpenAI SDK and Anthropic SDK. Any other framework can use the REST API or MCP server directly.
Coinbase AgentKit
@agentdomain/agentkit-pluginimport { AgentDomainActionProvider }
from '@agentdomain/agentkit-plugin';
const agentkit = await AgentKit.from({
walletProvider: cdpWalletProvider,
actionProviders: [
new AgentDomainActionProvider(),
],
});
// Agent calls:
// → register_agent_identity
// → quote_agent_registration
// → search_agentsNative action provider. Agents get register, quote, and search as first-class actions.
ElizaOS
@agentdomain/eliza-plugin// character.ts
import { agentDomainPlugin } from '@agentdomain/eliza-plugin';
const character: Character = {
name: 'HelpfulAgent',
plugins: [agentDomainPlugin],
};
// Agent says:
// "Register me as helpful-bot.ai with email"
// → REGISTER_IDENTITY action triggers
// → domain + basename + email provisionedDrop-in plugin. Your Eliza agent gets REGISTER_IDENTITY, SEARCH_AGENTS actions automatically.
OpenAI SDK
@agentdomain/sdkimport {
AgentDomain,
createOpenAITools,
runAgentDomainTool,
formatAgentDomainToolResult,
} from '@agentdomain/sdk';
const ad = new AgentDomain({
walletClient, publicClient,
});
const tools = createOpenAITools();
const response = await openai.chat.completions
.create({
model: 'gpt-4',
messages: [...],
tools,
});
const toolCall = response.choices[0]
?.message?.tool_calls?.[0];
const result = await runAgentDomainTool(
ad,
toolCall.function.name,
JSON.parse(toolCall.function.arguments),
);
// → domain registered, NFT mintedTool definitions for Chat Completions API. Models call check_domain_availability, quote_registration, register_agent_identity, and search_agents as native tools.
Anthropic SDK
@agentdomain/sdkimport {
AgentDomain,
createAnthropicTools,
runAgentDomainTool,
formatAgentDomainToolResult,
} from '@agentdomain/sdk';
const ad = new AgentDomain({
walletClient, publicClient,
});
const tools = createAnthropicTools();
const msg = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [...],
tools,
});
const toolUse = msg.content.find(
(b) => b.type === 'tool_use',
);
const result = await runAgentDomainTool(
ad, toolUse.name, toolUse.input,
);
// → domain registered, NFT mintedTool definitions for Messages API. Models call the same four agent-domain tools with Anthropic-native input_schema format.
Getting Started
From UI, SDK, or any agent wallet — complete flow in one call.
TypeScript SDK
const quote = await agentDomain.quote({
preferredName: 'atlas',
tld: 'com',
years: 3,
registerBasename: true,
registerEns: true,
});
const identity = await agentDomain.register({
preferredName: 'atlas',
tld: 'com',
years: 3,
autoRenew: true,
emailEnabled: true,
});The @agentdomain/sdk handles the 402 challenge, signs EIP-3009 from your wallet, and completes registration in one async call.
API Reference
Every endpoint available to manage your agent’s identity. State-modifying endpoints require SIWE authentication (web dashboard) or API Keys (agents).
Registration & Pricing
/api/v1/domains/availability?name=atlas&tld=comChecks domain, Basename, and ENS availability independently.
/api/v1/agents/quote?preferredName=atlas&tld=com&years=3Returns live pricing for the identity bundle, including multi-year discounts.
/api/v1/agents/registerRequires x402 payment challenge. Provisions the complete identity bundle.
Agent Management
/api/v1/agents/:idReturns identity state, expiration dates, and metadata.
DNS Management
/api/v1/agents/:id/dnsReturns all DNS records for the agent's domain.
/api/v1/agents/:id/dnsAdd a new DNS record. Syncs instantly to Cloudflare.
/api/v1/agents/:id/dns/:recordIdModify an existing DNS record.
/api/v1/agents/:id/dns/:recordIdRemove a DNS record from the database and Cloudflare.
Email Infrastructure
/api/v1/agents/:id/emailRetrieve all inbound and outbound messages for the agent.
/api/v1/agents/:id/email/sendSend an outbound email from agent@yourdomain.com.
/api/v1/agents/:id/email/:messageIdMark an email message as read or unread.
/api/v1/agents/:id/email/blocklistRetrieve (GET) or add (POST) domains/emails to the agent's blocklist.
Renewal Vault
/api/v1/agents/:id/renewal/statusReturns vault balance, auto-renew status, expiry date, and estimated years.
/api/v1/agents/:id/renewal/fundDeposit USDC into the vault. Anyone can deposit. Auto-renew enables on first deposit.
/api/v1/agents/:id/renewal/withdrawWithdraw USDC from the vault. Only the ownerAddress can withdraw.
Ownership & Vault
How ownership works, how to fund the vault, and how autonomous renewal keeps your identity alive forever.
Payer vs Owner
Specify a different ownerAddress from the paying wallet. The Payer pays USDC, but the Owner receives the NFT and full control.
Vault & Auto-Renew
RenewalVault holds USDC per domain. Keeper Bot checks every 5 minutes — when expiry nears and vault has funds, it auto-renews.
Agent Autonomous Flow (SDK)
Full lifecycle — register, fund vault, check status, withdraw.
import { AgentDomain } from '@agentdomain/sdk';
const ad = new AgentDomain({ walletClient, publicClient });
// Register
const identity = await ad.register({
preferredName: 'atlas', tld: 'com',
years: 1, autoRenew: true,
registerBasename: true, registerEns: true,
emailEnabled: true,
});
// → atlas.com · atlas.base.eth · atlas.eth · agent@atlas.com
// Fund vault
await ad.fundRenewalVault(identity.agentId, '120');
// Check status
const status = await ad.getRenewalStatus(identity.agentId);
console.log(status.estimatedYearsCovered); // ~10
// Withdraw unused (owner only)
await ad.withdrawFromVault(identity.agentId, '24');