{
  "name": "InsumerAPI",
  "description": "Condition-based access infrastructure for blockchain state. InsumerAPI reads wallet state, evaluates operator-defined conditions, and returns ECDSA-signed booleans across 38 chains. No secrets, no identity lookups, no static credentials, no balances exposed. Agents can acquire access, operate, and refuel autonomously: buy a key with USDC, USDT, or BTC, or pay per call via x402 with no key at all.",
  "url": "https://insumermodel.com/developers/",
  "version": "1.0.0",
  "base_url": "https://api.insumermodel.com",
  "chains": 38,
  "auth": {
    "api_key": "X-API-Key header. Key format insr_live_ plus 40 hex characters. Free key with 10 credits: POST /v1/keys/create with { email, appName, tier: 'free' }.",
    "wallet_auth": "Authorization: Wallet <base64(JSON({message, signature}))>. SIWE (EIP-4361) message with Domain: api.insumermodel.com, signed EIP-191 by the wallet that purchased the key and holds the Insumer Access pass (soulbound ERC-721 on Base). Accepted on attest, trust, trust/batch, credits, credits/buy. Pay-per-call wallets earn a consensual claim on the pass at $1.00 cumulative x402 spend: nothing is minted unprompted, and the wallet's first wallet-auth request (the SIWE signature itself) is the claim that mints it.",
    "x402": "No key, no signup. Call POST /v1/attest, /v1/trust, or /v1/trust/batch with no credential headers to receive a 402 priced quote (x402 v2; one accept per settlement network: USDC on Base eip155:8453, Polygon eip155:137, Arbitrum eip155:42161, or Solana). Pay the exact quoted amount on any of them and retry with the PAYMENT-SIGNATURE header (X-PAYMENT still accepted). Attest $0.05 ($0.10 with Merkle proof), trust $0.15 ($0.30), trust/batch $0.15 per wallet. Settlement is gasless on every network — the wallet needs only USDC."
  },
  "capabilities": [
    {
      "name": "attest",
      "description": "Verify 1 to 10 on-chain conditions and receive an ECDSA P-256 signed true/false per condition, with an ML-DSA-65 post-quantum companion signature (pqSig/pqKid). Condition types: token_balance, nft_ownership, eas_attestation (compliance templates supported), farcaster_id, evm_view_call, ratio_to_amount, ratio_to_supply, erc8004_agent, erc7710_delegation. Optional proof: 'merkle' returns EIP-1186 storage proofs; optional format: 'jwt' returns an ES256-signed JWT verifiable via JWKS. Booleans only, no raw balances.",
      "endpoint": "https://api.insumermodel.com/v1/attest",
      "method": "POST",
      "auth": "X-API-Key (1 credit; 2 with Merkle proof), Wallet Auth, or x402 ($0.05; $0.10 with Merkle proof)",
      "input": {
        "wallet": "EVM address (0x...). Non-EVM wallets via solanaWallet, xrplWallet, bitcoinWallet, tronWallet, stellarWallet, suiWallet",
        "conditions": "Array of 1-10 conditions, each with type, chainId, and type-specific fields. Send threshold as a decimal string",
        "proof": "Optional: 'merkle' for EIP-1186 storage proofs",
        "format": "Optional: 'jwt' for an ES256-signed JWT attestation, returned with a sibling pqJwt (ML-DSA-65)"
      },
      "output": {
        "results": "Per-condition met boolean with evaluatedCondition, conditionHash (SHA-256), and chain freshness fields (blockNumber and blockTimestamp on RPC chains)",
        "signature": "ECDSA P-256 signature with kid for JWKS key discovery"
      }
    },
    {
      "name": "trust",
      "description": "Wallet trust fact profile. Send a wallet address, get a structured ECDSA-signed fact profile: 44 base checks across 25 chains in 5 dimensions (stablecoins, governance tokens, NFTs, staking, institutional stablecoins), up to 49 checks across 27 chains in 9 dimensions with optional Solana, XRPL, Bitcoin, and Tron wallets. No score, just signed evidence organized by dimension. Designed for agent-to-agent trust decisions.",
      "endpoint": "https://api.insumermodel.com/v1/trust",
      "method": "POST",
      "auth": "X-API-Key (3 credits; 6 with Merkle proofs), Wallet Auth, or x402 ($0.15; $0.30)",
      "input": {
        "wallet": "EVM address. Optional solanaWallet, xrplWallet, bitcoinWallet, tronWallet for the extra dimensions"
      },
      "output": {
        "profile": "Fact profile organized by dimension, each check a signed boolean",
        "signature": "ECDSA P-256 signature verifiable offline via JWKS"
      }
    },
    {
      "name": "trust_batch",
      "description": "Profile up to 10 wallets in one request. Block numbers are fetched once and shared, 5 to 8x faster than sequential calls. Each wallet gets an independently signed profile. Partial success supported; credits charged only for successful profiles.",
      "endpoint": "https://api.insumermodel.com/v1/trust/batch",
      "method": "POST",
      "auth": "X-API-Key (3 credits per wallet; 6 with Merkle proofs), Wallet Auth, or x402 ($0.15 per wallet)",
      "input": {
        "wallets": "Array of up to 10 wallet addresses"
      },
      "output": {
        "profiles": "One independently ECDSA-signed fact profile per wallet"
      }
    },
    {
      "name": "create_key",
      "description": "Get a free API key instantly with 10 verification credits. Email required.",
      "endpoint": "https://api.insumermodel.com/v1/keys/create",
      "method": "POST",
      "auth": "None",
      "input": {
        "email": "Contact email for key delivery",
        "appName": "Name of the calling application or agent",
        "tier": "'free'"
      },
      "output": {
        "apiKey": "insr_live_ key with 10 credits"
      }
    },
    {
      "name": "buy_key",
      "description": "Buy an API key with USDC, USDT, or BTC. No email or prior auth needed: the sender wallet from the transaction becomes the key identity. One key per wallet. Send crypto to the platform wallet, then submit the transaction hash. Optional keyDelivery ('wallet' | 'apiKey' | 'both', default 'wallet') controls whether a bearer key string is issued alongside the soulbound Insumer Access pass.",
      "endpoint": "https://api.insumermodel.com/v1/keys/buy",
      "method": "POST",
      "auth": "None",
      "input": {
        "txHash": "Hash of the payment transaction",
        "chainId": "Chain the payment was sent on",
        "appName": "Name of the calling application or agent",
        "amount": "Required for stablecoins, not for BTC",
        "keyDelivery": "Optional: 'wallet' | 'apiKey' | 'both'"
      },
      "output": {
        "apiKey": "New key with credits per the volume discount schedule (suppressed when keyDelivery is 'wallet' and the pass mints)"
      }
    },
    {
      "name": "check_credits",
      "description": "Check the verification credit balance on the calling key.",
      "endpoint": "https://api.insumermodel.com/v1/credits",
      "method": "GET",
      "auth": "X-API-Key or Wallet Auth",
      "output": {
        "credits": "Remaining verification credits"
      }
    },
    {
      "name": "buy_credits",
      "description": "Refuel credits with USDC, USDT, or BTC. Volume discounts: $5-$99 at $0.04/call, $100-$499 at $0.03/call, $500+ at $0.02/call. First purchase registers the sender wallet to the key; later purchases must come from the same wallet.",
      "endpoint": "https://api.insumermodel.com/v1/credits/buy",
      "method": "POST",
      "auth": "X-API-Key or Wallet Auth",
      "input": {
        "txHash": "Hash of the payment transaction",
        "chainId": "Chain the payment was sent on"
      },
      "output": {
        "credits": "Updated credit balance"
      }
    },
    {
      "name": "compliance_templates",
      "description": "List pre-configured compliance templates for EAS attestation verification: coinbase_verified_account (KYC), coinbase_verified_country, coinbase_one, gitcoin_passport_score, gitcoin_passport_active. Use a template name in POST /v1/attest instead of raw schemaId, attester, and indexer.",
      "endpoint": "https://api.insumermodel.com/v1/compliance/templates",
      "method": "GET",
      "auth": "None",
      "output": {
        "templates": "Available compliance template names and definitions"
      }
    },
    {
      "name": "jwks",
      "description": "Public ECDSA P-256 signing key and ML-DSA-65 post-quantum companion key for offline verification of every attestation (RFC 7517). Three EC kid labels select the verification scheme: insumer-attest-v1, insumer-attest-v2, insumer-trust-v2. Two RFC 9964 AKP entries follow them, insumer-attest-pq1 and insumer-trust-pq1, for the pqSig/pqKid companion every response has carried since September 2026; resolve by kid and pqKid, never by position. Also at https://insumermodel.com/.well-known/jwks.json. Zero-dependency verifier: npm install insumer-verify.",
      "endpoint": "https://api.insumermodel.com/v1/jwks",
      "method": "GET",
      "auth": "None",
      "output": {
        "keys": "JWKS key set"
      }
    }
  ],
  "sdks": [
    {
      "name": "MCP server",
      "install": "npx -y mcp-server-insumer",
      "url": "https://www.npmjs.com/package/mcp-server-insumer"
    },
    {
      "name": "LangChain (Python)",
      "install": "pip install langchain-insumer",
      "url": "https://pypi.org/project/langchain-insumer/"
    },
    {
      "name": "LlamaIndex (Python)",
      "install": "pip install llama-index-tools-insumer",
      "url": "https://pypi.org/project/llama-index-tools-insumer/"
    },
    {
      "name": "ElizaOS (TypeScript)",
      "install": "npm install @insumermodel/plugin-eliza",
      "url": "https://www.npmjs.com/package/@insumermodel/plugin-eliza"
    },
    {
      "name": "Attestation verifier (Node.js/Browser)",
      "install": "npm install insumer-verify",
      "url": "https://www.npmjs.com/package/insumer-verify"
    }
  ],
  "discovery": {
    "llms_txt": "https://insumermodel.com/llms.txt",
    "llms_full_txt": "https://insumermodel.com/llms-full.txt",
    "openapi": "https://insumermodel.com/openapi.yaml",
    "ai_plugin": "https://insumermodel.com/.well-known/ai-plugin.json",
    "ucp": "https://insumermodel.com/.well-known/ucp.json",
    "jwks": "https://insumermodel.com/.well-known/jwks.json",
    "agent_guide": "https://insumermodel.com/ai-agent-verification-api/"
  },
  "contact_email": "support@insumermodel.com",
  "legal_info_url": "https://insumermodel.com/terms-of-service/"
}
