CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

verify

Verify agent identity using ERC-8004 on-chain registry

52

Quality

65%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./src/skills/bundled/verify/SKILL.md
SKILL.md
Quality
Evals
Security

Verify - Agent Identity Verification

Verify any agent's on-chain identity using ERC-8004. Prevents impersonation attacks.

Why This Matters

On January 29, 2026, an agent named "samaltman" attempted to hijack bots via prompt injection. Anyone can claim to be anyone. ERC-8004 provides cryptographic proof of identity.


Chat Commands

Verify Agent

/verify 1234                           # Verify agent by ID
/verify 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7  # Verify by address
/verify eip155:8453:0x7177...Dd09A:1234             # Full format

Check Before Copy Trading

/verify trader 0x123...                # Verify trader before copying
/verify whale 0xabc...                 # Verify whale identity

Register Clodds

/verify register                       # Register this Clodds instance
/verify register --name "MyBot"        # With custom name

Stats

/verify stats                          # Show total registered agents
/verify reputation 1234                # Get agent's reputation score

TypeScript API

Quick Verification

import { verifyAgent, hasIdentity } from 'clodds/identity';

// Verify by agent ID
const result = await verifyAgent(1234);
if (result.verified) {
  console.log(`Verified: ${result.name}`);
  console.log(`Owner: ${result.owner}`);
  console.log(`Reputation: ${result.reputation?.averageScore}/100`);
}

// Check if address has identity
const hasId = await hasIdentity('0x742d35Cc...');

Full Client

import { createERC8004Client } from 'clodds/identity';

const client = createERC8004Client('base-sepolia');

// Get agent details
const agent = await client.getAgent(1234);
console.log(agent?.card?.name);
console.log(agent?.card?.description);

// Verify ownership
const isOwner = await client.verifyOwnership(1234, '0x742...');

// Get reputation
const rep = await client.getReputation(1234);
console.log(`Score: ${rep?.averageScore}/100 (${rep?.feedbackCount} reviews)`);

// Give feedback
const txHash = await client.giveFeedback(1234, 85, 'Great trading signals');

Register Agent

import { createERC8004Client, buildAgentCard } from 'clodds/identity';

const client = createERC8004Client('base', process.env.PRIVATE_KEY);

// Build agent card
const card = buildAgentCard({
  name: 'Clodds Trading Bot',
  description: 'AI-powered prediction market assistant',
  walletAddress: '0x742d35Cc...',
  apiEndpoint: 'https://api.cloddsbot.com/agent',
});

// Upload to IPFS (use Pinata, web3.storage, etc.)
const ipfsUri = await uploadToIPFS(card);

// Register on-chain
const { agentId, txHash } = await client.register(ipfsUri);
console.log(`Registered as agent #${agentId}`);

Contract Addresses

Same on all EVM chains (CREATE2 deterministic):

ContractAddress
Identity Registry0x7177a6867296406881E20d6647232314736Dd09A
Reputation Registry0xB5048e3ef1DA4E04deB6f7d0423D06F63869e322
Validation Registry0x662b40A526cb4017d947e71eAF6753BF3eeE66d8

Live on: Ethereum, Base, Optimism, Arbitrum, Polygon (and testnets)


Supported Networks

NetworkStatusDefault
BaseLive✓
EthereumLive
OptimismLive
ArbitrumLive
PolygonLive
Sepolia (testnet)Live
Base SepoliaLive

Mainnet launched January 29, 2026. 19,000+ agents already registered.


Use Cases

Copy Trading Verification

Before copying a trader, verify their identity:

const result = await verifyAgent(traderAgentId);
if (!result.verified) {
  console.warn('UNVERIFIED TRADER - Proceed with caution');
}
if (result.reputation?.averageScore < 50) {
  console.warn('LOW REPUTATION - Consider skipping');
}

Whale Tracking

Verify whale identity claims:

const isVerified = await hasIdentity(whaleAddress);
// Only trust signals from verified whales

Bot-to-Bot Communication

Verify other agents before interaction:

const agent = await client.getAgent(otherAgentId);
if (agent?.card?.endpoints?.find(e => e.name === 'A2A')) {
  // Safe to communicate via A2A protocol
}

Best Practices

  1. Always verify before copy trading - Don't trust unverified traders
  2. Check reputation scores - Low scores indicate potential issues
  3. Verify on the right network - Use same network as trading
  4. Register your bot - Build trust with verified identity
  5. Give feedback - Help build the trust graph

Links

  • ERC-8004 Spec
  • Reference Implementation
  • Awesome ERC-8004
Repository

alsk1992/CloddsBot

Path

src/skills/bundled/verify/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.