mcp-server-insumer
Verificación de tokens en cadena a través de 31 blockchains. 16 herramientas para atestaciones firmadas con ECDSA, códigos de descuento, descubrimiento de comerciantes y registro autónomo.
Documentación
mcp-server-insumer
Servidor MCP para InsumerAPI: infraestructura de acceso basado en condiciones. Envía una wallet y condiciones, recibe un booleano firmado en 37 cadenas. Sin exposición de saldos, sin identidad requerida. Cada resultado está firmado y es verificable offline contra las claves publicadas, y en cadenas EVM una prueba Merkle opcional permite al verificador comprobar el saldo contra el encabezado del bloque sin confiar en la API.
Permite a agentes de IA (Claude Desktop, Cursor, Windsurf y cualquier cliente compatible con MCP) añadir acceso basado en condiciones a cualquier flujo de trabajo: verificar condiciones on-chain, descubrir comercios, generar códigos de descuento firmados e incorporar nuevos comercios.
En producción: AsterPay — una plataforma de pagos regulada — ejecuta puntuación de confianza de comercio agéntico ERC-8183 en vivo sobre InsumerAPI. Caso de estudio.
También disponible como: LangChain (26 herramientas, PyPI) | ElizaOS (10 acciones, npm) | OpenAI GPT (GPT Store) | insumer-verify (verificación del lado del cliente, npm)
Guía completa de la API de verificación para agentes de IA: cubre las 37 cadenas, perfiles de confianza, protocolos de comercio y verificación de firmas.
Inicio rápido
Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}
}
Cursor / Windsurf
Añade a tu configuración de MCP:
{
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": {
"INSUMER_API_KEY": "insr_live_..."
}
}
}
Obtén una clave — sin registro, sin panel, sin contraseña
Tres vías, todas te dan una clave insr_live_... funcional en segundos con 100 lecturas/día y 10 créditos de verificación. Una clave gratuita por correo electrónico.
Opción A — Deja que tu agente lo haga: Inicia el servidor sin clave. Tu agente de IA puede llamar a la herramienta insumer_setup con tu correo para generar una clave gratuita al instante. Añádela a tu configuración y reinicia.
Opción 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"}'
Opción C — Navegador: Introduce tu correo en insumermodel.com — la clave aparece en línea.
Establécelo como INSUMER_API_KEY en tu configuración.
¿Ya tienes una clave? Gestiona el uso, recarga o mejora tu plan en insumermodel.com/developers/account/.
Opción D — Pago por llamada con x402 (sin clave)
En lugar de una clave, establece INSUMER_PAYMENT_KEY a una wallet Base desechable financiada con unos pocos dólares en USDC. Las llamadas medidas (insumer_attest, insumer_wallet_trust, insumer_batch_wallet_trust) se pagan en línea mediante x402 — el servidor solicita un precio, firma una autorización USDC EIP-3009 en Base y reintenta. Sin registro, sin créditos, sin panel.
{
"mcpServers": {
"insumer": {
"command": "npx",
"args": ["-y", "mcp-server-insumer"],
"env": { "INSUMER_PAYMENT_KEY": "0x<throwaway-wallet-private-key>" }
}
}
}
- Solo USDC en Base; la wallet necesita USDC pero no ETH (la liquidación es sin gas).
- Cada llamada cuesta unos céntimos (atestación $0.05, confianza $0.15). Usa una wallet desechable dedicada financiada con una cantidad pequeña — nunca una wallet con fondos significativos.
- Si tanto
INSUMER_API_KEYcomoINSUMER_PAYMENT_KEYestán establecidos, se usa la clave (créditos).
Lo que recibes
Cuando tu agente llama a insumer_attest, recibes una atestación firmada con ECDSA:
{
"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
}
}
El sig es una firma ECDSA P-256 (base64, P1363 r||s, 88 caracteres). El kid identifica la clave y selecciona los bytes firmados: insumer-attest-v2 firma "insumer.attestation.v2\n" + canonical_json({v: 2, id, pass, results, attestedAt}) (claves ordenadas en cada nivel); insumer-attest-v1 firma el JSON.stringify puro de {id, pass, results, attestedAt} en orden de inserción. Desde 2026-09-01 cada respuesta de atestación y confianza también incluye un acompañante post-cuántico, pqSig y pqKid (ML-DSA-65 sobre la etiqueta de dominio post-cuántica más la misma preimagen clásica que selecciona el kid), añadido junto a sig y kid sin modificarlos. El conditionHash es un SHA-256 de la lógica de condición exacta que se evaluó.
Sin saldos. Sin cantidades. Solo un verdadero/falso firmado criptográficamente.
Para condiciones XRPL, los resultados incluyen ledgerIndex, ledgerHash (hash de ledger validado) y trustLineState: { frozen: boolean } en lugar de blockNumber/blockTimestamp. Las condiciones XRP nativas incluyen ledgerIndex y ledgerHash pero no trustLineState. Las líneas de confianza congeladas causan met: false.
Autenticación de wallet (JWT)
Añade format: "jwt" a los parámetros de la herramienta insumer_attest para recibir la atestación como un token portador JWT estándar:
{
"wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"conditions": [ ... ],
"format": "jwt"
}
La respuesta incluye un campo adicional jwt que contiene un JWT firmado con ES256, y junto a él un hermano pqJwt (un JWS compacto con alg ML-DSA-65 que lleva las mismas reclamaciones, firmado bajo insumer-attest-pq1). El token jwt es verificable por cualquier biblioteca JWT estándar mediante el endpoint JWKS en GET /v1/jwks — lo que lo hace compatible con Kong, Nginx, Cloudflare Access, AWS API Gateway y otro middleware que acepte tokens portadores JWT.
Verifica la respuesta
Tu agente recibe la atestación. Tu aplicación debe verificarla. Instala insumer-verify:
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);
}
Esto reporta cinco veredictos independientes: firma ECDSA, integridad del hash de condición, frescura del bloque, caducidad de la atestación y el acompañante post-cuántico (insumer-verify 1.8.1+ lo reporta como verificado, refutado, ausente o no verificable). Cero dependencias en tiempo de ejecución, usa Web Crypto API.
Herramientas (27)
Configuración (gratis, sin autenticación)
| Herramienta | Descripción |
|---|---|
insumer_setup | Genera una clave API gratuita al instante. Toma un correo, devuelve una clave insr_live_... con 10 créditos. Sin tarjeta de crédito. |
Descubrimiento de claves (gratis)
| Herramienta | Descripción |
|---|---|
insumer_jwks | Obtén el JWKS: cinco entradas sobre dos claves. La clave ECDSA P-256 bajo insumer-attest-v1, insumer-attest-v2 y insumer-trust-v2, seguida de la clave post-cuántica ML-DSA-65 bajo dos entradas AKP RFC 9964, insumer-attest-pq1 y insumer-trust-pq1. Coincide por el kid (o pqKid) en la respuesta, nunca por posición. |
Verificación on-chain (cuesta créditos)
Los umbrales
token_balanceson cadenas decimales. Pasathresholdcomo"100", no como100. Las claves creadas desde 2026-06-10 firman conkid: insumer-attest-v2, que preserva la precisión completa y rechaza un número JSON con un400. La herramientainsumer_attestacepta un número o cadena y lo convierte a la cadena canónica; las clavesinsumer-attest-v1más antiguas aceptan cualquiera.
| Herramienta | Descripción |
|---|---|
insumer_attest | Verifica condiciones on-chain (saldos de tokens, propiedad de NFTs, atestaciones EAS, identidad Farcaster, evm_view_call para funciones de vista booleanas arbitrarias, ratio_to_amount para límites de gasto de agente autoescalables y ratio_to_supply para reglas de participación en el suministro — las tres solo RPC EVM, más erc8004_agent para registro de agentes ERC-8004 y erc7710_delegation para validez de delegación del marco MetaMask, ambas en Base). Devuelve booleano firmado con ECDSA con kid, evaluatedCondition, conditionHash (SHA-256) y blockNumber/blockTimestamp. 1 crédito. proof: "merkle" opcional para pruebas de almacenamiento Merkle EIP-1186 (2 créditos). |
insumer_compliance_templates | Lista las plantillas de cumplimiento EAS disponibles (Verificaciones de Coinbase en Base, Gitcoin Passport en Optimism). Gratis. |
insumer_wallet_trust | Genera perfil de hechos de confianza de wallet firmado con ECDSA. 45 comprobaciones base en 26 cadenas en 5 dimensiones (stablecoins, gobernanza, NFTs, staking, stablecoins institucionales — EURCV/USDCV/USDC/BENJI en Ethereum, Solana, XRPL, Stellar, Sui), hasta 50 comprobaciones en 28 cadenas en 9 dimensiones con wallets opcionales de Solana, XRPL, Bitcoin y Tron. 3 créditos (6 con merkle). |
insumer_batch_wallet_trust | Perfiles de confianza por lotes para hasta 10 wallets. Cada objeto de wallet admite solanaWallet, xrplWallet, bitcoinWallet, tronWallet, stellarWallet y suiWallet opcionales. Obtención de bloques compartida, 5-8 veces más rápido. Éxito parcial admitido. 3 créditos/wallet (6 con merkle). |
insumer_verify | Crea código de descuento firmado (INSR-XXXXX, caducidad de 30 min) para una wallet en un comercio. 1 crédito de comercio. |
Descubrimiento (gratis)
| Herramienta | Descripción |
|---|---|
insumer_list_merchants | Explora el directorio de comercios. Filtra por token, estado de verificación. |
insumer_get_merchant | Obtén el perfil público completo del comercio. |
insumer_list_tokens | Lista todos los tokens y NFTs registrados. Filtra por cadena, símbolo, tipo. |
insumer_check_discount | Calcula el descuento para una wallet en un comercio. |
Créditos y claves
| Herramienta | Descripción |
|---|---|
insumer_buy_key | Compra una nueva clave API con USDC, USDT, BTC o USDT-TRC20 (sin autenticación). Amigable para agentes: sin correo necesario, la wallet remitente se convierte en la identidad de la clave. Una clave por wallet. Descuentos por volumen: $0.04–$0.02/llamada. Cadenas admitidas: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin, Tron. No reembolsable. |
insumer_credits | Consulta el saldo de créditos y el nivel. |
insumer_buy_credits | Compra créditos de verificación con USDC, USDT, BTC o USDT-TRC20. Descuentos por volumen: $0.04–$0.02/llamada. Cadenas admitidas: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin, Tron. No reembolsable. La primera compra registra la wallet remitente; las compras posteriores deben coincidir o incluir updateWallet: true. |
insumer_confirm_payment | Confirma el pago en USDC para un código de descuento. |
Incorporación de comercios (solo propietario)
| Herramienta | Descripción |
|---|---|
insumer_create_merchant | Crea un nuevo comercio. Recibe 100 créditos gratuitos. |
insumer_merchant_status | Obtén los detalles privados completos del comercio. |
insumer_configure_tokens | Establece niveles de descuento por token. |
insumer_configure_nfts | Establece descuentos para colecciones de NFTs. |
insumer_configure_settings | Establece modo de descuento, límite, pagos USDC. |
insumer_publish_directory | Publica el comercio en el directorio público. |
insumer_buy_merchant_credits | Compra créditos de verificación de comercio con USDC, USDT, BTC o USDT-TRC20. Descuentos por volumen: $0.04–$0.02/llamada. Solo propietario. No reembolsable. La primera compra registra la wallet remitente; las compras posteriores deben coincidir o incluir updateWallet: true. |
Verificación de dominio (solo propietario)
| Herramienta | Descripción |
|---|---|
insumer_request_domain_verification | Solicita un token de verificación para el dominio de un comercio. Devuelve el token y 3 métodos (TXT de DNS, metaetiqueta, subida de archivo). |
insumer_verify_domain | Completa la verificación de dominio después de colocar el token. Los comercios verificados obtienen una insignia de confianza. |
Integración de protocolo de comercio
| Herramienta | Descripción |
|---|---|
insumer_acp_discount | Comprueba la elegibilidad de descuento en formato ACP de OpenAI/Stripe. Devuelve objetos de cupón y asignaciones por artículo. 1 crédito de comercio. |
insumer_ucp_discount | Comprueba la elegibilidad de descuento en formato UCP de Google. Devuelve título, campo de extensión y matriz aplicada. 1 crédito de comercio. |
insumer_validate_code | Valida un código de descuento INSR-XXXXX. Devuelve validez, porcentaje de descuento, caducidad. Gratis, sin autenticación. |
Precios
Niveles: Gratis (100 lecturas/día, 10 créditos) | Pro $29/mes (1,000 créditos/mes, 10,000/día) | Enterprise $99/mes (5,000 créditos/mes, 100,000/día)
Descuentos por volumen: $5–$99 = $0.04/llamada (25 créditos/$1) · $100–$499 = $0.03 (33/$1, 25% de descuento) · $500+ = $0.02 (50/$1, 50% de descuento)
Wallets de plataforma:
- EVM (USDC/USDT):
0xAd982CB19aCCa2923Df8F687C0614a7700255a23 - Solana (USDC/USDT):
6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4Ydr - Bitcoin:
bc1qg7qnerdhlmdn899zemtez5tcx2a2snc0dt9dt0 - Tron (USDT-TRC20):
TC5yvwkAMakkXtUxYiu2Yn1xbBcwYuD6cn
Cadenas de pago admitidas: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin, Tron. Los tokens enviados en cadenas no admitidas no se pueden recuperar. Todas las compras son definitivas y no reembolsables. Precios completos →
Manejo de errores rpc_failure
Si la API no puede alcanzar una o más fuentes de datos blockchain después de reintentos, los endpoints que producen atestaciones firmadas (insumer_attest, insumer_wallet_trust, insumer_batch_wallet_trust) devuelven ok: false con el código de error rpc_failure. Sin firma, sin JWT, sin créditos cobrados. Este es un error reintentable — el cliente MCP debe reintentar después de un breve retraso (2-5 segundos).
Importante: rpc_failure NO es un fallo de verificación. No lo trates como pass: false. Significa que la fuente de datos no estuvo disponible temporalmente y la API se negó a firmar un resultado no verificado.
Cadenas Compatibles (37)
31 cadenas EVM + Solana + XRP Ledger + Bitcoin + Tron + Stellar + Sui. Incluye Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, XDC, Robinhood Chain, Arc y 21 EVM más. Lista completa →
También Disponible Como
- Habilidad de Claude Code:
smithery skill add douglasborthwick/insumer-skill(Smithery · GitHub) — para escribir autenticación de wallet en tus propios proyectos desde Claude Code. Este servidor MCP brinda al agente acceso en tiempo de ejecución a la API; insumer-skill ayuda a los desarrolladores a escribir código de integración en tiempo de compilación. Superficies diferentes, misma primitiva. - Plugin de ElizaOS:
@insumermodel/plugin-eliza(npm) - LangChain (Python):
pip install langchain-insumer(PyPI) - OpenAI GPT: InsumerAPI Wallet Auth (GPT Store)
- Verificador (JWKS sin conexión):
npm install insumer-verify(npm, fuente)
Desarrollo
npm install
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js
Licencia
MIT