Menu

Wallet Trust Profiles

Curated checks across up to 7 dimensions. ECDSA-signed fact profiles. No score, no opinion, just verifiable evidence.

Same ECDSA signing and JWKS verification as the attestation endpoint.

Building this in Claude Code? Install the wallet auth skill and Claude will write correct, signature-verifying integration code on the first try.

smithery skill add douglasborthwick/insumer-skill

View on Smithery · GitHub repo

What this does

Generate a structured on-chain fact profile for any EVM wallet. 36 checks across stablecoins (USDC and USDT), governance tokens, NFTs, and staking positions, each signed with ECDSA P-256.

Generate a trust profile

Node.js
const res = await fetch(
  "https://api.insumermodel.com/v1/trust",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": "YOUR_API_KEY"
    },
    body: JSON.stringify({
      wallet: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
    })
  }
);
const { data } = await res.json();
console.log(data.trust.id);         // TRST-XXXXX
console.log(data.trust.dimensions); // { stablecoins, governance, nfts, staking }
Python
import requests

res = requests.post(
    "https://api.insumermodel.com/v1/trust",
    headers={
        "Content-Type": "application/json",
        "x-api-key": "YOUR_API_KEY"
    },
    json={
        "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
    }
)
data = res.json()["data"]
print(data["trust"]["id"])         # TRST-XXXXX
print(data["trust"]["dimensions"]) # { stablecoins, governance, nfts, staking }
curl
curl -X POST https://api.insumermodel.com/v1/trust \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
  }'

Up to 7 dimensions, curated checks

Each check returns a boolean presence fact. No balances exposed by default. Optional Merkle proofs for trustless verification.

Stablecoins

26 checks

USDC across Ethereum, Base, Polygon, Arbitrum, Optimism, Avalanche, BNB Chain, Sonic, World Chain, Linea, ZKsync, Celo, Sei, Plume, Unichain, Ink. USDT across Ethereum, Sonic, Linea, ZKsync, Gnosis, Mantle, Scroll, Celo, Soneium, opBNB. Balance > 0 presence detection.

Governance

4 checks

UNI, AAVE, ARB, OP governance tokens. Balance > 0.

NFTs

3 checks

BAYC, Pudgy Penguins, Wrapped CryptoPunks. Balance > 0.

Staking

3 checks

stETH, rETH, cbETH liquid staking positions. Balance > 0.

Optional solanaWallet adds USDC on Solana. Optional xrplWallet adds RLUSD + USDC on XRP Ledger. Optional bitcoinWallet adds native BTC balance check. Up to 40 checks total.

Endpoint reference

POST /v1/trust

Generate Trust Profile

Runs curated on-chain checks against a single wallet and returns an ECDSA-signed trust profile with boolean facts across up to 7 dimensions.

ParameterTypeDescription
walletstring requiredEVM wallet address (0x...).
solanaWalletstring optionalSolana wallet address. Adds USDC on Solana check.
xrplWalletstring optionalXRPL wallet address (r-address). Adds RLUSD + USDC on XRP Ledger checks.
bitcoinWalletstring optionalBitcoin address (P2PKH, P2SH, bech32, or Taproot). Adds Bitcoin Holdings dimension.
proofstring optionalSet to "merkle" for Merkle storage proofs on RPC chains. Doubles credit cost.
Request
curl -X POST https://api.insumermodel.com/v1/trust \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
  }'
