A protocol module for tetherto/wdk that adds pre-transaction, condition-based access. Cryptographically signed attestations and trust profiles, verifiable offline. OAuth proves who you are. Wallet auth proves what you hold.
WDK ships four protocol categories out of the box. We add a fifth, Wallet Auth, as a first-class module alongside them.
Velora
USDT0 / LayerZero
Aave
MoonPay
InsumerAPI
Each WDK protocol module exposes a typed interface that wallet apps compose into their flow. SwapProtocol has quoteSwap() and swap(). LendingProtocol has supply(), borrow(), repay(). WalletAuthProtocol has two verbs for the two jobs it does: attest an address against a set of on-chain conditions, and produce a signed multi-dimensional trust profile. Both are pre-transaction checks. Neither touches private keys.
Evaluate 1–10 on-chain conditions against any address. Returns an ECDSA P-256 signed boolean with a post-quantum signature, with optional ES256 JWT output and EIP-1186 Merkle proofs.
155 base checks across stablecoins, governance, NFTs, staking, institutional stablecoins, tokenized treasuries, stablecoin deposits, wrapped bitcoin, names and account code, up to 176 with the optional wallets. Add Solana, XRPL, Bitcoin, or Tron addresses for additional dimensions; Stellar and Sui addresses let the checks on those chains evaluate. The profile is signed as a whole.
Three distinct buyers for a pre-transaction check inside a self-custodial wallet. WDK touches all three.
WDK explicitly targets "humans, machines, and AI agents." When an autonomous agent holds keys, the operator wants programmable constraints the agent can't argue its way around, plus a cryptographic audit trail the operator can verify after the fact.
Creator-payment tools, remittance apps, treasury products: anything that needs a policy layer between "user clicks send" and "transaction broadcasts." Holdings thresholds, attestations, agent standing. Drop-in, portable attestation format.
Before accepting an incoming payment, show the sending wallet's trust profile: signed facts about what it holds, dimension by dimension, at the moment it was read. No score, no opinion.
| Method | Maps to | Signed | Credits |
|---|---|---|---|
attest({ address, conditions, jwt?, merkleProof? }) |
POST /v1/attest | ECDSA P-256 + ML-DSA-65 signature + optional ES256 JWT | 1 (2 with merkleProof) |
trust({ address, solanaAddress?, xrplAddress?, bitcoinAddress?, tronAddress?, stellarAddress?, suiAddress?, merkleProof? }) |
POST /v1/trust | ECDSA P-256 + ML-DSA-65 signature | 3 (6 with merkleProof) |
Every result carries a signature (sig) and key ID (kid) that let any party verify the result offline, without calling the API, against the public JWKS:
Use any standard JOSE or JWT library, or npm install insumer-verify (pip install insumer-verify in Python) for a convenience wrapper. If you request jwt: true on attest(), the output is also a standard ES256 JWT: Kong, Nginx, Cloudflare Access, and AWS API Gateway can verify it the same way they verify any other JWT.
InsumerAPI covers 37 chains: 31 EVM networks (Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BNB, XDC, and the full major-EVM set), plus Solana, XRPL, Bitcoin, Tron, Stellar, and Sui. The module works today on every WDK surface that overlaps: wdk-wallet-evm, wdk-wallet-solana, wdk-wallet-btc, and wdk-wallet-tron. It also covers XRPL, Stellar, and Sui, which have no WDK wallet module.
Not yet covered: TON and Lightning/Spark. Apps on those WDK runtimes can still call attest() or trust() against any EVM, Solana, Bitcoin, XRPL, Tron, Stellar, or Sui address the user holds. Multi-chain addresses (solanaAddress, xrplAddress, bitcoinAddress, tronAddress, stellarAddress, suiAddress) are routed automatically based on each condition’s chainId.
Free tier ships 10 attestation credits on every new key: enough to run the module end-to-end before spending anything. When a wallet app needs more, credits are purchased on-chain via POST /v1/credits/buy: no Stripe, no fiat. Supported rails: USDC or USDT on Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, and Avalanche (auto-detected from the transaction), USDC or USDT on Solana, USDT on Tron, or BTC on Bitcoin. Submit the transaction hash and the credits are added once the transfer is verified on-chain.
Node.js ≥ 18 (uses built-in fetch), Bare Kit and React Native (pass a fetch override in the constructor), and browsers (CORS is enabled on api.insumermodel.com). The module is ESM-only and ships with no runtime dependencies.
npm install @insumermodel/wdk-protocol-wallet-auth, then get a free API key with 10 credits.