Thirteen wallets paid a seller. Count them and you get thirteen customers. Argus asks who funded each one.
Argus tells you whether the wallets in front of you are one operator or many: x402 payers, ERC-8004 reviewers, campaign claimants. Public chain data in, a verdict anyone can recompute out. Built on Monad for sellers, developers and AI agents.
On Monad mainnet right now
The ERC-8004 spec warns that unfiltered feedback is open to Sybil attacks and expects third parties to supply the reviewer filter. This is that filter, from public data. Linked means shared funding, not wrongdoing. Run it live →
Four ways to use it
One promo per operator, not per wallet.
app.use(argus({
network: 'mainnet', payTo: SELLER,
price: { standard: '$0.01', promo: '$0.005' },
routes: ['GET /api/premium'],
attestors: [ARGUS],
}));Tools for Claude Code and any MCP client.
claude mcp add argus \ -e ENVIO_API_TOKEN=<token> \ -- npx -y argus-x402-mcp > How many operators are behind > agent 182's ERC-8004 reviews?
Verify locally. De-duplicate reputation.
const argus = createArgus({ network: 'mainnet', hypersyncToken });
const rep = await argus.agentReputation(182);
rep.raw.distinctClients; // 7665
rep.independent.operators; // 1Gate a function by an explicit set of tiers.
uint8 constant OK = (1 << 2) | (1 << 3);
function claim() external
onlyTiers(ATTESTOR, OK) { ... }npm install argus-x402-sdk · all four are MIT licensed and read public Monad chain data.
How it works
Soft policy, never an accusation: a Linked wallet still pays and is served. It just shares one promo with the rest of its fleet.
Envio HyperSync finds who first funded each wallet (USDC for x402 payers, MON for ERC-8004 reviewers) and every other wallet that funder seeded. Exchanges, bridges, faucets and DEX pools are hubs and never link anyone.
A shared funder alone is never enough. Linked needs another: identical instalments, same-day activity, money flowing back to one address, or one funder dominating a group such as an agent’s reviewers.
On mainnet, Nansen independently reports each wallet’s first funder. Agreement raises confidence; disagreement makes the verdict Unclear.
The rule is deterministic over public data. Verdicts are published to a permissionless registry per attestor, and the SDK re-checks them locally. Verify, don’t trust.
The x402 demo, live on Monad testnet
Tiers
| Tier | Meaning | Default policy |
|---|---|---|
| 0 Unclear | No verdict yet, expired, no funding trace, or a shared funder with no second signal | Standard price |
| 1 Linked | Seeded by the same non-hub funder as 2+ other wallets, plus one more fleet signal | One promo for the whole operator |
| 2 Independent | Funding traced, no shared non-hub funder. Wallet age never matters | Its own full promo |
| 3 Verified | A valid agent credential (reserved) | Full promo |
Contracts check an explicit set of allowed tiers with onlyTiers(attestor, mask), never “tier at least N”.