looks like 13 customers…
funderBridge payouthub · never linksUniswap poolhub · never linksOperator 1 · 10 walletsCustomer 2Customer 3Customer 4

Thirteen wallets paid a seller. Count them and you get thirteen customers. Argus asks who funded each one.

Count operators, not wallets.

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.

Monad settlementx402 paymentsEnvio HyperSync + HyperIndexNansen deep checksDynamic server walletCircle USDC EIP-3009Foundry registry

On Monad mainnet right now

7,665ERC-8004 reviewers of agent #182
→
1operator: one funder first funded every one of them

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

A primitive, not an app

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; // 1

Smart contract

ArgusGate ↗

Gate a function by an explicit set of tiers.

uint8 constant OK = (1 << 2) | (1 << 3);
function claim() external
  onlyTiers(ATTESTOR, OK) { ... }
Published on npmargus-x402-middleware ↗argus-x402-sdk ↗argus-x402-mcp ↗argus-x402-scoring ↗

npm install argus-x402-sdk · all four are MIT licensed and read public Monad chain data.

How it works

Find the operator behind the wallets

Soft policy, never an accusation: a Linked wallet still pays and is served. It just shares one promo with the rest of its fleet.

01

Read the funding graph

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.

02

Need a second signal

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.

03

Two sources agree

On mainnet, Nansen independently reports each wallet’s first funder. Agreement raises confidence; disagreement makes the verdict Unclear.

04

Anyone can recompute it

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

13paying wallets
→
4real customers (demo scenario: 1 operator with 10 wallets + 3 independents)

Tiers

Numbers rise with how sure we are

TierMeaningDefault policy
0 UnclearNo verdict yet, expired, no funding trace, or a shared funder with no second signalStandard price
1 LinkedSeeded by the same non-hub funder as 2+ other wallets, plus one more fleet signalOne promo for the whole operator
2 IndependentFunding traced, no shared non-hub funder. Wallet age never mattersIts own full promo
3 VerifiedA valid agent credential (reserved)Full promo

Contracts check an explicit set of allowed tiers with onlyTiers(attestor, mask), never “tier at least N”.