mcp-server-insumer
mcp-server-insumer is a privacy-preserving, condition-based on-chain verification server for AI agents, supporting 33 blockchains (30 EVM + Solana + XRPL + Bitcoin). It returns ECDSA-signed boolean attestations without exposing wallet balances or identities.
On-Chain Verification
Verify token balances, NFT ownership, EAS attestations, and Farcaster identity across 32+ chains with cryptographic proofs (
insumer_attest)Generate signed wallet trust fact profiles (17–40 checks: stablecoins, governance tokens, NFTs, staking) for individual or batch wallets up to 10 at a time (
insumer_wallet_trust,insumer_batch_wallet_trust)List pre-configured EAS compliance templates (Coinbase Verifications, Gitcoin Passport) (
insumer_compliance_templates)Retrieve the ECDSA P-256 public signing key (JWKS) for verifying attestation signatures (
insumer_jwks)
Merchant Discovery & Discounts
Browse the public merchant directory, get merchant profiles, and list registered tokens/NFT collections
Calculate discount eligibility for a wallet at a merchant (free, no credits) (
insumer_check_discount)Generate signed discount codes (INSR-XXXXX, 30-min expiry), validate them, and confirm on-chain USDC payments
Commerce Protocol Integration
Check discount eligibility in OpenAI/Stripe ACP format (coupon objects, per-item allocations) (
insumer_acp_discount)Check discount eligibility in Google UCP format (
insumer_ucp_discount)
API Key & Credits Management
Generate a free API key via email, check credit balance/tier/rate limits, and purchase credits with USDC, USDT, or BTC
Merchant Onboarding & Configuration (Owner Only)
Create merchants (100 free credits), configure token discount tiers (up to 8), NFT collection discounts (up to 4), discount mode (highest/stack), and USDC payment settings
Publish or refresh the public directory listing
Request and complete domain verification (DNS TXT, meta tag, or file upload) to earn a trust badge
Supports on-chain verification of token balances and NFT ownership on the BNB Chain.
Enables verification of Coinbase Verifications and integration with the Coinbase ecosystem for agent wallet trust scoring.
Provides on-chain verification for token balances, NFT ownership, and other conditions on the Ethereum blockchain.
Allows verification of Farcaster identities and associated on-chain data.
Integrates with Google UCP (Universal Commerce Protocol) for discount eligibility and commerce applications.
Supports checking discount eligibility using the OpenAI ACP commerce protocol format.
Enables on-chain verification and access to compliance templates like Gitcoin Passport on the Optimism network.
Provides tools for verifying token balances and NFT ownership on the Polygon network.
Enables on-chain verification for token balances and wallet trust profiles on the Solana blockchain.
Supports checking discount eligibility using the Stripe ACP commerce protocol format.
Provides on-chain verification for native XRP, trust line tokens, and NFTs on the XRP Ledger (XRPL).
mcp-server-insumer
MCP server for InsumerAPI — condition-based access infrastructure. Send a wallet and conditions, get a signed boolean across 33 chains. No balances exposed, no identity required, no trust in the API provider needed.
Enables AI agents (Claude Desktop, Cursor, Windsurf, and any MCP-compatible client) to add condition-based access to any workflow — verify on-chain conditions, discover merchants, generate signed discount codes, and onboard new merchants.
In production: DJD Agent Score (Coinbase x402 ecosystem) uses InsumerAPI for AI agent wallet trust scoring. Case study.
Also available as: LangChain (26 tools, PyPI) | langchain-community (26 tools, PR #549) | ElizaOS (10 actions, npm) | OpenAI GPT (GPT Store) | insumer-verify (client-side verification, npm)
Full AI Agent Verification API guide — covers all 33 chains, trust profiles, commerce protocols, and signature verification.
Quick Start
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}
}Cursor / Windsurf
Add to your MCP settings:
{
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}Get an API Key
Option A — Let your agent do it: Start the server without a key. Your AI agent can call the insumer_setup tool with your email to generate a free key instantly. Add it to your config and restart.
Option B — Terminal (no browser needed):
curl -s -X POST https://api.insumermodel.com/v1/keys/create \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "appName": "MCP Server", "tier": "free"}'Returns an insr_live_... key with 100 reads/day and 10 verification credits. One free key per email.
Option C — Browser: Go to insumermodel.com/developers and generate a free key instantly.
Set it as INSUMER_API_KEY in your config.
What You Get Back
When your agent calls insumer_attest, you get an ECDSA-signed attestation:
{
"ok": true,
"data": {
"attestation": {
"id": "ATST-A7C3E1B2D4F56789",
"pass": true,
"results": [
{
"condition": 0,
"met": true,
"label": "USDC >= 1000 on Ethereum",
"type": "token_balance",
"chainId": 1,
"evaluatedCondition": {
"chainId": 1,
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"decimals": 6,
"operator": "gte",
"threshold": 1000,
"type": "token_balance"
},
"conditionHash": "0x554251734232c8b43062f1cf2bb51b76650d13268104d74c645f4893e67ef69c",
"blockNumber": "0x1799043",
"blockTimestamp": "2026-03-26T20:04:23.000Z"
}
],
"passCount": 1,
"failCount": 0,
"attestedAt": "2026-02-28T12:34:57.000Z",
"expiresAt": "2026-02-28T13:04:57.000Z"
},
"sig": "dmNJKqnGZ9f47qpWax9gxgw1DhUKHKHrbLspTop8NWzYhv2fNpVAt1gAuhUfU4xPsgXTCdrmTXI4vEE50dcfEA==",
"kid": "insumer-attest-v1"
},
"meta": {
"version": "1.0",
"timestamp": "2026-02-28T12:34:57.000Z",
"creditsRemaining": 99,
"creditsCharged": 1
}
}The sig is an ECDSA P-256 signature over {id, pass, results, attestedAt}. The kid identifies which key signed it. The conditionHash is a SHA-256 of the exact condition logic that was evaluated.
No balances. No amounts. Just a cryptographically signed true/false.
For XRPL conditions, results include ledgerIndex, ledgerHash (validated ledger hash), and trustLineState: { frozen: boolean } instead of blockNumber/blockTimestamp. Native XRP conditions include ledgerIndex and ledgerHash but not trustLineState. Frozen trust lines cause met: false.
Wallet Auth (JWT)
Add format: "jwt" to the insumer_attest tool parameters to receive the attestation as a standard JWT bearer token:
{
"wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"conditions": [ ... ],
"format": "jwt"
}The response includes an additional jwt field containing an ES256-signed JWT. This token is verifiable by any standard JWT library via the JWKS endpoint at GET /v1/jwks — making it compatible with Kong, Nginx, Cloudflare Access, AWS API Gateway, and other middleware that accepts JWT bearer tokens.
Verify the Response
Your agent gets the attestation. Your application should verify it. Install insumer-verify:
npm install insumer-verifyimport { verifyAttestation } from "insumer-verify";
// attestationResponse = the full API envelope {ok, data: {attestation, sig, kid}, meta}
// Do NOT pass attestationResponse.data — the function expects the outer envelope
const result = await verifyAttestation(attestationResponse, {
jwksUrl: "https://insumermodel.com/.well-known/jwks.json",
maxAge: 120, // reject if block data is older than 2 minutes
});
if (result.valid) {
// Signature verified, condition hashes match, not expired
const pass = attestationResponse.data.attestation.pass;
console.log(`Attestation ${pass ? "passed" : "failed"} all conditions`);
} else {
console.log("Verification failed:", result.checks);
}This runs 4 independent checks: ECDSA signature, condition hash integrity, block freshness, and attestation expiry. Zero runtime dependencies, uses Web Crypto API.
Tools (27)
Setup (free, no auth)
Tool | Description |
| Generate a free API key instantly. Takes an email, returns an |
Key Discovery (free)
Tool | Description |
| Get the JWKS containing InsumerAPI's ECDSA P-256 public signing key. Use the |
On-Chain Verification (cost credits)
Tool | Description |
| Verify on-chain conditions (token balances, NFT ownership, EAS attestations, Farcaster identity). Returns ECDSA-signed boolean with |
| List available EAS compliance templates (Coinbase Verifications on Base, Gitcoin Passport on Optimism). Free. |
| Generate ECDSA-signed wallet trust fact profile. 36 base checks (up to 40 with optional Solana, XRPL, and Bitcoin) across 24 chains covering stablecoins, governance, NFTs, staking, and cross-chain positions. 3 credits (6 with merkle). |
| Batch trust profiles for up to 10 wallets. Each wallet object supports optional |
| Create signed discount code (INSR-XXXXX, 30-min expiry) for a wallet at a merchant. 1 merchant credit. |
Discovery (free)
Tool | Description |
| Browse the merchant directory. Filter by token, verification status. |
| Get full public merchant profile. |
| List all registered tokens and NFTs. Filter by chain, symbol, type. |
| Calculate discount for a wallet at a merchant. |
Credits & Keys
Tool | Description |
| Buy a new API key with USDC, USDT, or BTC (no auth required). Agent-friendly: no email needed, sender wallet becomes the key's identity. One key per wallet. Volume discounts: $0.04–$0.02/call. Supported chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin. Non-refundable. |
| Check credit balance and tier. |
| Buy verification credits with USDC, USDT, or BTC. Volume discounts: $0.04–$0.02/call. Supported chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin. Non-refundable. First purchase registers sender wallet; subsequent purchases must match or include |
| Confirm USDC payment for a discount code. |
Merchant Onboarding (owner-only)
Tool | Description |
| Create new merchant. Receives 100 free credits. |
| Get full private merchant details. |
| Set token discount tiers. |
| Set NFT collection discounts. |
| Set discount mode, cap, USDC payments. |
| Publish merchant to public directory. |
| Buy merchant verification credits with USDC, USDT, or BTC. Volume discounts: $0.04–$0.02/call. Owner only. Non-refundable. First purchase registers sender wallet; subsequent purchases must match or include |
Domain Verification (owner-only)
Tool | Description |
| Request a verification token for a merchant's domain. Returns token and 3 methods (DNS TXT, meta tag, file upload). |
| Complete domain verification after placing the token. Verified merchants get a trust badge. |
Commerce Protocol Integration
Tool | Description |
| Check discount eligibility in OpenAI/Stripe ACP format. Returns coupon objects and per-item allocations. 1 merchant credit. |
| Check discount eligibility in Google UCP format. Returns title, extension field, and applied array. 1 merchant credit. |
| Validate an INSR-XXXXX discount code. Returns validity, discount percent, expiry. Free, no auth. |
Pricing
Tiers: Free (100 reads/day, 10 credits) | Pro $29/mo (1,000 credits/mo, 10,000/day) | Enterprise $99/mo (5,000 credits/mo, 100,000/day)
Volume discounts: $5–$99 = $0.04/call (25 credits/$1) · $100–$499 = $0.03 (33/$1, 25% off) · $500+ = $0.02 (50/$1, 50% off)
Platform wallets:
EVM (USDC/USDT):
0xAd982CB19aCCa2923Df8F687C0614a7700255a23Solana (USDC/USDT):
6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4YdrBitcoin:
bc1qg7qnerdhlmdn899zemtez5tcx2a2snc0dt9dt0
Supported payment chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin. Tokens sent on unsupported chains cannot be recovered. All purchases are final and non-refundable. Full pricing →
Handling rpc_failure Errors
If the API cannot reach one or more blockchain data sources after retries, endpoints that produce signed attestations (insumer_attest, insumer_trust, insumer_trust_batch) return ok: false with error code rpc_failure. No signature, no JWT, no credits charged. This is a retryable error — the MCP client should retry after a short delay (2-5 seconds).
Important: rpc_failure is NOT a verification failure. Do not treat it as pass: false. It means the data source was temporarily unavailable and the API refused to sign an unverified result.
Supported Chains (33)
30 EVM chains + Solana + XRP Ledger + Bitcoin. Includes Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, and 23 more. Full list →
Development
npm install
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsLicense
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/douglasborthwick-crypto/mcp-server-insumer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server