zeruai

v1.0.2

Register agents on the Zeru ERC-8004 Identity Registry, manage wallets and metadata, and read on-chain state. Use when an agent needs to register on-chain, check fees, read agent info, set metadata, or manage agent wallets on Base Mainnet or Base Sepolia.

1· 1.5k·1 current·1 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (Zeru registry operations) match the files and commands provided. Required binaries (node, npx), package.json dependencies (ethers, tsx, etc.), and the PRIVATE_KEY env var are appropriate for signing transactions and interacting with the registry.
Instruction Scope
SKILL.md and scripts focus on reading/writing agent JSON, calling the Agent URI API, and sending on-chain transactions. Instructions require reading a local JSON file only when provided, and require PRIVATE_KEY for signing. There are no instructions to read unrelated system files or to transmit arbitrary local data.
Install Mechanism
There is no automated download-from-URL installer; the README directs the user to run npm install in the bundle. Dependencies come from npm (package.json) and are proportionate to the task. No suspicious external archive downloads or URL-shortened install sources are used.
Credentials
Only PRIVATE_KEY is required for write operations (plus optional RPC_URL/CHAIN_ID). That is proportionate for creating/sending transactions. However, PRIVATE_KEY is high-value: it will be used locally to build and sign transactions and messages that the skill sends (e.g., signatures posted to the agent URI API).
Persistence & Privilege
Skill does not request always: true or any system-wide configuration changes. It does not modify other skills' configs. Autonomous invocation is allowed but is the platform default and not by itself a problem.
Assessment
This package appears to do what it says: create/host agent JSON, sign requests, and mint/update ERC-8004 tokens. Important cautions before installing or running: - PRIVATE_KEY is required for write operations: only provide a key you control and understand. Do NOT use your main money-custody key; prefer a dedicated key with minimal funds for testing. - The SDK posts signed payloads (personal_sign) and the signature to the Agent URI API (agenturi.zpass.ai / agentapi.zpass.ai). Those signatures prove ownership and could be used by the operator to act on the document endpoint in ways you should trust the operator for — review and trust the remote service before sending signatures. - Default chain is Base Mainnet (8453). If you intended to test, explicitly use --chain 84532 or set CHAIN_ID and provide a test RPC_URL. Registration mints an on-chain NFT and requires paying the on-chain fee + gas; ensure you have the required ETH balance. - The code runs standard npm dependencies (ethers, tsx, etc.). Running npm install will fetch packages from the npm registry — inspect package.json and lockfiles and consider installing in an isolated environment. - If you need higher assurance, audit the included scripts (already present) and/or run the CLI in a sandbox container or testnet wallet first. If you are unsure about the remote agent API domains (zpass.ai), verify their operator/trustworthiness before creating/updating agent URIs.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binsnode, npx
EnvPRIVATE_KEY
Primary envPRIVATE_KEY
latestvk979h9m69px0dtntn5xw24y7ps80pbcm
1.5kdownloads
1stars
3versions
Updated 1mo ago
v1.0.2
MIT-0

Zeru ERC-8004 Identity Registry

Register and manage AI agents on the Zeru Identity Registry. Defaults to Base Mainnet (0.0025 ETH fee). Use --chain 84532 for Base Sepolia testnet.

One-Time Setup

Run once to install dependencies:

cd {baseDir} && npm install

Agent JSON Structure (ERC-8004 registration-v1)

When registering an agent, you provide a JSON file describing the agent. The SDK auto-fills type, registrations, and defaults for x402Support/active/image if omitted.

Minimal JSON (just name + description + one service):

{
  "name": "My AI Agent",
  "description": "A helpful AI agent that does X",
  "services": [
    { "name": "web", "endpoint": "https://myagent.example.com" }
  ]
}

Full JSON (MCP + A2A + OASF + x402 payments):

{
  "name": "DataAnalyst Pro",
  "description": "Enterprise-grade blockchain data analysis agent. Performs on-chain forensics, wallet profiling, and transaction pattern detection.",
  "image": "https://cdn.example.com/agents/analyst.png",
  "services": [
    {
      "name": "MCP",
      "endpoint": "https://api.dataanalyst.ai/mcp",
      "version": "2025-06-18",
      "mcpTools": ["analyze_wallet", "trace_transactions", "detect_anomalies"],
      "capabilities": []
    },
    {
      "name": "A2A",
      "endpoint": "https://api.dataanalyst.ai/.well-known/agent-card.json",
      "version": "0.3.0",
      "a2aSkills": ["analytical_skills/data_analysis/blockchain_analysis"]
    },
    {
      "name": "OASF",
      "endpoint": "https://github.com/agntcy/oasf/",
      "version": "0.8.0",
      "skills": ["analytical_skills/data_analysis/blockchain_analysis"],
      "domains": ["technology/blockchain"]
    },
    {
      "name": "web",
      "endpoint": "https://dataanalyst.ai"
    },
    {
      "name": "agentWallet",
      "endpoint": "eip155:8453:0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7"
    }
  ],
  "x402Support": true,
  "active": true,
  "supportedTrust": ["reputation", "ERC-8004"]
}

All fields:

