mcp-server-insumer
About
On-chain token verification across 31 blockchains. 16 tools for ECDSA-signed attestations, discount codes, merchant discovery, and autonomous onboarding.
Details
- Author
- douglasborthwick-crypto
- Categories
- Cloud Service, Other, Finance
Jump to
Setup
Install mcp-server-insumer in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/douglasborthwick-crypto/mcp-server-insumer
Follow the installation instructions in the repository README, then restart your MCP client.
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:AsterPay— a regulated payments stack — runs live ERC-8183 agentic-commerce trust scoring on InsumerAPI.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 38 chains, trust profiles, commerce protocols, and signature verification.
Add to yourclaude_desktop_config.json:
{ "mcpServers": { "insumer": { "command": "npx", "args": ["-y", "mcp-server-insumer"], "env": { "INSUMER_API_KEY": "insr_live_..." } } } }
{ "insumer": { "command": "npx", "args": ["-y", "mcp-server-insumer"], "env": { "INSUMER_API_KEY": "insr_live_..." } } }
Get a key — no signup, no dashboard, no password
Three paths, all give you a workinginsr_live_...key in seconds with 100 reads/day and 10 verification credits. One free key per email.
Option A — Let your agent do it:Start the server without a key. Your AI agent can call theinsumer_setuptool with your email to generate a free key instantly. Add it to your config and restart.
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"}'
Option C — Browser:Enter your email oninsumermodel.com— the key appears inline.
Set it asINSUMER_API_KEYin your config.
Already have a key?Manage usage, top up, or upgrade atinsumermodel.com/developers/account/.
Option D — Pay per call with x402 (no key at all)
Instead of a key, setINSUMER_PAYMENT_KEYto athrowaway Base walletfunded with a few dollars of USDC. Metered calls (insumer_attest,insumer_wallet_trust,insumer_batch_wallet_trust) are then paid inline viax402— the server requests a price, signs an EIP-3009 USDC authorization on Base, and retries. No signup, no credits, no dashboard.
{ "mcpServers": { "insumer": { "command": "npx", "args": ["-y", "mcp-server-insumer"], "env": { "INSUMER_PAYMENT_KEY": "0x<throwaway-wallet-private-key>" } } } }
- Base USDC only; the wallet needs USDC butno ETH(settlement is gasless).
- Each call spends a few cents (attest $0.05, trust $0.15). Use adedicated throwaway walletfunded with a small amount — never a wallet holding meaningful funds.
- If bothINSUMER_API_KEYandINSUMER_PAYMENT_KEYare set, the key (credits) is used.
When your agent callsinsumer_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 } }
Thesigis an ECDSA P-256 signature over{id, pass, results, attestedAt}. Thekididentifies which key signed it. TheconditionHashis 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 includeledgerIndex,ledgerHash(validated ledger hash), andtrustLineState: { frozen: boolean }instead ofblockNumber/blockTimestamp. Native XRP conditions includeledgerIndexandledgerHashbut nottrustLineState. Frozen trust lines causemet: false.
Addformat: "jwt"to theinsumer_attesttool parameters to receive the attestation as a standard JWT bearer token:
{ "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "conditions": [ ... ], "format": "jwt" }
The response includes an additionaljwtfield containing an ES256-signed JWT. This token is verifiable by any standard JWT library via the JWKS endpoint atGET /v1/jwks— making it compatible with Kong, Nginx, Cloudflare Access, AWS API Gateway, and other middleware that accepts JWT bearer tokens.
Your agent gets the attestation. Your application should verify it. Installinsumer-verify:
import { 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.
token_balancethresholds are decimal strings.Passthresholdas"100", not100. Keys created from 2026-06-10 sign withkid: insumer-attest-v2, which preserves full precision and rejects a JSON number with a400. Theinsumer_attesttool accepts a number or string and coerces to the canonical string; olderinsumer-attest-v1keys accept either.
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)
- EVM (USDC/USDT):0xAd982CB19aCCa2923Df8F687C0614a7700255a23
- Solana (USDC/USDT):6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4Ydr
- Bitcoin:bc1qg7qnerdhlmdn899zemtez5tcx2a2snc0dt9dt0
- Tron (USDT-TRC20):TC5yvwkAMakkXtUxYiu2Yn1xbBcwYuD6cn
Supported payment chains:Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin, Tron. Tokens sent on unsupported chains cannot be recovered. All purchases are final and non-refundable.Full pricing →
If the API cannot reach one or more blockchain data sources after retries, endpoints that produce signed attestations (insumer_attest,insumer_wallet_trust,insumer_batch_wallet_trust) returnok: falsewith error coderpc_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_failureis NOT a verification failure. Do not treat it aspass: false. It means the data source was temporarily unavailable and the API refused to sign an unverified result.
32 EVM chains + Solana + XRP Ledger + Bitcoin + Tron + Stellar + Sui. Includes Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, XDC, Robinhood Chain, and 23 more EVM.Full list →
- Claude Code Skill:smithery skill add douglasborthwick/insumer-skill(Smithery·GitHub) — forwritingwallet auth into your own projects from inside Claude Code. This MCP server gives an agent runtime access to the API; insumer-skill helps developers author integration code at build time. Different surfaces, same primitive.
- ElizaOS Plugin:@insumermodel/plugin-eliza(npm)
- LangChain (Python):pip install langchain-insumer(PyPI)
- OpenAI GPT:GPT Store
- Verifier (offline JWKS):npm install insumer-verify(npm)
npm install npm run build # Test with MCP Inspector npx @modelcontextprotocol/inspector node build/index.js
Interact with BNB Chain and other EVM-compatible networks using natural language and AI assistance.
MCP server for Base L2 DeFi operations with 9 monetized endpoints: gas estimates, yield farming, token analysis, contract audit, wallet health, DEX quotes, price feeds, mnemonic generation. Built with FastMCP Python SDK.
About MCP server for TRON blockchain — connect AI agents to TRX, TRC20, smart contracts, staking & governance via GoTRON SDK
Provides onchain tools for AI applications to interact with the Hashkey Network.
Integrates with the Hyperlane protocol for cross-chain messaging and smart contract interactions.
Deploy and manage compliant tokens from Claude, Cursor, or any AI agent — by typing a sentence.
An MCP server for interacting with Web3 and EVM-compatible chains.
Blockchain RPC via DRPC. Exposes eth_call, eth_getBalance, gas estimation, and other JSON-RPC methods as MCP tools across 100+ blockchains
Interact with the Solana blockchain using the Solana Agent Kit.
MCP to interface with multiple blockchains, staking, DeFi, swap, bridging, wallet management, DCA, Limit Orders, Coin Lookup, Tracking and more.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




