Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Interactive ERC-8004 agent registration via chat. Guides users through a prefill form, shows draft, confirms, then registers on-chain using agent0-sdk.
Interactive ERC-8004 agent registration via chat. Guides users through a prefill form, shows draft, confirms, then registers on-chain using agent0-sdk.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Register AI agents on the ERC-8004 on-chain registry through a guided chat experience.
When the user triggers registration, auto-fill every field you can from: Agent identity files (IDENTITY.md, SOUL.md, USER.md) Environment (.env — wallet address derived from private key) Previous context (A2A endpoint, description, image, etc.) Sensible defaults (version: 1.0.0, license: MIT, chain: Base, storage: onchain) Do NOT ask questions one by one. Prefill first, ask later.
Before showing the draft, briefly explain the config so users understand what's pre-selected and what alternatives exist: ⚙️ Config defaults (you can change these later): Chain: Base (8453) — where your agent lives on-chain Others: Ethereum, Polygon, BNB, Arbitrum, Celo, Gnosis, Scroll Storage: Fully onchain — agent data stored directly on-chain Alternative: IPFS — data pinned to IPFS, hash stored on-chain Trust: Reputation — other agents/users rate your agent on-chain Others: Crypto-Economic (staking/slashing guarantees) TEE Attestation (hardware-level trust proof) x402: Off — no payment protocol On: agent can charge for services via x402 payment protocol Active: On — agent is discoverable and accepting requests Off: registered but hidden from discovery Wallet: Your agent's on-chain identity address Two ways to set it: Option A: Paste your wallet address → Just paste your 0x... address → Agent will be linked to this address on-chain Option B: Add private key to .env (for signing) → Set PRIVATE_KEY=0x... in your .env file → Wallet auto-detected + can sign transactions → Enables setWallet() via EIP-712 after registration 💡 Option A is easier. Option B is needed if you want the agent to sign transactions on your behalf. Show this once at the start, not repeated on every draft.
Send the entire draft + buttons as one message using the message tool. This keeps buttons directly below the draft. Important: Use message action=send with both message (the draft text) and buttons (inline buttons). Do NOT split into reply + separate button message. After sending, reply with NO_REPLY to avoid duplicate. Use ✅ (filled) and ⚠️ (missing/needs attention): 📋 Agent Registration Draft ── Basic Info ── ✅ Name: Mr. Tee ✅ Description: AI agent with a CRT monitor... ✅ Image: pbs.twimg.com/... ✅ Version: 1.0.0 ✅ Author: 0xdas ✅ License: MIT ── Endpoints ── ✅ A2A: a2a.teeclaw.xyz/a2a ⚠️ MCP: (none) ── Skills & Domains ── ✅ Skills (5): natural_language_processing/natural_language_processing, natural_language_processing/natural_language_generation/summarization, natural_language_processing/information_retrieval_synthesis/question_answering, analytical_skills/coding_skills/coding_skills, images_computer_vision/images_computer_vision ✅ Domains (5): technology/blockchain/blockchain, technology/blockchain/defi, technology/technology, technology/software_engineering/software_engineering, technology/software_engineering/devops ✅ Custom: agent_orchestration/agent_coordination, social_media/content_management ── Config ── ✅ Chain: Base (8453) ✅ Storage: Fully onchain ✅ Active: true ✅ Trust: reputation ✅ x402: false ✅ Wallet: 0x1348...e41 (auto .env) Tap to edit a section or register: Buttons (attached to same message): Row 1: [✏️ Basic Info] [✏️ Endpoints] Row 2: [✏️ Skills & Domains] [✏️ Config] Row 3: [✅ Register] [❌ Cancel]
Instant feedback: When any button is tapped, immediately acknowledge before doing anything else: ButtonInstant Feedback✏️ Basic Info"📝 Editing Basic Info..."✏️ Endpoints"🔗 Editing Endpoints..."✏️ Skills & Domains"🏷️ Editing Skills & Domains..."✏️ Config"⚙️ Editing Config..."✅ Register"⏳ Starting registration on Base..."❌ Cancel"❌ Registration cancelled."↩️ Back to Draft"📋 Back to draft..." Then show the edit form. Always include ↩️ Back to Draft button. Edit Basic Info Current values: • Name: Mr. Tee • Description: AI agent with a CRT... • Image: pbs.twimg.com/... • Version: 1.0.0 • Author: 0xdas • License: MIT Type field name and new value, e.g. "name: CoolBot" Or type "done" to go back. Buttons: [↩️ Back to Draft] Edit Endpoints Current: • A2A: https://a2a.teeclaw.xyz/a2a • MCP: (none) Paste a URL to set, or "clear mcp" / "clear a2a" to remove. Buttons: [↩️ Back to Draft] Edit Skills & Domains Toggleable inline buttons (multi-select). Each button shows a human-readable label but stores the full OASF taxonomy path as the value. Skills: (OASF taxonomy paths) [NLP ✅] → natural_language_processing/natural_language_processing [Summarization ✅] → natural_language_processing/natural_language_generation/summarization [Q&A ✅] → natural_language_processing/information_retrieval_synthesis/question_answering [Code Gen ✅] → analytical_skills/coding_skills/coding_skills [CV ✅] → images_computer_vision/images_computer_vision [Data Analysis] → analytical_skills/data_analysis/data_analysis [Web Search] → natural_language_processing/information_retrieval_synthesis/web_search [Image Gen] → images_computer_vision/image_generation/image_generation [Translation] → natural_language_processing/natural_language_generation/translation [Task Automation] → tool_interaction/workflow_automation [+ Custom] [↩️ Back to Draft] Domains: (OASF taxonomy paths) [Blockchain ✅] → technology/blockchain/blockchain [DeFi ✅] → technology/blockchain/defi [Technology ✅] → technology/technology [SE ✅] → technology/software_engineering/software_engineering [DevOps ✅] → technology/software_engineering/devops [Finance] → finance/finance [Healthcare] → healthcare/healthcare [Education] → education/education [Entertainment] → entertainment/entertainment [Science] → science/science [Creative Arts] → creative_arts/creative_arts [Dev Tools] → technology/software_engineering/development_tools [+ Custom] [↩️ Back to Draft] Display behavior: Buttons show short labels (e.g., "NLP", "Blockchain") for readability Values stored are full OASF paths (e.g., natural_language_processing/natural_language_processing) Tapping toggles ✅ on/off + Custom prompts user to type a custom OASF path or label Edit Config Trust models (multi-select): [Reputation ✅] [Crypto-Economic] [TEE Attestation] Other config: [Chain: Base ▼] [Storage: Onchain ▼] [x402: Off ▼] [↩️ Back to Draft] Trust ModelDescriptionReputationOn-chain feedback & scoring. Default for most agents.Crypto-EconomicStaking/slashing guarantees. For financial agents.TEE AttestationHardware-level trust proof. For high-security agents.
After any edit, re-send the updated full draft as a single message with buttons (same as Step 2). Repeat until user taps ✅ Register.
Only after explicit ✅ Register confirmation. Write the registration JSON to a temp file Run the script: source /path/to/.env node scripts/register.mjs --json /tmp/registration.json --chain 8453 --yes The script handles: register() → setA2A()/setMCP() → addSkill()/addDomain() → setWallet()
Send progress updates during registration: ⏳ Step 1/3: Minting agent NFT on Base... ✅ Agent minted! ID: 8453:42 ⏳ Step 2/3: Setting endpoints & metadata... ✅ Endpoints configured ⏳ Step 3/3: Linking wallet via EIP-712... ✅ Wallet linked!
✅ Agent Registered on Base! Agent ID: 8453:42 Wallet: 0x1348...e41 A2A: a2a.teeclaw.xyz/a2a TX: 0xabc...def View: https://8004.org/agent/8453:42
If Name or Description are empty after prefill, mark them ⚠️ and block registration. Show: "Please fill required fields first."
⚠️ No wallet detected. You need one to register: Option A: Paste your 0x... address Option B: Add PRIVATE_KEY to your .env file
Show error clearly and offer retry: ❌ Registration failed: insufficient funds for gas [🔄 Retry] [❌ Cancel]
Public RPCs (e.g. mainnet.base.org) don't support eth_signTypedData_v4. If setWallet fails: ⚠️ Wallet linking failed (public RPC limitation). You can link your wallet manually at https://8004.org This is non-blocking — the agent is registered, just wallet isn't linked on-chain yet.
The script checks if the wallet already owns agent(s) on the target chain before submitting. If detected: ⚠️ Warning: This wallet already owns 1 agent(s) on Base. Registering again will create a duplicate. Use update.mjs to modify an existing agent instead. In chat flow, warn the user and suggest updating instead of re-registering. The check is non-blocking if --yes is passed.
If the agent already has an agentId, offer to update instead of register.
The SDK only ships with Ethereum Mainnet registry addresses. For Base and other chains, the script passes registryOverrides with deterministic contract addresses: Identity Registry: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 Reputation Registry: 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
The SDK returns TransactionHandle objects. Use .waitMined() (not .wait()) to await confirmation.
FieldRequiredDefaultAuto-sourceAgent Name✅—IDENTITY.mdAgent Addressauto—.env private key or pastedDescription✅—IDENTITY.md / SOUL.mdImageNo—Profile image URLVersionNo1.0.0—AuthorNo—USER.mdLicenseNoMIT—
FieldRequiredDefaultAuto-sourceA2A EndpointNo—IDENTITY.mdMCP EndpointNo——
FieldRequiredDefaultSelected SkillsNo[]Selected DomainsNo[]Custom SkillsNo[]Custom DomainsNo[]
FieldRequiredDefaultTrust ModelsNo[] (suggest: reputation)x402 SupportNofalseStorageNohttp (fully onchain)ActiveNotrueChainNo8453 (Base)
ChainIDDefaultBase8453✅Ethereum1Polygon137BNB Chain56Arbitrum42161Celo42220Gnosis100Scroll534352 All chains use the same deterministic contract addresses.
{ "basicInfo": { "agentName": "", "agentAddress": "", "description": "", "image": "", "version": "1.0.0", "author": "", "license": "MIT" }, "endpoints": { "mcpEndpoint": "", "a2aEndpoint": "" }, "skillsDomains": { "selectedSkills": [], "selectedDomains": [], "customSkills": [], "customDomains": [] }, "advancedConfig": { "supportedTrusts": [], "x402support": false, "storageMethod": "http", "active": true }, "version": "1.0.0" }
VariableRequiredDescriptionPRIVATE_KEY / AGENT_PRIVATE_KEY / MAIN_WALLET_PRIVATE_KEYYesWallet private keyRPC_URLNoCustom RPC (auto-detected per chain)CHAIN_IDNoDefault chain (8453)
# Search agents node scripts/search.mjs --name "AgentName" --chain 8453 # Update agent node scripts/update.mjs --agent-id "8453:42" --name "NewName" --yes # Give feedback node scripts/feedback.mjs --agent-id "8453:42" --value 5 --tag1 "reliable" --yes
bash scripts/setup.sh
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.