When to use this
Use the oracle when you need an authoritative wallet read, or the same ERC-20 score Token Shield uses, and you are willing to settle a micropayment. The widget and batch paths are free and thinner. This is the paid, hardened path. Do not send contract addresses to the wallet oracle. It returnsCONTRACT_NOT_WALLET and tells you to use Token Shield.
Endpoints
Integrator-facing proxy (recommended):X-Payment, X-Payment-Required, X-Payment-Tx.
There is also an upstream host configured as ORACLE_URL / NEXT_PUBLIC_ORACLE_URL. Browser clients should not call it. The proxy exists so they never hold those credentials.
Payment: x402
Paid endpoints use the x402 payment standard.1
Challenge
Send the GET with no payment header.Body names the recipient, amount (
0.001), currency (USDC), network (arc-testnet), and memo.2
Settle
Transfer 0.001 USDC (6 decimals) on Arc Testnet to the stated recipient. USDC token:
0x3600000000000000000000000000000000000000.3
Replay
Repeat the same GET with:Successful payment replays return
200 with the score body. Rejected proofs return 422.Wallet response (200)
The proxy re-scores a successful upstream body, strips any rawbreakdown, and adds TrustGate fields:
recommendation is how TrustGate’s own payment rails would route this score. It is not an instruction to your protocol.
tier is one of BLOCKED | LOW | MEDIUM | HIGH | HIGH_ELITE.
publicExplain.tone is positive | neutral | caution | danger. NFT/contract branches on /api/oracle/token/{address} return confidence as HIGH|MEDIUM|LOW (string), not a number.
TypeScript sketch
Token oracle
GET /api/oracle/token/{address} is the Token Shield path. Official issuers short-circuit to VERIFIED. NFTs and non-token contracts are scored locally (free). ERC-20s go upstream and require x402 the same way.
For a compact, free ERC-20 badge payload use /api/widget/score/{address} instead. TrustGate pays that hop.
Errors
Related
Wallet Trust Score
What the read means.
API reference
Every oracle-adjacent path.