Response
{
  "ok": true,
  "data": {
    "trust": {
      "id": "TRST-8F2A1",
      "wallet": "0xd8dA...6045",
      "conditionSetVersion": "v1",
      "dimensions": {
        "stablecoins": {
          "checks": [
            { "label": "USDC on Ethereum", "chainId": 1, "met": true,
              "evaluatedCondition": { "type": "token_balance", "chainId": 1, "contractAddress": "0xA0b8...eB48", "operator": "gt", "threshold": 0, "decimals": 6 },
              "conditionHash": "0x3a7f...", "blockNumber": "0x12f4a80", "blockTimestamp": "2026-02-27T12:00:00.000Z" },
            { "label": "USDC on Base", "chainId": 8453, "met": false,
              "evaluatedCondition": { "type": "token_balance", "chainId": 8453, "contractAddress": "0x833...4eC7", "operator": "gt", "threshold": 0, "decimals": 6 },
              "conditionHash": "0x9b2e...", "blockNumber": "0x1a2b3c", "blockTimestamp": "2026-02-27T12:00:00.000Z" },
            /* ... 14 more USDC chains */
            { "label": "USDT on Ethereum", "chainId": 1, "met": true,
              "evaluatedCondition": { "type": "token_balance", "chainId": 1, "contractAddress": "0xdAC1...1ec7", "operator": "gt", "threshold": 0, "decimals": 6 },
              "conditionHash": "0x4c1d...", "blockNumber": "0x12f4a80", "blockTimestamp": "2026-02-27T12:00:00.000Z" },
            /* ... 9 more USDT chains */
          ],
          "passCount": 5, "failCount": 21, "total": 26
        },
        "governance": {
          "checks": [
            { "label": "UNI", "chainId": 1, "met": true, "conditionHash": "0x..." },
            /* ... AAVE, ARB, OP */
          ],
          "passCount": 2, "failCount": 2, "total": 4
        },
        "nfts": {
          "checks": [/* BAYC, Pudgy Penguins, Wrapped CryptoPunks */],
          "passCount": 0, "failCount": 3, "total": 3
        },
        "staking": {
          "checks": [/* stETH, rETH, cbETH */],
          "passCount": 1, "failCount": 2, "total": 3
        }
      },
      "summary": {
        "totalChecks": 17,
        "totalPassed": 5,
        "totalFailed": 12,
        "dimensionsWithActivity": 3,
        "dimensionsChecked": 4
      },
      "profiledAt": "2026-02-27T12:00:00Z",
      "expiresAt": "2026-02-27T12:30:00Z"
    },
    "sig": "MEUCIQ...",
    "kid": "insumer-attest-v1"
  },
  "meta": { "creditsRemaining": 47, "creditsCharged": 3, "version": "1.0", "timestamp": "2026-02-27T12:00:01.000Z" }
}

Verify signatures: Trust profile responses include sig and kid fields. Verify them using the same ECDSA P-256 flow described in On-Chain Verification.

XRPL checks: When xrplWallet is provided, RLUSD and USDC checks are added. XRPL results include ledgerIndex and ledgerHash instead of blockNumber/blockTimestamp, plus trustLineState: { frozen }. Frozen trust lines return met: false.

Pricing: 3 credits per wallet ($0.12). With proof: "merkle": 6 credits ($0.24).
POST /v1/trust/batch

Batch Trust Profiles

Generate trust profiles for up to 10 wallets in a single request. Shared block number fetches make batch calls 5-8x faster than sequential single calls. Supports partial success.

ParameterTypeDescription
walletsarray requiredArray of 1-10 objects, each with wallet (required), solanaWallet (optional), and xrplWallet (optional).
proofstring optionalSet to "merkle" for Merkle proofs. Applies to all wallets in the batch.
Request
curl -X POST https://api.insumermodel.com/v1/trust/batch \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "wallets": [
      { "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" },
      { "wallet": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B" },
      { "wallet": "0x1f9090aaE28b8a3dCeaDf281B0F12828e676c326" }
    ]
  }'
Response
{
  "ok": true,
  "data": {
    "results": [
      {
        "trust": { "id": "TRST-8F2A1", "wallet": "0xd8dA...6045", "dimensions": { /* ... */ },
          "summary": { "totalChecks": 17, "totalPassed": 5, "totalFailed": 12 } },
        "sig": "MEUCIQ...",
        "kid": "insumer-attest-v1"
      },
      {
        "trust": { "id": "TRST-3B7C9", "wallet": "0xAb58...eC9B", "dimensions": { /* ... */ },
          "summary": { "totalChecks": 17, "totalPassed": 2, "totalFailed": 15 } },
        "sig": "MEQCIAo...",
        "kid": "insumer-attest-v1"
      },
      {
        "trust": { "id": "TRST-D41E6", "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "dimensions": { /* ... */ },
          "summary": { "totalChecks": 20, "totalPassed": 7, "totalFailed": 13 } },
        "sig": "MEYCIQDi...",
        "kid": "insumer-attest-v1"
      }
    ],
    "summary": {
      "requested": 3,
      "succeeded": 3,
      "failed": 0
    }
  },
  "meta": {
    "creditsRemaining": 38,
    "creditsCharged": 9,
    "version": "1.0",
    "timestamp": "2026-02-27T12:00:02.000Z"
  }
}
Pricing: 3 credits per wallet ($0.12 each). The entire batch counts as 1 request toward rate limits. Shared block fetches yield 5-8x faster throughput than sequential calls.

See how this endpoint fits the full API → API Topology