ERC-8004 · Base mainnet · USDC settlement

Oracle Trust
for agent-to-agent
on Base.

One call, one answer: is this wallet, agent, or token contract safe to pay? MainStreet returns a 0–100 reputation score and a SAFE / CAUTION / BLOCK verdict, signed on Base, verifiable onchain — callable by any agent before it routes USDC to a counterparty it doesn't yet trust.

SAFE · CAUTION · BLOCK — in under 100 ms.

MCP registryCDP x402 BazaarERC-8004 #53953Base 8453
bm, agent
Try it

Score any Base address.

Paste a wallet, agent, or token contract. Free snapshot read. Live re-score forces a fresh ERC-8004 read + signed attestation ($0.05 USDC via x402 paywall).

Need the compact agent-shaped verdict? Call POST /api/agent/check with {subject, type, depth} — returns {verdict, score, attestation} in <100 ms.

Live on Base mainnet

One call. Live onchain data.

Each agent is identified by its onchain address. We fold ERC-8004 ReputationRegistry feedback, x402 facilitator settlements, Virtuals ACP completions, and multi-source identity proofs into a single EIP-712 signed score.

Base agents
x402 settlements
USDC volume
Unique buyers
Virtuals agents
→ 01

Vet before you pay

Your agent is about to route USDC to a wallet, agent or token. Check it first: preflight("0x…").

→ 02

Get a signed verdict

Back comes SAFE / CAUTION / BLOCK + a 0–100 score from ERC-8004 feedback, x402 settlements & rug-risk — EIP-712 signed, verifiable onchain.

→ 03

Route or block

Pay via x402 only if SAFE. Sign a peer receipt after the call — the counterparty's score updates next snapshot.

Leaderboard

Top 5 right now.

Live snapshot from /leaderboard. Refreshed every 24h.

loading…
Integrate

Drop it into your agent.

No SDK install, no auth. Ten tools natively in Claude, Cursor, Windsurf — or one HTTP call.

Claude Desktop / Cursor — MCP, HTTP transport
claude mcp add --transport http mainstreet \
  https://avisradar-production.up.railway.app/mcp
Vet-before-pay — JS SDK (one call)
import { score } from '@raskhaaa/mainstreet-oracle/sdk';

// before your agent routes USDC to a counterparty (agent, wallet or token)
const r = await score(counterparty);
// r.score 0-100 · r.trustShield.color → green=SAFE / yellow=CAUTION / red=BLOCK
if (r.trustShield?.color === 'red') throw new Error('BLOCK — do not pay');

// SAFE → settle the x402 call on Base
await fetch(serviceUrl, { headers: { 'x-payment': await sign(price) } });
Or score any agent by address — x402
GET https://avisradar-production.up.railway.app/api/agent/score/0x<address>
X-Payment: <x402 signature>  · max $0.05 USDC on Base
Who needs this

Anyone routing USDC to an agent they don't know.

Orchestrator agents

Routing work to providers — a cheap, machine-readable trust signal before forwarding USDC.

Buyer agents

Vetting an unfamiliar service — one call that returns a ready-to-pay endpoint.

Marketplaces

Virtuals ACP, Bankr, agentic.market — surface credible providers without running ranking infra.

Don't pay an agent you don't trust.

One call returns a signed SAFE / CAUTION / BLOCK verdict + a 0–100 score for any Base wallet, AI agent or token — before your USDC ever leaves.