insumer

Wallet auth: send a wallet and conditions, get a signed boolean across 37 chains.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
83%
Naming quality
80%
Poisoning risk
20%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin insumer_attest
  • MEDIUMTool description contains URL to non-standard domainin insumer_wallet_trust
  • INFOTool description contains placeholder or incomplete textin insumer_batch_wallet_trust
  • INFOTool description contains placeholder or incomplete textin insumer_validate_code

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~9,034Tokens (tool definitions)
~7.9 KBTypical response size
Significant attention impact (7.06% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "insumer": {
      "command": "npx",
      "args": [
        "mcp-server-insumer"
      ]
    }
  }
}

Runnable packages

npmmcp-server-insumer1.22.0stdio

Remote endpoints

https://api.insumermodel.com/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡insumer_attest(wallet, solanaWallet, xrplWallet, bitcoinWallet, tronWallet, ...)

Evaluate a list of 1 to 10 conditions against a wallet's on-chain state and return one signed attestation: a yes or no for each condition, never the balance. One call reads the chain for every condition in the list and returns a single attestation covering all of them, so conditions of different kinds and on different chains are combined in one signed result. A condition states what must be true of the wallet, such as a minimum token balance, ownership of an NFT, an attestation held or a registered agent ID; the type field on each condition lists the kinds available and the fields each one takes. Chains: EVM chains plus Solana, XRPL, Bitcoin, Tron, Stellar and Sui; Bitcoin, Tron, Stellar and Sui support token_balance only. The attestation is signed twice: ES256, with a kid identifying the key, and a post-quantum ML-DSA-65 signature (pqSig, pqKid). Each result includes evaluatedCondition, a SHA-256 conditionHash, and the block (EVM), ledger (XRPL, Stellar) or checkpoint (Sui) it was read at. An attestation expires 30 minutes after it is signed, or 5 minutes when it includes a delegation condition. Costs 1 credit (2 with proof: 'merkle'). An rpc_failure error (503) means a read did not complete and nothing was signed: retry, and never treat it as a no. Current chain and check counts: https://insumermodel.com/llms.txt On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

Input Schema

