How to Verify an AI Agent Wallet Before Transacting
Before an AI agent touches your funds, or before you accept a payment from one, you need to know whether that wallet has a track record worth trusting. Here is how to check it using on-chain data.
The problem with trusting AI agent wallets
Autonomous AI agents are increasingly operating with their own wallets, paying for APIs via the x402 protocol, receiving payments for services, and interacting with smart contracts without human approval on every step.
That creates a real question: how do you know if an agent wallet is legitimate? A wallet address alone tells you nothing. You need its history.
Two standards now provide the raw material for answering that question:
- ERC-8004: An Ethereum standard (live on mainnet since January 29, 2026) that gives AI agents a verifiable on-chain identity and a reputation registry where feedback from real transactions is recorded.
- x402: Coinbase's HTTP payment protocol that lets AI agents pay for services using stablecoins inside a normal API request. Every payment creates an on-chain transaction trail.
AgentKarma indexes both and turns them into a single trust score (0–100) for any wallet address on Ethereum and Base.
What signals make up a trust score
AgentKarma computes scores from 7 on-chain signals, each weighted by how well it predicts trustworthy behavior:
| Signal | Weight | What it measures |
|---|---|---|
| Loyalty | 30% | Repeated interactions with the same counterparties |
| Activity | 18% | Volume of on-chain transactions over time |
| Diversity | 16% | Breadth of unique counterparties transacted with |
| Feedback | 15% | Reputation entries submitted in the ERC-8004 Reputation Registry |
| Volume | 10% | Total value of transactions processed |
| Recency | 6% | How recently the wallet was last active |
| Age | 5% | How long the wallet has been active on-chain |
Wallets registered in the ERC-8004 Identity Registry receive a +5 bonus, rewarding wallets that have committed to the standard.
Checking a wallet via the REST API
The simplest integration is a single API call before any transaction:
# Get the trust score for any wallet address
curl https://agent-karma.rushikeshmore271.workers.dev/wallet/0xYourAgentWallet
# Response
{
"address": "0x...",
"trust_score": 74,
"tier": "MEDIUM",
"score_breakdown": {
"loyalty": 68,
"activity": 80,
"diversity": 72,
"feedback": 60,
"volume": 55,
"recency": 90,
"age": 45
}
}Tiers: HIGH (80–100), MEDIUM (50–79), LOW (20–49), MINIMAL (0–19).
Using the TypeScript SDK
For TypeScript projects, install the SDK and check trust in one line:
npm install agentkarma
import { AgentKarma } from 'agentkarma'
const client = new AgentKarma()
// Check before transacting
const agentWallet = '0x...'
if (await client.isHighTrust(agentWallet)) {
// Proceed with the transaction
} else {
const score = await client.getScore(agentWallet)
console.log(`Score: ${score.trust_score} (${score.tier})`)
// Decide whether to proceed based on your threshold
}
// Or set your own threshold (e.g. 60+)
const trusted = await client.meetsThreshold(agentWallet, 60)Using the MCP server (for AI agents)
If you are building an AI agent that needs to verify other agents, AgentKarma ships a Model Context Protocol (MCP) server with 6 tools. Add it to your Claude or Cursor config:
{
"mcpServers": {
"agentkarma": {
"command": "npx",
"args": ["-y", "agentkarma", "mcp"]
}
}
}Your agent can then call get_trust_score or batch_trust_scores to check multiple wallets before interacting.
What a trust score does not tell you
A trust score is a signal based on historical on-chain behavior, not a guarantee. Keep these in mind:
- A new wallet with zero history will score MINIMAL regardless of who controls it.
- The score reflects the wallet's past, not what it will do next.
- AgentKarma currently indexes Ethereum and Base. Cross-chain activity on other networks is not yet included.
Use the trust score as one input in your decision, alongside spending limits, allowlists, and any other controls your application enforces.
Look up any wallet address now
Check a wallet →