FieldTypeRequiredDefaultDescription
namestringYesAgent name (1–256 chars)
descriptionstringYesWhat the agent does (max 2048 chars)
imagestringNoplaceholderAvatar URL (HTTPS, IPFS, or Arweave)
servicesarrayYesService endpoints (1–64 items, see below)
x402SupportbooleanNofalseSupports x402 payment protocol
activebooleanNotrueAgent is actively accepting requests
supportedTruststring[]NoTrust models: "reputation", "crypto-economic", "tee-attestation", "ERC-8004"
ownerstringNosigner addressOwner 0x address (auto-set from PRIVATE_KEY)

Service types:

nameendpointExtra fields
"web"Website URL
"MCP"MCP server URLversion, mcpTools[], mcpPrompts[], mcpResources[], capabilities[]
"A2A"Agent card URL (/.well-known/agent-card.json)version, a2aSkills[]
"OASF"OASF repo URLversion, skills[], domains[]
"agentWallet"CAIP-10 address (eip155:{chainId}:{address})
"ENS"ENS name (e.g. myagent.eth)
"email"Email address
customAny URLdescription

Commands

/zeruai register --json <file>

Register a new agent using a full JSON file (recommended). Creates hosted agent URI, mints NFT on-chain, and updates URI with the real agentId.

/zeruai register --json agent.json
/zeruai register --json agent.json --chain 84532

Steps to register:

  1. Create a JSON file following the structure above (e.g. agent.json)
  2. Run: npx tsx {baseDir}/scripts/zeru.ts register --json agent.json

The SDK automatically adds type, registrations (with agentId: 0 placeholder), and defaults for missing optional fields. After minting, it updates the document with the real agentId.

/zeruai register --name <name> --description <desc> --endpoint <url>

Simple registration (single API endpoint only). For richer agents, use --json instead.

/zeruai register --name "Trading Bot" --description "AI-powered trading agent" --endpoint "https://mybot.com/api"
/zeruai register --name "Data Analyzer" --description "Analyzes datasets" --endpoint "https://analyzer.ai/api" --image "https://example.com/icon.png"
/zeruai register --name "Test Bot" --description "Testing" --endpoint "https://test.com" --chain 84532

Requires PRIVATE_KEY env var. Wallet must have fee + gas (e.g. ~0.003 ETH on mainnet).

To run: npx tsx {baseDir}/scripts/zeru.ts register --name "..." --description "..." --endpoint "..."

/zeruai read <agentId>

Read an agent's on-chain data: owner, URI, wallet, name, services.

/zeruai read 16

To run: npx tsx {baseDir}/scripts/zeru.ts read 16

/zeruai fee

Check current registration fee and whether registration is open.

/zeruai fee

To run: npx tsx {baseDir}/scripts/zeru.ts fee

/zeruai set-metadata <agentId> --key <key> --value <value>

Set custom metadata on an agent. Only the owner can call.

/zeruai set-metadata 16 --key "category" --value "trading"

Requires PRIVATE_KEY.

To run: npx tsx {baseDir}/scripts/zeru.ts set-metadata 16 --key "category" --value "trading"

/zeruai unset-wallet <agentId>

Clear the agent wallet. Only the owner can call.

/zeruai unset-wallet 16

Requires PRIVATE_KEY.

To run: npx tsx {baseDir}/scripts/zeru.ts unset-wallet 16

Setup

Read-Only (no setup needed)

read and fee work without a private key.

With Wallet (for registration and writes)

Add to your OpenClaw config (~/.openclaw/openclaw.json):

{
  "skills": {
    "entries": {
      "zeruai": {
        "enabled": true,
        "env": {
          "PRIVATE_KEY": "0xYourFundedPrivateKey"
        }
      }
    }
  }
}

Optional env:

  • RPC_URL — override default RPC
  • CHAIN_ID — override chain (default: 8453 for Base Mainnet, use 84532 for Base Sepolia)

Contract Info

Base Mainnet (default, chainId 8453)

  • Identity Registry: 0xFfE9395fa761e52DBC077a2e7Fd84f77e8abCc41
  • Reputation Registry: 0x187d72a58b3BF4De6432958fc36CE569Fb15C237
  • Registration Fee: 0.0025 ETH
  • RPC: https://mainnet.base.org

Base Sepolia (testnet, chainId 84532)

  • Identity Registry: 0xF0682549516A4BA09803cCa55140AfBC4e5ed2E0

  • Reputation Registry: 0xaAC7557475023AEB581ECc8bD6886d1742382421

  • Registration Fee: 0.001 ETH

  • RPC: https://sepolia.base.org

  • Source: zeru

How It Works

  1. register creates a hosted JSON document (ERC-8004 registration-v1 schema) via the Agent URI API, mints an NFT on the Identity Registry (paying the fee), then updates the document with the real agentId.
  2. read queries the on-chain contract for owner, tokenURI, and agentWallet, then fetches and parses the URI JSON.
  3. fee reads the current registrationFee() and registrationEnabled() from the contract.
  4. set-metadata calls setMetadata(agentId, key, value) on the contract.
  5. unset-wallet calls unsetAgentWallet(agentId) on the contract.

Comments

Loading comments...