项目介绍
MCP 服务 · 2026-11-09 更新 · 本站尚未实测
InsumerAPI MCP Server 是 InsumerAPI 的 Model Context Protocol(MCP)服务端实现。按 README 的描述,其定位是“condition-based access infrastructure”:发送一个钱包地址和一组条件,取回一个经过签名的布尔结果(真/假),且不暴露余额、不要求身份信息。
它面向支持 MCP 的客户端,README 点名了 Claude Desktop、Cursor、Windsurf,并称可用于任何 MCP 兼容客户端,让 AI Agent 在工作流中加入“基于链上条件的准入”能力。
需要区分:本项目是 MCP 服务端,不是通用 Agent 框架,也不是可下载的工作流文件。README 另列出 LangChain 包、ElizaOS 插件、OpenAI GPT 与 insumer-verify 验证库等“其他形态”,它们是不同交付物,不应与本仓库混为一谈。
核心能力
点击能力名称查看输入、输出和原文依据。
README 中工具表共列 27 个工具,主要分组如下:
- 设置与密钥:
insumer_setup用邮箱即时生成免费 API Key;insumer_jwks获取 JWKS 公钥。 - 链上验证:
insumer_attest验证代币余额、NFT 持有、EAS 证明、Farcaster 身份、EVM 视图调用等条件,返回带kid、conditionHash、区块信息的结果,可选 Merkle 证明。 - 钱包信任画像:
insumer_wallet_trust与批量版insumer_batch_wallet_trust(最多 10 个钱包),按多维检查生成带签名的画像。 - 发现类:商家目录、商家详情、代币目录、折扣试算。
- 信用与付费:查询余额、用 USDC 购买 Key 或积分、确认支付。
- 商家入驻:创建商家、配置代币/NFT 折扣、设置规则、发布到目录、域名验证。
- 商务协议:ACP 折扣、UCP 折扣、折扣码校验。
README 称每个 attest 与 trust 响应都做双重签名:ES256 与后量子 ML-DSA-65 签名,并可配合 insumer-verify 在本地核验。这些属于 README 声明,未由本编辑实测。
实际应用场景
适用场景
- 在 Agent 工作流中做链上“门槛判断”,例如满足某余额条件才继续;
- 生成钱包信任画像,供风控或准入参考;
- 商家侧发放带折扣的验证码,并在 ACP/UCP 格式中校验资格;
- 需要以 JWT 形式把验证结果交给网关类中间件的场景(README 称
format: "jwt"时返回 ES256 JWT)。
是否适合你的业务,取决于你是否在 InsumerAPI 支持的链上持有资产,以及是否接受向第三方 API 提交钱包地址。
安装与接入
README 给出两种接入方式,请以原文为准:
- 本地运行 npm 包:在 Claude Desktop 的
claude_desktop_config.json,或 Cursor/Windsurf 的 MCP 设置中加入npx -y mcp-server-insumer,并通过环境变量INSUMER_API_KEY传入形如insr_live_...的 Key。 - 托管端点:同一服务运行在
https://api.insumermodel.com/mcp(streamable HTTP),粘贴 URL 即可,无需安装,适合 ChatGPT 插件、claude.ai 自定义连接器等无法运行 npm 包的客户端。据 README,托管端点为共享匿名服务,只提供无需调用者身份的部分工具,计量工具共用免费日额度。
获取 Key 的路径 README 列出三种:让 Agent 调 insumer_setup、终端 curl 调用建 Key 接口、浏览器在 insumermodel.com 输入邮箱。另有第四种:不设 API Key,改为设置 INSUMER_PAYMENT_KEY 为小额 Base 钱包私钥,通过 x402 按次付费。
自托管:README 说明可自行构建后运行 node build/http.js 并设置 INSUMER_API_KEY。
使用条件与限制
- 是否需要部署
- 需自行准备运行环境,具体要求见正文
- 是否需要注册
- 账号和认证要求见正文;未明确说明的项目仍待核验
- 是否需要 API Key
- 待核验
- 费用与额度
- 费用边界见正文,项目许可不代表模型或托管服务免费
- 所需权限
- 待核验
- 许可证与服务条款
- 待核验
权限费用与限制
- 计价按 README:免费档含 10 次免费验证与每日 100 次请求;Pro 29 美元/月(1,000 积分/月);Enterprise 99 美元/月(5,000 积分/月)。价格与额度以 README 为准,实际以官方页面核验。
- 各工具扣费不同:attest 1 积分,Merkle 证明 2 积分,钱包信任 3 积分(带 Merkle 6 积分),批量按每钱包计。
- 购买 Key 与积分仅接受 USDC,且不可退款;USDT 及其他代币不予入账。x402 模式每次调用仅支持 Base 链 USDC,默认单次上限 3.00 美元,最低扣费 0.05 美元。
- 私钥风险:
INSUMER_PAYMENT_KEY是钱包私钥,README 明确要求使用专用的一次性钱包,切勿使用存有大额资金的钱包。 - 隐私边界:README 称不暴露余额与金额,只返回签名后的真假;但钱包地址仍需提交给 InsumerAPI 服务。
rpc_failure不是验证失败,README 要求客户端按可重试错误处理,不要当作pass: false。- README 提到
token_balance阈值需用十进制字符串、某些 Key 对 JSON 数字返回 400,属接口约束。
国内使用情况
网友核验 用户经验分享
与站长实测独立,不代表官方认证或本站已实测。
最近核验:暂无有效核验。参与人数按当前项目有效身份去重;不同核验项分别统计,不合并成用户总结果。仅统计审核通过且未过期的记录。
分项统计、有效期与样本量
| 核验项目 | 有效人数 | 成功 / 部分 / 失败 / 无法判断 | 成功率 | 最近核验 / 有效期 |
|---|---|---|---|---|
| 官方网站访问 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| GitHub 仓库访问 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| 安装与运行 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 官方服务国内连接 / MCP 连接 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 国内网络情况 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| 国内模型兼容性 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 自定义 API | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 海外服务依赖 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 海外账号要求 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 中文界面 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 客户端兼容性 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 账号及费用信息 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
成功率 = 成功 ÷(成功 + 部分成功 + 失败);无法判断不计入分母。至少 5 份可判断结果才显示成功率。账号、费用、海外依赖与语言等事实项,成功表示核查结论与资料吻合,具体观察另行统计;不表示免费或没有海外依赖。不同网络、客户端和版本的结果不能直接等同。
最近有效核验
暂无审核通过且未过期的网友核验。欢迎提交真实使用记录。
查看全部有效核验 →国内实测状态:国内可用性待核验。协议兼容和官方资料说明不等于国内网络可用。
- 官方网站访问
- 尚未实测 待核验
- GitHub 仓库访问
- 尚未实测 待核验
- 官方服务国内连接
- 尚未实测 待核验
- 国内网络情况
- 尚未实测 待核验
- 国内模型兼容性
- 尚未实测 待核验
- 自定义 API
- 尚未实测 待核验
- 海外服务依赖
- 尚未实测 待核验
- 海外账号要求
- 尚未实测 待核验
- 中文界面
- 尚未实测 待核验
- 国内最后核验时间
- 尚未实测
许可与国内使用
仓库 LICENSE 文件为 MIT,版权标注 2026 Douglas Borthwick;README 亦标注 MIT。MIT 只覆盖本仓库代码,不覆盖 InsumerAPI 托管服务、付费额度、链上数据源及可能的第三方组件,这些的条款与费用需另行核验。
README 未说明服务部署地域、中国大陆网络可访问性、是否提供中文界面或国内支付方式。上述内容待核验。使用前建议确认向境外 API 提交钱包地址的合规性,以及所在地区对加密资产相关服务的监管要求。
项目资料与来源
字段依据与待核验事项
access:来源确认 · Add to your `claude_desktop_config.json`:
project_type:来源确认 · MCP server for [InsumerAPI](https://insumermodel.com/developers/): condition-based access infrastructure.
原始 README(折叠技术参考)
# mcp-server-insumer
[](https://www.npmjs.com/package/mcp-server-insumer) [](https://github.com/insumerapi/mcp-server-insumer/blob/main/LICENSE) [](https://glama.ai/mcp/servers/insumerapi/mcp-server-insumer) [](https://opensource.org/licenses/MIT)
MCP server for [InsumerAPI](https://insumermodel.com/developers/): condition-based access infrastructure. Send a wallet and conditions, get a signed boolean across 37 chains. No balances exposed, no identity required. Every result is signed and checkable offline against the published keys, and on EVM chains an optional Merkle proof lets the verifier check the balance against the block header without trusting the API.
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](https://github.com/AsterPay/erc8183-kya-hook), a non-custodial payments orchestrator settling through licensed EU partners, uses InsumerAPI attestations in its live ERC-8183 agentic-commerce trust checks. [Case study](https://insumermodel.com/blog/asterpay-kya-erc8183-attestation-integration.html).
Also available as: [LangChain](https://pypi.org/project/langchain-insumer/) (26 tools, PyPI) | [ElizaOS](https://www.npmjs.com/package/@insumermodel/plugin-eliza) (10 actions, npm) | [OpenAI GPT](https://chatgpt.com/g/g-699c5e43ce2481918b3f1e7f144c8a49-insumerapi-wallet-auth) (GPT Store) | [insumer-verify](https://www.npmjs.com/package/insumer-verify) (client-side verification, npm)
**[Full AI Agent Verification API guide](https://insumermodel.com/ai-agent-verification-api/)**: covers all 37 chains, trust profiles, commerce protocols, and signature verification.
## Quick Start
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}
}
```
### Cursor / Windsurf
Add to your MCP settings:
```json
{
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}
```
### Get a key: just an email, no dashboard, no password
Three paths, all give you a working `insr_live_...` key in seconds with 10 free verifications plus 100 requests a day. One free key per email.
**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.**
```bash
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 on [insumermodel.com](https://insumermodel.com/?utm_source=npm-mcp-server-insumer) and the key appears inline.
Set it as `INSUMER_API_KEY` in your config.
**Already have a key?** Manage usage, top up, or upgrade at [insumermodel.com/developers/account/](https://insumermodel.com/developers/account/?utm_source=npm-mcp-server-insumer).
### Option D: pay per call with x402 (no key at all)
Instead of a key, set `INSUMER_PAYMENT_KEY` to a **throwaway Base wallet** funded with a few dollars of USDC. Metered calls (`insumer_attest`, `insumer_wallet_trust`, `insumer_batch_wallet_trust`) are then paid inline via [x402](https://www.x402.org): the server requests a price, signs an EIP-3009 USDC authorization on Base, and retries. No signup, no credits, no dashboard.
```json
{
"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 but **no ETH** (settlement is gasless).
- Each call spends a few cents (attest $0.05, trust $0.15). Use a **dedicated throwaway wallet** funded with a small amount, never a wallet holding meaningful funds.
- **Every quote is checked before the wallet signs.** The server pays only InsumerAPI's own receiving address (`0xee432065474D2C852700f74e3fD81e2Bcc16a3D4`, or the address it quoted before 2026-10-19, `0xAd982CB19aCCa2923Df8F687C0614a7700255a23`), only in USDC on Base, and never more than the cap: **$3.00 per call by default**, the price of the largest call today (a 10-wallet trust batch with Merkle proofs). Anything else is refused and nothing is signed. Set `INSUMER_MAX_PAYMENT_USDC` to change the cap, e.g. `"0.25"` if you only attest. The cheapest call is $0.05, so a cap below that refuses every paid call (the server warns at startup). A malformed value turns pay-per-call off rather than falling back to the default.
- If both `INSUMER_API_KEY` and `INSUMER_PAYMENT_KEY` are set, the key (credits) is used.
## Hosted endpoint (no install)
The same server runs at **`https://api.insumermodel.com/mcp`** over MCP streamable HTTP, for clients that connect by URL: ChatGPT plugins and developer-mode connectors, claude.ai custom connectors, and hosted agent platforms that cannot run an npm package. Paste the URL; there is nothing to configure.
It is shared and anonymous, so it serves the ten tools that make sense without a caller identity (`HOSTED_TOOLS`: signing keys, attest, compliance templates, wallet trust and batch trust, the merchant and token directories, the free discount check, code validation), and the metered tools share one free daily allowance. Past it, a call is refused with a pointer here. For your own allowance, key and credit management, or the merchant tools, run the package locally with your key as above.
To host the server yourself, build it and run `node build/http.js` with `INSUMER_API_KEY` set (`PORT`, `INSUMER_HOSTED_TOOLS` and `INSUMER_DAILY_CAP` are optional), or embed it: `createInsumerServer(options)` from the package root returns a configured server for any transport.
## What You Get Back
When your agent calls `insumer_attest`, you get an ECDSA-signed attestation:
```json
{
"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",
"operator": "gte",
"threshold": "1000",
"type": "token_balance"
},
"conditionHash": "0x8a3b...",
"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": "NgA7BO8SAildiTrgIQY2UyXsBrySZknkP85pT2Zqv8Hq0KsCsB8DRFVMkXgnXtCXrbb726Is6k4LyyBYU+f/Pw==",
"kid": "insumer-attest-v2",
"pqSig": "<base64 ML-DSA-65 signature>",
"pqKid": "insumer-attest-pq1"
},
"meta": {
"version": "1.0",
"timestamp": "2026-02-28T12:34:57.000Z",
"creditsRemaining": 99,
"creditsCharged": 1
}
}
```
The `sig` is an ECDSA P-256 signature (base64, P1363 r||s, 88 characters). The `kid` identifies the key and selects the signed bytes: `insumer-attest-v2` signs `"insumer.attestation.v2\n" + canonical_json({v: 2, id, pass, results, attestedAt})` (keys sorted at every level); `insumer-attest-v1` signs the bare `JSON.stringify` of `{id, pass, results, attestedAt}` in insertion order. Every attest and trust response is signed twice: ES256 and a post-quantum ML-DSA-65 signature, `pqSig` and `pqKid` (over the post-quantum domain tag plus the same classical preimage the `kid` selects; `pqJwt` beside `jwt`), added beside `sig` and `kid` without changing them. 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:
```json
{
"wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"conditions": [ ... ],
"format": "jwt"
}
```
The response includes an additional `jwt` field containing an ES256-signed JWT, and beside it a `pqJwt` sibling (a compact JWS with `alg` ML-DSA-65 carrying the same claims, signed under `insumer-attest-pq1`). The `jwt` token is verifiable by any standard JWT library via the JWKS endpoint at `GET /v1/jwks`, which makes 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](https://www.npmjs.com/package/insumer-verify) (also on [PyPI](https://pypi.org/project/insumer-verify/) for Python: `pip install insumer-verify`, same checks, same 27 published test vectors):
```bash
npm install insumer-verify
```
```typescript
import { verifyAttestation } from "insumer-verify";
// attestationResponse = the full API envelope {ok, data: {attestation, sig, kid, pqSig, pqKid}, 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 reports five independent verdicts: ECDSA signature, condition hash integrity, block freshness, attestation expiry, and the post-quantum signature (`insumer-verify` 1.8.1+ reports it as verified, refuted, absent, or unverifiable). Zero runtime dependencies, uses Web Crypto API.
## Tools (27)
### Setup (free, no auth)
| Tool | Description |
|------|-------------|
| `insumer_setup` | Generate a free API key instantly. Takes an email, returns an `insr_live_...` key with 10 free verifications plus 100 requests a day. No credit card required. |
### Key Discovery (free)
| Tool | Description |
|------|-------------|
| `insumer_jwks` | Get the JWKS: five entries over two keys. The ECDSA P-256 key under `insumer-attest-v1`, `insumer-attest-v2`, and `insumer-trust-v2`, followed by the ML-DSA-65 post-quantum key under two RFC 9964 `AKP` entries, `insumer-attest-pq1` and `insumer-trust-pq1`. Match by the `kid` (or `pqKid`) on the response, never by position. |
### On-Chain Verification (cost credits)
> **`token_balance` thresholds are decimal strings.** Pass `threshold` as `"100"`, not `100`. Keys created from 2026-06-10 sign with `kid: insumer-attest-v2`, which preserves full precision and rejects a JSON number with a `400`. The `insumer_attest` tool accepts a number or string and coerces to the canonical string; older `insumer-attest-v1` keys accept either.
| Tool | Description |
|------|-------------|
| `insumer_attest` | Verify on-chain conditions (token balances, NFT ownership, EAS attestations, Farcaster identity, `evm_view_call` for arbitrary boolean view functions, `ratio_to_amount` for self-scaling agent-spend limits and `ratio_to_supply` for share-of-supply rules; all three EVM only, plus `erc8004_agent` for ERC-8004 agent registration and `erc7710_delegation` for MetaMask-framework delegation validity, both on Base, and `account_code` for the code state of the wallet address itself on an EVM chain: `expect` is `none` for a plain key account, `eip7702` for an EIP-7702 delegation designator, optionally to a given `delegate`, or `contract` for any other code; the answer is met or not met, and the code and the delegation target are never returned). Returns ECDSA-signed boolean with `kid`, `evaluatedCondition`, `conditionHash` (SHA-256), and `blockNumber`/`blockTimestamp`. 1 credit. Optional `proof: "merkle"` for EIP-1186 Merkle proofs (2 credits): a balance-slot storage proof for token balances, an account proof (subject `account_balance`) for the native coin, an account proof (subject `account_code`) for `account_code`, and a revocation-slot proof (subject `delegation_revocation`) for `erc7710_delegation`. |
| `insumer_compliance_templates` | List available EAS compliance templates (Coinbase Verifications on Base, Gitcoin Passport on Optimism). Free. |
| `insumer_wallet_trust` | Generate ECDSA-signed wallet trust fact profile. 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 optional Solana, XRPL, Bitcoin, and Tron wallets (Stellar and Sui wallets switch on rows inside the base dimensions). Every check is a presence check; the account dimension's two rows per chain (contract code, EIP-7702 delegation, on Ethereum, Base, Arbitrum, Optimism and Polygon) are present or not present. Dimensions arrive in a fixed order: the base dimensions as listed, then any of solana, xrpl, bitcoin and tron that were switched on. The signed `conditionSetVersion` (currently `2026-10-08`) names the check list; log it, never reject on it. 3 credits (6 with merkle; the premium is refunded whenever no proof is delivered). |
| `insumer_batch_wallet_trust` | Batch trust profiles for up to 10 wallets. Each wallet object supports optional `solanaWallet`, `xrplWallet`, `bitcoinWallet`, `tronWallet`, `stellarWallet`, and `suiWallet`. Faster than sequential calls. Partial success supported. 3 credits/wallet (6 with merkle). The text is a per-wallet summary by default (dimensions in their fixed order, identical for every wallet; the account dimension's checks are present rather than held) and the complete signed profiles are in `structuredContent`; `detail: "full"` puts them in the text too (set it on the call: profiles cannot be fetched again). |
| `insumer_verify` | Create signed discount code (INSR-XXXXX, 30-min expiry) for a wallet at a merchant. A code that carries a discount costs 1 credit from the API key that owns the store; a 0% result is free. A caller using another key is not charged. Optional `walletProof` proves you control the EVM wallet: full discount, no daily limit. |
### Discovery (free)
| Tool | Description |
|------|-------------|
| `insumer_list_merchants` | Browse the merchant directory. Filter by token, verification status. |
| `insumer_get_merchant` | Get full public merchant profile. |
| `insumer_list_tokens` | List the tokens and NFTs listed in the Insumer registry. Filter by chain, symbol, type. A directory, not the list of what can be checked: an attestation checks any token on a supported chain, and NFTs on EVM chains, Solana and XRPL. |
| `insumer_check_discount` | Calculate discount for a wallet at a merchant. |
### Credits & Keys
| Tool | Description |
|------|-------------|
| `insumer_buy_key` | Buy a new API key with USDC (no auth required). Agent-friendly: no email needed, the sending wallet becomes the key's identity and signs a fixed text naming the payment (`senderSignature`; a call without it returns the text). One key per wallet. `amount` required, minimum $5. Volume discounts: $0.04–$0.02/call. Supported chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana. Non-refundable. |
| `insumer_credits` | Check credit balance and tier. |
| `insumer_buy_credits` | Buy verification credits with USDC. `amount` required, minimum $5. Volume discounts: $0.04–$0.02/call. Supported chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana. Non-refundable. First purchase registers the sending wallet; subsequent purchases must come from it or include `updateWallet: true`. Registering or replacing the wallet takes `senderSignature` from the wallet that sent the payment. |
| `insumer_confirm_payment` | Confirm USDC payment for a discount code. |
### Merchant Onboarding (owner-only)
| Tool | Description |
|------|-------------|
| `insumer_create_merchant` | Create new merchant, owned by the key that creates it. No balance of its own: that key pays for its codes, scans and taps. |
| `insumer_merchant_status` | Get full private merchant details. |
| `insumer_configure_tokens` | Set token discount tiers. Tier discounts are whole numbers from 1 to 50. Tokens can carry a display `name` and `logo`; the own token takes `enabled`. |
| `insumer_configure_nfts` | Set NFT collections: a whole-number discount from 1 to 50, or `benefitType: "recognition"` for recognition only. `enabled: false` keeps a collection switched off. |
| `insumer_configure_settings` | Set discount mode, cap, the terms for wallets without proof of control, USDC payments. |
| `insumer_publish_directory` | Publish merchant to public directory. |
| `insumer_buy_merchant_credits` | Kept for compatibility. A store has no balance of its own: a USDC payment submitted here adds regular credits to the API key that owns the store, at a flat 25 credits per $1 (`insumer_buy_credits` has the volume tiers). `amount` required, minimum $5. Owner only. Non-refundable. First purchase registers the sending wallet; subsequent purchases must come from it or include `updateWallet: true`. Registering or replacing the wallet takes `senderSignature` from the wallet that sent the payment. |
### Domain Verification (owner-only)
| Tool | Description |
|------|-------------|
| `insumer_request_domain_verification` | Request a verification token for a merchant's domain. Returns token and 3 methods (DNS TXT, meta tag, file upload). |
| `insumer_verify_domain` | Complete domain verification after placing the token. Verified merchants get a trust badge. |
### Commerce Protocol Integration
| Tool | Description |
|------|-------------|
| `insumer_acp_discount` | Check discount eligibility in OpenAI/Stripe ACP format. Returns coupon objects and per-item allocations. A code that carries a discount costs the store's owner key 1 credit; a 0% result is free. A caller using another key is not charged. |
| `insumer_ucp_discount` | Check discount eligibility in Google UCP format. Returns title, extension field, and applied array. A code that carries a discount costs the store's owner key 1 credit; a 0% result is free. A caller using another key is not charged. |
| `insumer_validate_code` | Validate an INSR-XXXXX discount code. Returns validity, discount percent, expiry. Free, no auth. |
## Pricing
**Tiers:** Free (10 free verifications plus 100 requests a day) | 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)
**Key and credit purchases are paid in USDC only.** Receiving addresses:
- **USDC on Ethereum, Base, Polygon, Arbitrum, Optimism or Avalanche:** `0xee432065474D2C852700f74e3fD81e2Bcc16a3D4`
- **USDC on BNB Chain:** `0xAd982CB19aCCa2923Df8F687C0614a7700255a23` (USDC sent to it on the other EVM chains is also accepted during the changeover)
- **USDC on Solana:** `8fyEGM5tRjMocKQWaVXyM2XvvnTxR3sWdrYtug2zeLX4` (USDC sent to `6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4Ydr` is also accepted during the changeover)
**Supported payment chains:** Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana. USDT and other tokens are refused and not credited; tokens sent on unsupported chains cannot be recovered. All purchases are final and non-refundable. [Full pricing →](https://insumermodel.com/pricing/)
**Sender signature.** A purchase that binds a key to a wallet (every key purchase, a credit purchase on a key with no registered wallet, or `updateWallet: true` from a different wallet) takes `senderSignature`: the wallet that sent the payment signs this exact text, five lines joined by `\n` with no trailing newline:
```
api.insumermodel.com
Confirm the wallet that sent this payment.
Purpose: key purchase
Chain: eip155:8453
Transaction: 0x<transaction hash, lowercase hex>
```
`Purpose` is `credit purchase` for a credit purchase; `Chain` is `eip155:<chainId>` on an EVM chain or `solana` (with the Solana signature as given). Call once without `senderSignature` and the 400 returns the exact text. EVM wallets sign with `personal_sign` (EIP-191, 0x hex; smart wallets are checked with ERC-1271); Solana wallets sign with `signMessage` (ed25519, base58 or base64). A 403 means the signature is not from the wallet that sent the payment; a 503 means a smart-wallet check could not complete and the payment was not used.
## Handling `rpc_failure` Errors
If the API cannot reach one or more blockchain data sources after retries, `insumer_attest`, `insumer_wallet_trust`, `insumer_verify`, `insumer_acp_discount`, `insumer_ucp_discount` and `insumer_check_discount` return `ok: false` with error code `rpc_failure`. No signature, no JWT, no credits charged. `insumer_batch_wallet_trust` answers normally and carries an `error` entry for any wallet whose reads did not complete, beside the wallets that were signed. 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 (37)
31 EVM chains + Solana + XRP Ledger + Bitcoin + Tron + Stellar + Sui. Includes Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, XDC, Robinhood Chain, Arc, and 21 more EVM. [Full list →](https://insumermodel.com/developers/api-reference/)
## Also Available As
- **Claude Code Skill:** `git clone https://github.com/insumerapi/insumer-skill.git ~/.claude/skills/insumer` ([GitHub](https://github.com/insumerapi/insumer-skill) · [Smithery](https://smithery.ai/skills/douglasborthwick/insumer-skill)), for *writing* wallet 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](https://www.npmjs.com/package/@insumermodel/plugin-eliza))
- **LangChain (Python):** `pip install langchain-insumer` ([PyPI](https://pypi.org/project/langchain-insumer/))
- **OpenAI GPT:** [InsumerAPI Wallet Auth](https://chatgpt.com/g/g-699c5e43ce2481918b3f1e7f144c8a49-insumerapi-wallet-auth) (GPT Store)
- **Verifier (offline JWKS):** `npm install insumer-verify` ([npm](https://www.npmjs.com/package/insumer-verify), [source](https://github.com/insumerapi/insumer-verify))
## Development
```bash
npm install
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js
```
## License
MIT
---
历史前置条件说明(补充参考)
Node.js 与 npx(README 使用 npx 启动,具体最低版本待核验);MCP 兼容客户端(README 点名 Claude Desktop、Cursor、Windsurf 等);InsumerAPI Key(INSUMER_API_KEY)或用于 x402 按次付费的 Base 链钱包私钥(INSUMER_PAYMENT_KEY,须为一次性小额钱包);付费功能需 USDC 支付,费用与额度以官方定价页核验;依赖境外 HTTPS 服务 api.insumermodel.com,国内可访问性待核验。
项目来源与清单版权许可
https://github.com/douglasborthwick-crypto/mcp-server-insumer
https://github.com/douglasborthwick-crypto/langchain-insumer
整理来源:https://github.com/slavakurilyak/awesome-ai-agents
清单版权与许可:
MIT License
Copyright (c) 2024 Slava Kurilyak
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.