Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Wallet auth: send a wallet and conditions, get a signed boolean across 37 chains.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
INSUMER_API_KEY, INSUMER_PAYMENT_KEY, INSUMER_MAX_PAYMENT_USDC「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://api.insumermodel.com/mcpClaude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": [
"-y",
"mcp-server-insumer"
],
"env": {
"INSUMER_API_KEY": "your-value",
"INSUMER_PAYMENT_KEY": "your-value",
"INSUMER_MAX_PAYMENT_USDC": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add --transport http insumer https://api.insumermodel.com/mcpclaude mcp add insumer --env INSUMER_API_KEY=your-value --env INSUMER_PAYMENT_KEY=your-value --env INSUMER_MAX_PAYMENT_USDC=your-value -- npx -y mcp-server-insumer動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"insumer": {
"url": "https://api.insumermodel.com/mcp"
}
}
}プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": [
"-y",
"mcp-server-insumer"
],
"env": {
"INSUMER_API_KEY": "your-value",
"INSUMER_PAYMENT_KEY": "your-value",
"INSUMER_MAX_PAYMENT_USDC": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"insumer": {
"type": "http",
"url": "https://api.insumermodel.com/mcp"
}
}
}プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"insumer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-server-insumer"
],
"env": {
"INSUMER_API_KEY": "your-value",
"INSUMER_PAYMENT_KEY": "your-value",
"INSUMER_MAX_PAYMENT_USDC": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://api.insumermodel.com/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
INSUMER_MAX_PAYMENT_USDC envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
公開者(insumermodel.com)がリポジトリの所有者(insumerapi)ではありません。別の人が登録した可能性があります
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち0項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:INSUMER_API_KEY, INSUMER_PAYMENT_KEY
どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。
GitHubリポジトリの最終更新は–、最新バージョン(1.23.1)がレジストリに届いたのは8 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, DepTime
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
What changed in a Python library, in which release, and what replaces it. Answered locally.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
MCP server for InsumerAPI: 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, a non-custodial payments orchestrator settling through licensed EU partners, uses InsumerAPI attestations in its live ERC-8183 agentic-commerce trust checks. Case study.
Also available as: LangChain (26 tools, PyPI) | ElizaOS (10 actions, npm) | OpenAI GPT (GPT Store) | 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.
Add to your claude_desktop_config.json:
{
"mcpServers": { "insumer": { "command": "npx", "args": ["-y", "mcp-server-insumer"], "env": { "INSUMER_API_KEY": "insr_live_..." } } } }
Add to your MCP settings:
{
"insumer": { "command": "npx", "args": ["-y", "mcp-server-insumer"], "env": { "INSUMER_API_KEY": "insr_live_..." } } }
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.
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 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/.
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: 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 " } } } }
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.INSUMER_API_KEY and INSUMER_PAYMENT_KEY are set, the key (credits) is used.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.
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", "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": " ", "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.
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, 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.
Your agent gets the attestation. Your application should verify it. Install insumer-verify (also on PyPI for Python: pip install insumer-verify, same checks, same 27 published test vectors):
npm install insumer-verify
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.
| 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. |
| 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. |
`token_balance` thresholds are decimal strings. Pass
thresholdas"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.
| Tool | Description |
|---|
| `in
冒頭だけを表示しています。続きはリポジトリで読めます