agentsclimarketplace

Insumer trust batch

Skill douglasborthwick-crypto/insumer-agent-skills/skills/insumer/insumer-trust-batch

InsumerAPI batch wallet trust profiles — same curated bundle as insumer-trust, but for up to 10 wallets in a single call (5-8x faster than sequential). Use when the user needs trust profiles for a list of wallets (airdrop eligibility, allowlist scoring, batch pre-transaction checks). Each wallet's profile is independently signed; response supports partial success.From its SKILL.md

Install
npx -y skills add douglasborthwick-crypto/insumer-agent-skills --skill insumer-trust-batch

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.0 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

InsumerAPI Batch Wallet Trust Profile

Same curated condition-based access bundle as insumer-trust, but accepts up to 10 wallets in one request (5-8x faster than sequential calls). Each wallet's profile is independently signed; the response supports partial success — failures for one wallet don't fail the rest.

Each wallet's per-dimension attestations retain their original issuer signatures. No orchestrator wrap.

Setup

export INSUMER_API_KEY='insr_live_...'

Reference values

  • Endpoint: POST https://api.insumermodel.com/v1/trust/batch
  • Cost: 3 credits per successful wallet (6 with proof: "merkle"). Failed wallets in the batch don't cost credits.
  • Max wallets per call: 10
  • Profile ID format per wallet: TRST-XXXXX

Request shape

wallets is an array of objects, each with a required wallet field plus optional cross-chain wallet fields. (Not an array of plain strings.)

{
  "wallets": [
    { "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" },
    {
      "wallet": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
      "solanaWallet": "5v9CXTpN3WHbM2jAYty88qDGz7P4yuMv8fnuPRXBPmiB"
    }
  ]
}
Field per entryRequiredNotes
walletyesEVM address, 0x + 40 hex chars
solanaWalletoptionalAdds Solana USDC dimension to this wallet's profile
xrplWalletoptionalAdds XRPL stablecoin dimension (RLUSD + USDC)
bitcoinWalletoptionalAdds Bitcoin Holdings dimension (native BTC)

Top-level proof: "merkle" (optional) applies to all wallets in the batch and costs 6 credits per wallet.

Response shape

{
  "ok": true,
  "data": {
    "results": [
      {
        "trust": {
          "id": "TRST-A1B2C",
          "wallet": "0xd8dA...",
          "conditionSetVersion": "v1",
          "dimensions": { ... },
          "summary": { "totalChecks": 17, "totalPassed": 6, "totalFailed": 11, ... },
          "profiledAt": "2026-...",
          "expiresAt": "2026-..."
        },
        "sig": "...",
        "kid": "insumer-attest-v1"
      },
      {
        "trust": { "id": "TRST-D4E5F", "wallet": "0xAb58...", ... },
        "sig": "...",
        "kid": "insumer-attest-v1"
      }
    ],
    "summary": { "requested": 2, "succeeded": 2, "failed": 0 }
  },
  "meta": {
    "creditsCharged": 6,
    "creditsRemaining": ...
  }
}

Each entry in data.results[] is either a {trust, sig, kid} object or {error: { wallet, message }}. Iterate, branch, and verify each trust independently with insumer-jwks-verify.

Usage

Example 1: Two EVM wallets

curl -X POST https://api.insumermodel.com/v1/trust/batch \
  -H "X-API-Key: $INSUMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallets": [
      { "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" },
      { "wallet": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B" }
    ]
  }'

Example 2: Mixed cross-chain coverage per wallet

curl -X POST https://api.insumermodel.com/v1/trust/batch \
  -H "X-API-Key: $INSUMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallets": [
      {
        "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "solanaWallet": "5v9CXTpN3WHbM2jAYty88qDGz7P4yuMv8fnuPRXBPmiB"
      },
      {
        "wallet": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
        "xrplWallet": "rN7n3473SaZBCG4dFL83w7p1W9cgPJqKro",
        "bitcoinWallet": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"
      }
    ]
  }'

Example 3: Batch with Merkle proofs

curl -X POST https://api.insumermodel.com/v1/trust/batch \
  -H "X-API-Key: $INSUMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallets": [
      { "wallet": "0x..." },
      { "wallet": "0x..." }
    ],
    "proof": "merkle"
  }'

Cost: successful_wallets * 6 credits. Reveals raw on-chain balances — only opt in if needed.

When to use batch vs single

SituationUse
Single walletinsumer-trust
2–10 wallets, same callinsumer-trust-batch
More than 10 walletsLoop over batches of 10
Different conditions per walletLoop over insumer-attest (custom conditions)
Same custom conditions for many walletsLoop over insumer-attest

Code emission rules

  1. Read the API key from an env var. Never inline.
  2. Iterate data.results[] and branch on trust vs error. Don't assume every entry succeeded.
  3. Verify each profile's signature independently. The batch wrapper does not produce an aggregate signature; each entry in data.results[] carries its own sig and kid.
  4. Cap at 10 wallets per call. For larger lists, batch client-side.
  5. Pre-validate wallet format before sending. Invalid wallet formats fail validation for the entire request.
  6. Backend only. The API key is a backend credential.
  7. Don't cache the verdict. Wallet state changes.

Helper script

scripts/trust_batch.py — Python helper. Reads INSUMER_API_KEY from env, accepts a wallet list via --wallets-file (one EVM address per line) or --wallets w1,w2,w3. Builds the proper array-of-objects request body.

python scripts/trust_batch.py --wallets-file allowlist.txt

For per-wallet cross-chain coverage, edit the script's --wallets-file to use JSON-line format (one object per line) or call the API directly with curl.

Error handling

StatusCauseFix
400Missing wallets, exceeds 10, or invalid wallet formatValidate addresses; split into ≤10 batches
401Missing/invalid API keySee insumer-auth
402Insufficient credits for entire batchTop up via Path 4 in insumer-auth
429Rate limit exceededSlow down; check tier limits
503Upstream blockchain data source unavailableRetryable; no credits charged for failed batches

Within a 200 response, individual wallet failures appear as {error: {wallet, message}} entries in data.results[] — those don't consume credits.

Related skills

SkillPurpose
insumer-authAPI key creation, top-up
insumer-trustSingle-wallet curated profile
insumer-attestCustom condition (single call, up to 10 conditions)
insumer-jwks-verifyOffline ES256 verification — apply per data.results[] entry

References

What ships with it: 1 file

3.6 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 326,835. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.