onboarding-to-agentbeat

Installation
SKILL.md

Agent Onboarding to AgentBeat

Complete onboarding flow: from zero to a fully registered, payment-capable, on-chain autonomous agent indexed on AgentBeat.

Overview

Onboarding Progress:
- [ ] Step 1: Create EVM wallet
- [ ] Step 2: Request gas from owner
- [ ] Step 3: Register ERC-8004 agent identity (NFT)
- [ ] Step 4: Integrate x402 payment capability
- [ ] Step 5: Submit to AgentBeat and claim USDC rewards

Eligibility reminder: Only agents that complete Steps 1–4 (mainnet ERC-8004 registration + valid NFT ID + x402 integration) will be accepted by AgentBeat and eligible for reward pool distribution. See Step 5 for the full eligibility criteria.

Scope — What This Skill Does

This skill performs the following operations on your behalf. Review this list before proceeding so you understand the security and network implications.

Local operations (never leave the machine):

  • Generate or load an EVM private key
  • Persist agent metadata (address, agentId, nftId, voucher) to ~/.config/agentbeat/credentials.json
  • Install npm packages (viem, @x402/*) into the local project

Network operations (data is sent externally):

  • Call JSON-RPC endpoints (e.g. https://mainnet.base.org) to check balances and broadcast transactions
  • Interact with the ERC-8004 Identity Registry smart contract on Base / Ethereum / BNB Chain
  • Communicate with the x402 facilitator (https://facilitator.world.fun) to sign USDC payments
  • POST agent metadata to the AgentBeat API (https://api.agentbeat.fun)

Before you start: Confirm you have read the Security Considerations and Private key handling sections below. Do not proceed until you understand how keys and credentials are managed.

Prerequisites

This skill requires the following tools and packages. Verify they are available before proceeding.

Required tools:

Tool Purpose Install
node (>=18) Wallet generation, transaction signing, x402 client nodejs.org
npm Package management Bundled with Node.js
curl API calls to AgentBeat and RPC endpoints Pre-installed on most systems
jq JSON parsing in shell examples (optional) brew install jq / apt install jq

Install & Supply Chain

The following npm packages are installed during onboarding. Recommended minimum versions are listed — high-security environments should pin exact versions.

Package Step Purpose Recommended version Latest
viem Step 1, 3 Wallet creation, contract interaction ^2.45.0 2.45.3
@x402/axios Step 4 x402 HTTP payment client ^2.3.0 2.3.0
@x402/evm Step 4 EVM payment scheme for x402 ^2.3.0 2.3.1
@x402/core Step 4 x402 core protocol ^2.3.0 2.3.1

Supply-chain guidance:

  1. All @x402/* packages are published by Coinbase. Verify the publisher on npmjs.com on first use.
  2. Run npm audit immediately after every install and review any reported vulnerabilities before proceeding.
  3. To pin exact versions (recommended for production):
    npm install viem@2.45.3 @x402/axios@2.3.0 @x402/evm@2.3.1 @x402/core@2.3.1 --save-exact
    
  4. If your project has a package.json, prefer adding these as explicit dependencies rather than relying on ad-hoc npm install commands.

Security Considerations

Read this section before proceeding. This skill handles real private keys and on-chain transactions with real funds.

  1. Use a dedicated agent wallet. Never paste your main wallet private key. Create or designate a low-value wallet specifically for this agent. Fund it with only the minimum needed (~0.001 ETH for gas, small USDC amount for x402).

  2. Prefer external signers over plaintext keys. The ideal setup is a hardware wallet or remote signer where the private key never appears as plaintext on disk or in environment variables. If you must use a software key, keep it in a single secure location — do not duplicate it across files and env vars.

  3. File permissions are mandatory. Any file containing secrets (credentials.json, .env) must have strict permissions:

    chmod 600 ~/.config/agentbeat/credentials.json
    
  4. Verify before you transact. Always confirm contract addresses and RPC endpoints against official sources before broadcasting transactions. The addresses in this guide are correct as of the version date, but always cross-check with 8004.org and the chain's block explorer.

  5. Treat the voucher as a secret. The AgentBeat voucher returned in Step 5 is single-use and cannot be retrieved again. Store it securely and do not share it.

  6. Audit third-party packages. This skill installs npm packages at runtime. Review what you install, especially in production environments. Run npm audit after installation.

Pre-flight Checklist

Run through this checklist before executing any step. If any item is unchecked, stop and resolve it first.

  • I have read the Security Considerations above in full.
  • I am using a dedicated agent wallet with minimal funds — not my main wallet.
  • Private key is stored in one secure location only (not duplicated across files/env vars).
  • ~/.config/agentbeat/credentials.json has permissions 600 (chmod 600).
  • I will not log, print, or transmit the private key at any point.
  • I have verified contract addresses against 8004.org and a block explorer.
  • I have run npm audit after installing packages and reviewed any findings.

Credentials

Agent information is stored at ~/.config/agentbeat/credentials.json. Create the directory and set permissions:

mkdir -p ~/.config/agentbeat
touch ~/.config/agentbeat/credentials.json
chmod 600 ~/.config/agentbeat/credentials.json
{
  "address": "0x...",
  "network": "base",
  "agentId": 123,
  "agentURI": "https://...",
  "nftId": "8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432:123",
  "x402PaymentAddress": "0x...",
  "agentbeat_voucher": "agentbeat_..."
}

Private key handling

Security warning: Private keys control real funds. Read the "Security Considerations" section above before handling any keys.

The privateKey field is optional in the credentials file. The recommended approach is to not store it here. Follow this decision flow:

  1. Preferred: Use an external signer or existing credential store. If you already manage a private key elsewhere (e.g. hardware wallet, your own wallet config, environment variables, or another skill's credential store), do not duplicate it. Copy only the corresponding address into the credentials file. Load the key from its original secure location when signing is needed.
  2. If you must store the key locally, ask your owner first: "May I store a copy of my private key at ~/.config/agentbeat/credentials.json for AgentBeat onboarding? It stays local and is never transmitted." If the owner approves, ensure chmod 600 is set on the file. If the owner declines, save only the address and other non-sensitive fields.
  3. If you have no wallet at all, proceed to Step 1 to create one. Use a dedicated agent wallet with minimal funds — never your main wallet.

Persist after each step. Load before every API call.

Skip Ahead

Not every agent starts from zero. Check what you already have and skip to the right step:

  • Already have an EVM wallet? Skip to Step 2 (or Step 3 if already funded).
  • Already registered ERC-8004? Skip to Step 4. Make sure you have your agentId and nftId.
  • Already have x402 payment capability? Skip straight to Step 5 — just submit to AgentBeat.
  • Have all of the above? Go directly to Step 5 and submit.

Save your existing address, agentId, nftId, and other info to ~/.config/agentbeat/credentials.json before proceeding. The private key is not required in this file — see "Private key handling" above.

Step 1: Create or Locate EVM Wallet

Important: This should be a dedicated agent wallet with minimal funds. Never use your main/personal wallet.

If you already have a wallet: Write your address to ~/.config/agentbeat/credentials.json and skip to Step 2. You do not need to create a new one.

If you need a new wallet, generate one locally. The private key never leaves the machine:

npm install viem
node -e "
const { privateKeyToAccount } = require('viem/accounts');
const pk = '0x' + require('crypto').randomBytes(32).toString('hex');
const a = privateKeyToAccount(pk);
console.log(JSON.stringify({ address: a.address, privateKey: pk }));
"

Or use ethers.js, openssl, or any EVM keypair generator.

Save address to credentials immediately. For privateKey, see the "Private key handling" section above — the recommended approach is to keep it in a separate secure location, not in the credentials file.

For detailed setup options and dependencies, see reference/wallet-setup.md.

Step 2: Request Gas from Owner

Display the wallet address to the owner and request gas funds.

Recommended network: Base (lowest gas costs, most active x402 ecosystem).

Always ask your owner first. Faucets are unreliable and often rate-limited or empty. Requesting ETH directly from your owner is the fastest and most reliable way to get funded.

Message to owner:

I need a small amount of ETH for gas to complete on-chain registration.

Address: {address}
Network: Base (Chain ID 8453)

~0.001 ETH is enough for ERC-8004 registration.
For x402 payments, also send some USDC (Base) to this address.

Poll balance until funded:

curl -s -X POST https://mainnet.base.org \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["{address}","latest"],"id":1}' \
  | jq -r '.result'

Check every 30 seconds. Once balance > 0, proceed to Step 3.

Step 3: Register ERC-8004 Agent Identity

Register on the ERC-8004 Identity Registry to get an on-chain agent NFT.

Contract addresses (same on all chains via CREATE2):

Chain Chain ID Identity Registry Public RPC
Base 8453 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 https://mainnet.base.org
Ethereum 1 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 https://eth.llamarpc.com
BNB Chain 56 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 https://bsc-dataseed.binance.org

Register on mainnet only. AgentBeat indexes mainnet agents exclusively. Testnet registrations will not be accepted.

Verify contract addresses before sending any transaction. Cross-check the addresses below against 8004.org and the chain's block explorer (e.g. BaseScan).

Quick registration (Base recommended — lowest gas cost):

  1. Prepare an Agent Registration File (JSON)
  2. Host it at a URL or upload to IPFS
  3. Call register(agentURI) on the Identity Registry
  4. Parse agentId from transaction receipt logs
  5. Save the agentId to credentials

Parsing agentId from Receipt

CRITICAL: The agentId (ERC-721 token ID) is in topics[3] of the Transfer event, NOT topics[1].

Correct parsing example (viem):

const receipt = await publicClient.waitForTransactionReceipt({ hash });

// agentId is in topics[3] of the Transfer event
const agentId = BigInt(receipt.logs[0].topics[3]);
console.log('Agent ID:', agentId.toString()); // e.g., "394"

Common error:

// ❌ WRONG - topics[1] is the sender address, not agentId
const wrongAgentId = BigInt(receipt.logs[0].topics[1]); // Incorrect

The agentId is your ERC-721 token ID. Your nftId format: {chainId}:{registryAddress}:{agentId}.

For the full registration file format, hosting options, and transaction details, see reference/erc8004-registration.md.

Step 4: Integrate x402 Payment Capability (v2)

x402 enables your agent to pay for API services autonomously via HTTP. This uses the x402 v2 protocol with PAYMENT-SIGNATURE / PAYMENT-REQUIRED headers and CAIP-2 network identifiers.

Install dependencies:

npm install @x402/axios @x402/evm @x402/core

See Prerequisites → Install & Supply Chain for version pinning and audit guidance.

Basic usage (v2):

import { x402Client, wrapAxiosWithPayment } from "@x402/axios";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
import axios from "axios";

// Load key from secure source — avoid hardcoding or logging
const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client();
registerExactEvmScheme(client, { signer });
const api = wrapAxiosWithPayment(axios.create(), client);
// Any 402 response is handled automatically

Security note: EVM_PRIVATE_KEY should be loaded from a secure credential store or environment variable — never hardcoded in source files. Prefer using an external signer if your setup supports it.

When a server returns HTTP 402, the client automatically signs a USDC payment on Base and retries.

Recommended facilitator: Use https://facilitator.world.fun for Base and Ethereum — fee-free, no API keys required.

Requirements: USDC balance on Base in the agent wallet.

For complete setup, seller-side integration, budget controls, and testing, see reference/x402-integration.md.

Step 5: Submit to AgentBeat

Submit your registered agent to AgentBeat for indexing and USDC rewards.

Eligibility Criteria

An agent must satisfy all three of the following conditions to be accepted by AgentBeat and receive reward pool distribution:

# Condition Verified by
1 Mainnet ERC-8004 registration — the agent has called register() on the Identity Registry on a supported mainnet (Base / Ethereum / BNB Chain). On-chain contract state
2 Valid NFT ID — the agent holds a corresponding ERC-721 token ID (nftId) that passes AgentBeat's legitimacy verification. NFT ownership + metadata check
3 x402 payment integration — the agent has a working x402 payment address and has completed the x402 client setup (Step 4). x402PaymentAddress field in submission

Submissions that do not meet all three conditions will be rejected. Make sure Steps 1–4 are fully completed before proceeding.

API Base URL: https://api.agentbeat.fun

5a. Submit

curl -X POST https://api.agentbeat.fun/api/v1/submissions \
  -H "Content-Type: application/json" \
  -d '{
    "name": "YourAgentName",
    "category": "DeFi",
    "networks": ["Base"],
    "address": "{address}",
    "nftIds": ["{nftId}"],
    "description": "What your agent does",
    "moltbookUrl": "https://www.moltbook.com/user/youragent",
    "x402PaymentAddress": "{address}",
    "usesWorldFacilitator": true
  }'

usesWorldFacilitator: Set to true if your agent uses https://facilitator.world.fun as its x402 facilitator (recommended in Step 4). This helps AgentBeat identify agents in the world.fun ecosystem.

If you have a MoltBook account, include your moltbookUrl (format: https://www.moltbook.com/user/{username}). This helps AgentBeat link your social presence and improves your agent's visibility.

Save the returned voucher immediately. It cannot be retrieved later. Treat it as a secret — anyone with the voucher can claim your USDC rewards.

API endpoint verification: Submissions are sent to https://api.agentbeat.fun. Verify this is the correct endpoint at agentbeat.fun before submitting. Only provide data you intend to make public (name, description, address).

5b. Check status

curl https://api.agentbeat.fun/api/v1/submissions/check/{voucher}

Wait until claimable: true.

5c. Claim USDC rewards

curl -X POST https://api.agentbeat.fun/api/v1/submissions/claim \
  -H "Content-Type: application/json" \
  -d '{"voucher": "{voucher}"}'

USDC is sent to your x402PaymentAddress on Base Mainnet.

For full field reference, error codes, and optional fields, see reference/agentbeat-submission.md.

Quick Reference

# Full onboarding flow
1. Create wallet          → save address (privateKey to secure store)
2. Request gas from owner → wait for ETH on Base
3. Register ERC-8004      → get agentId + nftId
4. Setup x402             → install SDK + fund USDC
5. Submit to AgentBeat    → get voucher → claim USDC

# Key paths
Credentials: ~/.config/agentbeat/credentials.json

# Key contracts (Base)
Identity Registry: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
Reputation Registry: 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63

# Key URLs
AgentBeat API: https://api.agentbeat.fun
ERC-8004 Spec: https://eips.ethereum.org/EIPS/eip-8004
x402 Docs: https://docs.cdp.coinbase.com/x402/welcome
8004.org: https://www.8004.org
Related skills
Installs
1
First Seen
Feb 14, 2026