{
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "EVM wallet address (0x...)"
    },
    "solanaWallet": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana wallet address (base58)"
    },
    "xrplWallet": {
      "type": "string",
      "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
      "description": "XRPL wallet address (r-address). For verifying XRP, trust line tokens (RLUSD, USDC), or NFTs on XRP Ledger."
    },
    "bitcoinWallet": {
      "type": "string",
      "pattern": "^(?:[13][1-9A-HJ-NP-Za-km-z]{25,34}|(?:bc1|BC1)[02-9ac-hj-np-zAC-HJ-NP-Z]{11,87})$",
      "description": "Bitcoin address (P2PKH, P2SH, bech32, or Taproot). For verifying native BTC balance. Use chainId 'bitcoin' with contractAddress 'native'."
    },
    "tronWallet": {
      "type": "string",
      "pattern": "^T[1-9A-HJ-NP-Za-km-z]{33}$",
      "description": "Tron wallet address (T-prefixed, base58). For verifying TRX or TRC20 tokens (USDT-TRC20). Use chainId 'tron'."
    },
    "stellarWallet": {
      "type": "string",
      "pattern": "^G[A-Z2-7]{55}$",
      "description": "Stellar wallet address (G-prefixed). For verifying XLM or trustline assets (USDC, BENJI, etc.). Use chainId 'stellar' with the asset issuer's G-address as contractAddress and pass assetCode (e.g. 'USDC'). Soroban contract balances not visible; classic trustlines only."
    },
    "suiWallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{64}$",
      "description": "Sui wallet address (0x + 64 hex chars). For verifying SUI or other Sui coins (e.g. USDC). Use chainId 'sui' with the Sui coin type as contractAddress: '0x2::sui::SUI' for native SUI, or the full coin type address::module::Name for other coins. The string 'native' is not accepted on Sui."
    },
    "proof": {
      "type": "string",
      "enum": [
        "merkle"
      ],
      "description": "Set to 'merkle' for EIP-1186 Merkle proofs (2 credits, refunded to 1 when no proof is delivered). For token_balance or ratio_to_amount against an ERC-20, a storage proof of the balance slot (no subject field); for the same conditions with contractAddress 'native', an account proof whose balance field is the value evaluated (subject 'account_balance'); for account_code, an account proof whose codeHash is the value evaluated (subject 'account_code'); for erc7710_delegation, a storage proof of the revocation slot (subject 'delegation_revocation') on managers with an on-chain-verified layout. Supported EVM chains only (not ZKsync Era, Sei, Viction or XDC Network, and not on non-EVM chains)."
    },
    "declaredLimits": {
      "type": "string",
      "enum": [
        "omit"
      ],
      "description": "Set to 'omit' to leave decoded caveat limits out of the signed results of erc7710_delegation conditions, so a forwarded attestation does not carry the principal's spending ceiling. met, delegationHash, and conditionHash are byte-identical either way."
    },
    "format": {
      "type": "string",
      "enum": [
        "jwt"
      ],
      "description": "Set to 'jwt' to include a Wallet Auth by InsumerAPI token (ES256-signed JWT) in the response, with its ML-DSA-65 sibling pqJwt beside it. The jwt is verifiable by any standard JWT library using JWKS at /.well-known/jwks.json."
    },
    "conditions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "token_balance",
              "nft_ownership",
              "eas_attestation",
              "farcaster_id",
              "evm_view_call",
              "ratio_to_amount",
              "ratio_to_supply",
              "erc8004_agent",
              "erc7710_delegation",
              "account_code"
            ],
            "description": "Condition type: token_balance, nft_ownership (EVM, Solana and XRPL), eas_attestation, farcaster_id (Farcaster IdRegistry on Optimism), evm_view_call (single-address-argument view function returning bool; EVM chains only), ratio_to_amount (balance >= multiple * amount; EVM chains only), ratio_to_supply (balance / totalSupply >= minFraction; EVM chains, ERC-20 only), erc8004_agent (registered ERC-8004 agent on Base; agentId required), erc7710_delegation (signed MetaMask-framework delegation validity on Base; delegationManager, expectedDelegator, and delegation required; max 3 per request), or account_code (the code state of the wallet address itself on an EVM chain; expect required, delegate optional with expect 'eip7702'; no contractAddress)"
          },
          "contractAddress": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "pattern": "^[A-Za-z0-9:_]+$"
              },
              {
                "type": "string",
                "maxLength": 600,
                "pattern": "^0x[0-9a-fA-F]{1,64}::[A-Za-z_][A-Za-z0-9_]*::[A-Za-z_][A-Za-z0-9_]*<[A-Za-z0-9:_<>, ]+>$"
              }
            ],
            "description": "Token or NFT contract address (required for token_balance, nft_ownership, ratio_to_amount, and ratio_to_supply; ratio_to_supply requires an ERC-20 contract, no native). 'native' means the chain's native coin and is for token_balance and ratio_to_amount only. nft_ownership needs the NFT contract address (0x + 40 hex on EVM); 'native' with nft_ownership is rejected with a 400, so use token_balance for the native coin. On Sui, pass a coin type address::module::Name: native SUI is '0x2::sui::SUI', and 'native' is not accepted there. A coin type may carry type parameters in angle brackets."
          },
          "chainId": {
            "anyOf": [
              {
                "type": "integer",
                "description": "EVM chain ID"
              },
              {
                "type": "string",
                "const": "solana"
              },
              {
                "type": "string",
                "const": "xrpl"
              },
              {
                "type": "string",
                "const": "bitcoin"
              },
              {
                "type": "string",
                "const": "tron"
              },
              {
                "type": "string",
                "const": "stellar"
              },
              {
                "type": "string",
                "const": "sui"
              }
            ],
            "description": "Chain identifier: EVM chain ID (integer, includes 50 for XDC), 'solana', 'xrpl', 'bitcoin', 'tron', 'stellar', or 'sui'"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 80,
                "pattern": "^\\d+(\\.\\d+)?$"
              },
              {
                "type": "number"
              }
            ],
            "description": "Minimum balance for token_balance, as a decimal string in token/display units (e.g. \"100\", not base units). Numbers are accepted and coerced to a string. Must be > 0 when proof is merkle."
          },
          "multiple": {
            "$ref": "#/properties/conditions/items/properties/threshold",
            "description": "For ratio_to_amount: collateralization multiple as a decimal string (e.g. \"10\" for 'hold >= 10x the amount'). Met iff balance >= multiple * amount. Numbers are accepted and coerced. Must be > 0."
          },
          "amount": {
            "$ref": "#/properties/conditions/items/properties/threshold",
            "description": "For ratio_to_amount: per-request reference amount in token/display units as a decimal string (e.g. \"100\" for 100 USDC, not base units/wei). Numbers are accepted and coerced. Must be > 0."
          },
          "minFraction": {
            "$ref": "#/properties/conditions/items/properties/threshold",
            "description": "For ratio_to_supply: required share of total supply, a decimal string in (0,1] (e.g. \"0.005\" for 0.5%). Met iff balance / totalSupply() >= minFraction. Numbers are accepted and coerced. For project/governance tokens, not stablecoins."
          },
          "decimals": {
            "type": "integer",
            "minimum": 0,
            "maximum": 77,
            "description": "Optional. Leave it out: the token's own decimals are always read from the chain. If sent it is only a cross-check, and a value that differs from the token's own decimals is rejected with a 400."
          },
          "label": {
            "type": "string",
            "maxLength": 100,
            "description": "Human-readable label"
          },
          "schemaId": {
            "type": "string",
            "pattern": "^0x[0-9a-fA-F]{64}$",
            "description": "EAS schema ID (bytes32 hex). Required for eas_attestation unless template is provided."
          },
          "attester": {
            "$ref": "#/properties/wallet",
            "description": "Expected attester address (optional, for eas_attestation)"
          },
          "indexer": {
            "$ref": "#/properties/wallet",
            "description": "EAS indexer contract address (optional, for eas_attestation)"
          },
          "template": {
            "type": "string",
            "enum": [
              "coinbase_verified_account",
              "coinbase_verified_country",
              "coinbase_one",
              "gitcoin_passport_score",
              "gitcoin_passport_active"
            ],
            "description": "Compliance template name. Use instead of raw schemaId/attester/indexer for eas_attestation. Gitcoin Passport templates check Sybil resistance on Optimism."
          },
          "currency": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "pattern": "^[\\x20-\\x7E]+$",
            "description": "XRPL trust line currency code (e.g. 'RLUSD'). Case-sensitive: enter it exactly as the issuer created it. Required for XRPL trust line tokens, ignored for other chains."
          },
          "assetCode": {
            "type": "string",
            "pattern": "^[A-Za-z0-9]{1,12}$",
            "description": "Stellar trustline asset code (e.g. 'USDC', 'BENJI'). Required for Stellar non-native (trustline) tokens. Use contractAddress 'native' for XLM. Ignored for other chains. Flows into conditionHash so different assets on the same issuer produce different hashes."
          },
          "taxon": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295,
            "description": "XRPL NFToken taxon filter: an integer from 0 to 4294967295 (optional, for nft_ownership on XRPL only). Filters NFTs by issuer + taxon."
          },
          "selector": {
            "type": "string",
            "maxLength": 100,
            "pattern": "^[A-Za-z_][A-Za-z0-9_]*\\(address\\)$",
            "description": "Required for evm_view_call. Canonical signature of a view function returning bool, in the form 'functionName(address)' (e.g. 'hasAccess(address)'). Single-address-argument view functions only; the 4-byte selector is derived from this signature."
          },
          "agentId": {
            "type": "string",
            "pattern": "^\\d{1,78}$",
            "description": "Required for erc8004_agent. The ERC-8004 agent ID as a uint256 decimal string; the caller must supply it (the deployed Identity Registry has no wallet-to-agentId reverse lookup). Met iff the attested wallet owns the agent NFT (ownerOf) or is the registry's signature-verified agentWallet binding. Registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 on Base; chainId 8453 only. Honest semantics: registration is permissionless minting, so the signed statement implies no vetting, no reputation, no endorsement."
          },
          "expect": {
            "type": "string",
            "enum": [
              "none",
              "eip7702",
              "contract"
            ],
            "description": "Required for account_code: the code state the wallet address itself must be in at the anchored block. 'none' is no code (a plain key account); 'eip7702' is the EIP-7702 delegation designator (a key that has delegated execution to a contract); 'contract' is any other code (a smart-contract wallet, a protocol, a token). The three states are exclusive on a chain. EVM chains only; a non-EVM chainId is rejected with a 400. The result is met or not met, like every type: the code and the delegation target are never returned, in any format or mode. The signed evaluatedCondition is {type, chainId, expect, operator: 'code_state'}. With proof 'merkle', the proof is an EIP-1186 account proof (subject 'account_code') whose codeHash is the proven value."
          },
          "delegate": {
            "$ref": "#/properties/wallet",
            "description": "For account_code with expect 'eip7702' only (a 400 with any other expect): an EVM address; met iff the wallet's EIP-7702 designator points at it. Echoed in lowercase inside the signed evaluatedCondition as the caller's input; the actual delegation target is never returned."
          },
          "delegationManager": {
            "$ref": "#/properties/wallet",
            "description": "Required for erc7710_delegation. DelegationManager contract the delegation was signed against: one of the recognized MetaMask Delegation Framework managers on Base (current default 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3). chainId 8453 only."
          },
          "expectedDelegator": {
            "$ref": "#/properties/wallet",
            "description": "Required for erc7710_delegation. The principal address the caller asserts authorized this agent. The condition fails unless the delegation's declared delegator matches. Without it a self-delegation would read as authority, so there is no structural-only mode."
          },
          "delegation": {
            "type": "object",
            "properties": {
              "delegator": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]{40}$",
                "description": "Principal address that signed the delegation. Must equal expectedDelegator."
              },
              "delegate": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]{40}$",
                "description": "Agent wallet the delegation authorizes. Must equal the attested wallet."
              },
              "authority": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]{64}$",
                "description": "Root authority only (0xffff…ffff, 32 bytes of 0xff). Delegation chains are unsupported."
              },
              "caveats": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "enforcer": {
                      "type": "string",
                      "pattern": "^0x[0-9a-fA-F]{40}$",
                      "description": "Caveat enforcer contract address"
                    },
                    "terms": {
                      "type": "string",
                      "maxLength": 20000,
                      "pattern": "^0x[0-9a-fA-F]*$",
                      "description": "ABI-encoded caveat terms (hex)"
                    }
                  },
                  "required": [
                    "enforcer",
                    "terms"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 16,
                "description": "Caveats the principal signed (max 16). Every enforcer must be recognized or the condition fails, with no override."
              },
              "salt": {
                "anyOf": [
                  {
                    "$ref": "#/properties/conditions/items/properties/agentId"
                  },
                  {
                    "type": "integer",
                    "minimum": 0
                  }
                ],
                "description": "Delegation salt (decimal string; numbers coerced)"
              },
              "signature": {
                "type": "string",
                "maxLength": 20000,
                "pattern": "^0x[0-9a-fA-F]*$",
                "description": "EIP-712 signature over the delegation (hex). EOA recovery, or ERC-1271 for smart-contract principals."
              }
            },
            "required": [
              "delegator",
              "delegate",
              "authority",
              "caveats",
              "salt",
              "signature"
            ],
            "additionalProperties": false,
            "description": "Required for erc7710_delegation. The signed ERC-7710 delegation to evaluate. Met iff ALL of: attested wallet is the delegate; declared delegator is expectedDelegator; EIP-712 signature verifies (EOA or ERC-1271); unrevoked at the anchored block; every caveat enforcer recognized; any time-window caveat currently satisfied. Recognized enforcers: timestamp (evaluated), erc20_transfer_amount, native_transfer_amount, allowed_targets, limited_calls (the last four are REPORTED as declaredLimits: redemption enforces them, the attestation does not simulate enforcement). A delegation result that is not met carries failReason, and an attestation that includes a delegation condition expires in 5 minutes instead of 30."
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 10,
      "description": "The list of 1 to 10 conditions to evaluate. All of them are read in this one call and covered by the one signed attestation."
    }
  },
  "required": [
    "conditions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_compliance_templates

List the compliance templates available for EAS attestation conditions. Each template carries pre-configured schema IDs, attester addresses, and decoder contracts for a KYC or identity provider (Coinbase Verifications on Base, Gitcoin Passport on Optimism), so a condition can name the template instead of raw EAS parameters. No authentication or credits required.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡insumer_wallet_trust(wallet, solanaWallet, xrplWallet, bitcoinWallet, tronWallet, ...)

Generate a signed wallet trust fact profile for an EVM wallet: a curated set of presence checks organized into dimensions (stablecoins, governance, nfts, staking, institutional_stablecoins, tokenized_treasuries, stablecoin_deposits, wrapped_bitcoin, names, account): 155 base checks across 27 chains in 10 dimensions. Optional Solana, XRPL, Bitcoin and Tron wallets add their own dimensions, up to 176 checks across 29 chains in 14 dimensions; optional Stellar and Sui wallets let rows inside existing dimensions evaluate. Dimensions arrive in a fixed order: the base dimensions as listed, then any of solana, xrpl, bitcoin and tron that were switched on, in that order. The account dimension holds two rows per chain on Ethereum, Base, Arbitrum, Optimism and Polygon: contract code at the wallet address, and an EIP-7702 delegation there; a plain key reads false on both, and which contract is never named. Rows on a chain whose wallet is not supplied stay in the signed profile with evaluated: false. Every check is held or not held (present or not present in the account dimension), never a balance. The signed conditionSetVersion (currently 2026-10-08) names the check list that was run; log it, never reject on it. Returns per-dimension pass/fail counts and an overall summary: no score, no opinion. Designed for AI agent-to-agent trust decisions. Costs 3 credits (6 with proof: 'merkle'). An rpc_failure error (503) means a read did not complete and nothing was signed: retry, and never treat it as a no. Current chain and check counts: https://insumermodel.com/llms.txt On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

Input Schema

{
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "EVM wallet address (0x...) to profile"
    },
    "solanaWallet": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana wallet address (base58). If provided, adds the Solana dimension and lets the institutional rows on Solana evaluate."
    },
    "xrplWallet": {
      "type": "string",
      "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
      "description": "XRPL wallet address (r-address). If provided, adds the XRPL dimension and lets the institutional row on XRPL evaluate."
    },
    "bitcoinWallet": {
      "type": "string",
      "pattern": "^(?:[13][1-9A-HJ-NP-Za-km-z]{25,34}|(?:bc1|BC1)[02-9ac-hj-np-zAC-HJ-NP-Z]{11,87})$",
      "description": "Bitcoin address. If provided, adds the Bitcoin dimension (native BTC presence)."
    },
    "tronWallet": {
      "type": "string",
      "pattern": "^T[1-9A-HJ-NP-Za-km-z]{33}$",
      "description": "Tron wallet address (T-prefixed). If provided, adds the Tron dimension."
    },
    "stellarWallet": {
      "type": "string",
      "pattern": "^G[A-Z2-7]{55}$",
      "description": "Stellar wallet address (G-prefixed). If provided, lets the institutional rows on Stellar evaluate (classic trustlines). Adds no dimension."
    },
    "suiWallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{64}$",
      "description": "Sui wallet address (0x + 64 hex). If provided, lets the rows on Sui evaluate. Adds no dimension."
    },
    "proof": {
      "type": "string",
      "enum": [
        "merkle"
      ],
      "description": "Set to 'merkle' for EIP-1186 Merkle storage proofs on EVM token checks (6 credits). Rows whose balance is computed rather than stored (Aave aTokens, BUIDL), NFT/non-EVM rows and the account rows are declined with a reason (an account proof is available from the attest tool's account_code condition); the premium is refunded whenever no proof is delivered."
    }
  },
  "required": [
    "wallet"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡insumer_batch_wallet_trust(wallets, proof, detail)

Generate wallet trust fact profiles for up to 10 wallets in a single request. Faster than sequential calls. Each wallet gets an independently signed profile with its own TRST-XXXXX ID: 155 base checks across 27 chains in 10 dimensions (stablecoins, governance, nfts, staking, institutional_stablecoins, tokenized_treasuries, stablecoin_deposits, wrapped_bitcoin, names, account), up to 176 checks across 29 chains in 14 dimensions with the optional Solana, XRPL, Bitcoin and Tron wallets; the signed conditionSetVersion (currently 2026-10-08) names the check list. Dimensions arrive in a fixed order, identical for every wallet in the batch: the base dimensions as listed, then any of solana, xrpl, bitcoin and tron that were switched on, in that order. Supports partial success: failed wallets get error entries while successful ones return full profiles. Costs 3 credits per successful wallet (6 with proof: 'merkle'); credits are charged only for successful profiles, while a pay-per-call (x402) payment covers every wallet in the request. A wallet whose reads did not complete gets an error entry and no signed profile: retry that wallet, and never treat the entry as a no. Each profile lists every check, so the response is large; by default the text is a summary per wallet (profile ID, held / not held / not evaluated counts, and the checks held in each dimension, in the fixed dimension order; the account dimension's checks are present rather than held), and the complete signed profiles are returned unchanged as structuredContent. Set detail to 'full' on the call to get the complete signed profiles as text too. Profiles cannot be fetched again, so a later call signs fresh profiles and is charged again. On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

Input Schema

{
  "type": "object",
  "properties": {
    "wallets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "wallet": {
            "type": "string",
            "pattern": "^0x[0-9a-fA-F]{40}$",
            "description": "EVM wallet address (0x...)"
          },
          "solanaWallet": {
            "type": "string",
            "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
            "description": "Solana wallet address (base58). Adds the Solana dimension."
          },
          "xrplWallet": {
            "type": "string",
            "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
            "description": "XRPL wallet address (r-address). Adds the XRPL dimension."
          },
          "bitcoinWallet": {
            "type": "string",
            "pattern": "^(?:[13][1-9A-HJ-NP-Za-km-z]{25,34}|(?:bc1|BC1)[02-9ac-hj-np-zAC-HJ-NP-Z]{11,87})$",
            "description": "Bitcoin address. Adds the Bitcoin dimension."
          },
          "tronWallet": {
            "type": "string",
            "pattern": "^T[1-9A-HJ-NP-Za-km-z]{33}$",
            "description": "Tron wallet address (T-prefixed). Adds the Tron dimension."
          },
          "stellarWallet": {
            "type": "string",
            "pattern": "^G[A-Z2-7]{55}$",
            "description": "Stellar wallet address (G-prefixed). Lets the rows on Stellar evaluate; adds no dimension."
          },
          "suiWallet": {
            "type": "string",
            "pattern": "^0x[0-9a-fA-F]{64}$",
            "description": "Sui wallet address (0x + 64 hex). Lets the rows on Sui evaluate; adds no dimension."
          }
        },
        "required": [
          "wallet"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 10,
      "description": "1-10 wallet entries to profile"
    },
    "proof": {
      "type": "string",
      "enum": [
        "merkle"
      ],
      "description": "Set to 'merkle' for EIP-1186 Merkle storage proofs on all wallets (6 credits/wallet)."
    },
    "detail": {
      "type": "string",
      "enum": [
        "summary",
        "full"
      ],
      "description": "'summary' (default): the text is a short summary per wallet and the complete signed profiles are in structuredContent. 'full': the complete signed profiles as text too, tens of thousands of characters per wallet (more with optional wallets or merkle proofs). Choose it on the call that needs it: profiles cannot be fetched again, so a second call signs fresh profiles and is charged again. Not sent to the API; it does not change the price of the call."
    }
  },
  "required": [
    "wallets"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_jwks

Get InsumerAPI's public signing keys as a JWKS (JSON Web Key Set): an ECDSA P-256 key under its kids, followed by the ML-DSA-65 post-quantum key as RFC 9964 AKP entries. Signatures on attestation and trust responses verify against these keys. Match an entry by the kid (or pqKid) on the response, never by position; an unknown kid is unverifiable, not refuted. No authentication required.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_list_merchants(token, verified, limit, offset)

Browse merchants in the public directory. Filter by accepted token, verification status. Returns company name, website, tokens accepted, discount info, and walletTerms (the store's terms with and without proof of wallet control).

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "maxLength": 32,
      "description": "Filter by accepted token symbol, e.g. 'UNI'"
    },
    "verified": {
      "type": "string",
      "enum": [
        "true",
        "false"
      ],
      "description": "Filter by domain verification status"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Results per page (default 50, max 200)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset (default 0)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_get_merchant(id)

Get full public merchant profile including token tiers, NFT collections, discount mode, verification status, and walletTerms: what the store gives a wallet with and without proof of control, so you can decide whether to sign before creating a code.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-zA-Z0-9_-]+$",
      "description": "Merchant ID"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_list_tokens(chain, symbol, type)

List the tokens and NFT collections listed in the Insumer registry. Filter by chain, symbol, or asset type. The registry is a directory, not the list of what can be checked: an attestation can check any token on a supported chain, and NFTs on EVM chains, Solana and XRPL, whether listed or not. An empty result means nothing is listed under that filter, not that the token is unsupported.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "string",
          "const": "solana"
        },
        {
          "type": "string",
          "const": "xrpl"
        },
        {
          "type": "string",
          "const": "bitcoin"
        }
      ],
      "description": "Filter by chain ID"
    },
    "symbol": {
      "type": "string",
      "maxLength": 32,
      "description": "Filter by token symbol"
    },
    "type": {
      "type": "string",
      "enum": [
        "token",
        "nft"
      ],
      "description": "Filter by asset type"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_check_discount(merchant, wallet, solanaWallet, xrplWallet)

Calculate discount for a wallet at a merchant. Checks on-chain balances and returns tier and discount percentage per token, never raw balance amounts. Free: does not consume credits. Takes an EVM, Solana or XRPL wallet. An rpc_failure error (503) means a read did not complete: retry, and never treat it as not eligible. The check carries no proof of wallet control, so totalDiscount is what an unproven wallet gets; walletTerms gives the store's terms, and discountIfProven (when present) is what signing would get.

Input Schema

{
  "type": "object",
  "properties": {
    "merchant": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-zA-Z0-9_-]+$",
      "description": "Merchant ID"
    },
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "EVM wallet address (0x...)"
    },
    "solanaWallet": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana wallet address (base58)"
    },
    "xrplWallet": {
      "type": "string",
      "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
      "description": "XRPL wallet address (r-address)"
    }
  },
  "required": [
    "merchant"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢insumer_validate_code(code)

Validate an INSR-XXXXX discount code. For merchant backends during ACP/UCP checkout to confirm code validity, discount percent, and expiry. Returns valid/invalid status with reason, and walletProven (whether the code went to a caller that proved control of the wallet). No authentication required, no credits consumed. Does not expose wallet or token data.

Input Schema

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "pattern": "^INSR-[A-Z0-9]{5}$",
      "description": "Discount code in INSR-XXXXX format"
    }
  },
  "required": [
    "code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "true when the API call succeeded"
    },
    "data": {
      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
    },
    "meta": {
      "description": "Response metadata such as version and timestamp"
    },
    "error": {
      "description": "Error details when ok is false"
    },
    "keys": {
      "type": "array",
      "items": {},
      "description": "JWKS entries (insumer_jwks)"
    },
    "items": {
      "type": "array",
      "items": {},
      "description": "The result when the endpoint returns a JSON array"
    },
    "message": {
      "description": "A plain-text result (insumer_setup), or a message from the API"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools