Verify agent identity using ERC-8004 on-chain registry
52
65%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./src/skills/bundled/verify/SKILL.mdVerify any agent's on-chain identity using ERC-8004. Prevents impersonation attacks.
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.
/verify 1234 # Verify agent by ID
/verify 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7 # Verify by address
/verify eip155:8453:0x7177...Dd09A:1234 # Full format/verify trader 0x123... # Verify trader before copying
/verify whale 0xabc... # Verify whale identity/verify register # Register this Clodds instance
/verify register --name "MyBot" # With custom name/verify stats # Show total registered agents
/verify reputation 1234 # Get agent's reputation scoreimport { 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...');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');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}`);Same on all EVM chains (CREATE2 deterministic):
| Contract | Address |
|---|---|
| Identity Registry | 0x7177a6867296406881E20d6647232314736Dd09A |
| Reputation Registry | 0xB5048e3ef1DA4E04deB6f7d0423D06F63869e322 |
| Validation Registry | 0x662b40A526cb4017d947e71eAF6753BF3eeE66d8 |
Live on: Ethereum, Base, Optimism, Arbitrum, Polygon (and testnets)
| Network | Status | Default |
|---|---|---|
| Base | Live | ✓ |
| Ethereum | Live | |
| Optimism | Live | |
| Arbitrum | Live | |
| Polygon | Live | |
| Sepolia (testnet) | Live | |
| Base Sepolia | Live |
Mainnet launched January 29, 2026. 19,000+ agents already registered.
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');
}Verify whale identity claims:
const isVerified = await hasIdentity(whaleAddress);
// Only trust signals from verified whalesVerify 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
}alsk1992/CloddsBot
c930628
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.