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 38 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: 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.
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 a key — no signup, no dashboard, no password
Three paths, all give you a working insr_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 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 — 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/.
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 — 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 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.
If both
INSUMER_API_KEYandINSUMER_PAYMENT_KEYare set, the key (credits) is used.
Related MCP server: MolTrust
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",
"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. Since 2026-09-01 every attest and trust response also carries a post-quantum companion, pqSig and pqKid (ML-DSA-65 over the post-quantum domain tag plus the same classical preimage the kid selects), 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:
{
"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 — 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, 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 companion (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 |
| Generate a free API key instantly. Takes an email, returns an |
Key Discovery (free)
Tool | Description |
| Get the JWKS: five entries over two keys. The ECDSA P-256 key under |
On-Chain Verification (cost credits)
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.
Tool | Description |
| Verify on-chain conditions (token balances, NFT ownership, EAS attestations, Farcaster identity, |
| List available EAS compliance templates (Coinbase Verifications on Base, Gitcoin Passport on Optimism). Free. |
| Generate ECDSA-signed wallet trust fact profile. 44 base checks across 25 chains in 5 dimensions (stablecoins, governance, NFTs, staking, institutional stablecoins — EURCV/USDCV/USDC/BENJI across Ethereum, Solana, XRPL, Stellar, Sui), up to 49 checks across 27 chains in 9 dimensions with optional Solana, XRPL, Bitcoin, and Tron wallets. 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, BTC, or USDT-TRC20 (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, Tron. Non-refundable. |
| Check credit balance and tier. |
| Buy verification credits with USDC, USDT, BTC, or USDT-TRC20. Volume discounts: $0.04–$0.02/call. Supported chains: Ethereum, Base, Polygon, Arbitrum, Optimism, BNB Chain, Avalanche, Solana, Bitcoin, Tron. 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, BTC, or USDT-TRC20. 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:
bc1qg7qnerdhlmdn899zemtez5tcx2a2snc0dt9dt0Tron (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 →
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_wallet_trust, insumer_batch_wallet_trust) 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 (38)
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 →
Also Available As
Claude Code Skill:
smithery skill add douglasborthwick/insumer-skill(Smithery · GitHub) — 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)LangChain (Python):
pip install langchain-insumer(PyPI)OpenAI GPT: InsumerAPI Wallet Auth (GPT Store)
Verifier (offline JWKS):
npm install insumer-verify(npm)
Development
npm install
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsLicense
MIT
Available Tools
27 toolsinsumer_acp_discountA
Check token-holder discount eligibility in OpenAI/Stripe Agentic Commerce Protocol (ACP) format. Returns coupon objects, applied/rejected arrays, and per-item allocations compatible with ACP checkout flows. Same on-chain verification as insumer_verify, wrapped in ACP format. Consumes 1 merchant credit.
| Name | Required | Description | Default |
|---|---|---|---|
| merchantId | Yes | Merchant ID | |
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address) | |
| items | No | Optional line items for per-item cent-amount allocations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses return format, credit cost, and relationship to insumer_verify. However, it does not explicitly state read-only nature or side effects, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value: purpose, return details, and context (verification, cost). No wasted words. Front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains return format despite no output schema, mentions credit cost and sibling relation. Lacks explicit guidance on wallet field mutual exclusivity, but covers essential aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no new parameter meaning beyond repeating that items are optional, which is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks discount eligibility in ACP format, returns specific objects (coupons, applied/rejected arrays, per-item allocations), and distinguishes itself from siblings like insumer_verify by specifying ACP wrapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for ACP checkout flows and contrasts with insumer_verify. It mentions credit cost but does not explicitly state when not to use or list all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_attestA
Create on-chain verification (attestation). Verify 1-10 conditions (token balances, NFT ownership, EAS attestations, Farcaster identity) across 33 chains. Returns ECDSA-signed boolean results with a kid field identifying the signing key (fetch public key via insumer_jwks). Never exposes actual balances. Each result includes evaluatedCondition (exact logic checked), conditionHash (SHA-256 for tamper-evidence), and blockNumber/blockTimestamp for RPC chains (freshness). XRPL results include ledgerIndex and ledgerHash (validated ledger hash) instead of blockNumber/blockTimestamp; trust line token results also include trustLineState: { frozen: boolean } (frozen trust lines cause met: false). Standard mode costs 1 credit. Pass proof: 'merkle' for EIP-1186 Merkle storage proofs (2 credits). For EAS attestations, use a compliance template (Coinbase Verifications, Gitcoin Passport) or raw schemaId. For Farcaster, use type 'farcaster_id' (checks IdRegistry on Optimism). Use insumer_compliance_templates to list available templates.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address). For verifying XRP, trust line tokens (RLUSD, USDC), or NFTs on XRP Ledger. | |
| bitcoinWallet | No | Bitcoin address (P2PKH, P2SH, bech32, or Taproot). For verifying native BTC balance. Use chainId 'bitcoin' with contractAddress 'native'. | |
| proof | No | Set to 'merkle' for EIP-1186 Merkle storage proofs (2 credits). Proofs available for token_balance on RPC chains only. | |
| format | No | Set to 'jwt' to include a Wallet Auth by InsumerAPI token (ES256-signed JWT) in the response. Verifiable by any standard JWT library using JWKS at /.well-known/jwks.json. | |
| conditions | Yes | 1-10 on-chain conditions to verify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description details behavioral traits: returns ECDSA-signed boolean results with kid, never exposes balances, includes evaluatedCondition, conditionHash, blockNumber/blockTimestamp for RPC chains, XRPL specifics, trust line state, credit costs, and proof mode. This fully compensates for missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but is information-dense. Key information is front-loaded. Every sentence adds value, though a structured bullet list could improve readability. It is still concise for the complexity covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, but the description thoroughly explains return values, including per-condition fields and chain-specific differences. It covers all mode variations (standard, proof, JWT format) and condition types. The description is complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds critical context: e.g., for bitcoinWallet use chainId 'bitcoin' with contractAddress 'native', for XRPL trust lines use currency, for Farcaster type 'farcaster_id', and template names for EAS. It explains the JWT format parameter. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create on-chain verification (attestation)' and specifies the scope: verifying 1-10 conditions across 33 chains. It distinguishes from sibling tools like insumer_compliance_templates by referencing it for listing templates, and insumer_verify is a different operation. The verb 'verify' and resource 'attestation' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to create attestations) and provides guidance on modes, credits, and template usage. It explicitly advises using insumer_compliance_templates to list available templates, indicating a decision point. However, it does not contrast with other sibling tools like insumer_verify or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_batch_wallet_trustA
Generate wallet trust fact profiles for up to 10 wallets in a single request. Shared block fetches make this 5-8x faster than sequential calls. Each wallet gets an independently ECDSA-signed profile with its own TRST-XXXXX ID. Supports partial success — failed wallets get error entries while successful ones return full profiles. Costs 3 credits per successful wallet (standard) or 6 credits per wallet (proof: 'merkle'). Credits only charged for successful profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| wallets | Yes | 1-10 wallet entries to profile | |
| proof | No | Set to 'merkle' for EIP-1186 Merkle storage proofs on all wallets (6 credits/wallet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses key behaviors: batch speed advantage, independent ECDSA signatures, partial success (failed wallets get error entries), credit costs (3/6 credits per successful wallet), and the 'merkle' proof option. It could add more on rate limits or idempotency but is sufficiently transparent for a non-destructive batch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single paragraph of 4 sentences, front-loading the main purpose, then efficiency, then profile details, then partial success and costs. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch, multi-wallet, proof option, credits, partial success), the description covers these aspects well. It lacks explicit return format details, but since output schema is absent, the description could be considered complete enough. The partial success and credit details add sufficient context for an agent to decide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value beyond schema: shared block fetches, ECDSA-signed profiles with TRST-XXXXX IDs, partial success handling, and credit cost details. The proof parameter is well explained in both schema and description. Overall enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates wallet trust fact profiles for up to 10 wallets in a single request. It uses specific verbs and resource (generate, wallet trust fact profiles) and distinguishes from siblings like insumer_wallet_trust by emphasizing batch processing and speed improvement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use the tool: for batch profiling with shared block fetches (5-8x faster) and partial success. It implicitly discourages sequential calls. However, it does not explicitly state when not to use or list alternatives like the singular version, but does mention the proof option as an alternative use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_buy_creditsA
Buy verification credits with USDC, USDT, or BTC. 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). Minimum $5. USDC/USDT on EVM and Solana (auto-detected). BTC on Bitcoin (converted to USD at market rate, 1 confirmation required). Crypto sent on unsupported chains cannot be recovered. Non-refundable. First purchase registers the sender wallet to the API key. Subsequent purchases must come from the same sender. To change the registered wallet, set updateWallet to true.
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | Yes | Transaction hash proving payment | |
| chainId | Yes | Payment chain: 1, 8453, 137, 42161, 10, 56, 43114, 'solana', or 'bitcoin'. EVM/Solana accept USDC and USDT (auto-detected). Bitcoin accepts BTC (converted to USD at market rate). | |
| amount | No | Stablecoin amount sent (minimum 5). Not required for BTC. | |
| updateWallet | No | Set true to update the registered sender wallet to this transaction's sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: pricing tiers, minimum amount, crypto types, chains, risk of unrecoverable funds, non-refundable nature, wallet registration, and updateWallet option.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is information-dense and well-structured, starting with purpose then details. Slightly long but each sentence adds value. Could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and no annotations, the description covers all essential aspects: how to use, what happens, risks, and wallet management. It is complete enough for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, but description adds value beyond schema, e.g., clarifying that amount is not required for BTC, and explaining updateWallet behavior. This enhances parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool buys verification credits with specific cryptocurrencies. It distinguishes from siblings like 'insumer_buy_key' and 'insumer_buy_merchant_credits' by specifying 'verification credits'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: when to buy credits with crypto, pricing, and wallet registration. It does not explicitly state when not to use or compare to alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_buy_keyA
Buy a new API key with USDC, USDT, or BTC (no auth required). Agent-friendly: no email needed. Send USDC/USDT to EVM wallet 0xAd982CB19aCCa2923Df8F687C0614a7700255a23 or Solana wallet 6a1mLjefhvSJX1sEX8PTnionbE9DqoYjU6F6bNkT4Ydr. Send BTC to bc1qg7qnerdhlmdn899zemtez5tcx2a2snc0dt9dt0 (1 confirmation required). USDC/USDT auto-detected from transaction. BTC converted to USD at market rate. One key per wallet — use insumer_buy_credits to top up. Volume discounts: $5–$99 = $0.04/call, $100–$499 = $0.03, $500+ = $0.02. Non-refundable.
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | Yes | Transaction hash proving payment | |
| chainId | Yes | Payment chain: 1, 8453, 137, 42161, 10, 56, 43114, 'solana', or 'bitcoin'. EVM/Solana accept USDC and USDT (auto-detected). Bitcoin accepts BTC (converted to USD at market rate). | |
| amount | No | Stablecoin amount sent (minimum 5). Not required for BTC — USD value derived from on-chain amount at market rate. | |
| appName | Yes | Name for the API key (e.g. your agent or app name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description covers all behavioral traits: payment methods, wallet addresses, auto-detection, BTC conversion, one key per wallet, volume discounts, and non-refundable nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact paragraph with all essential info, though slightly dense. No redundancy, but could be broken into bullets for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive coverage of payment methods, wallets, discounts, and exceptions (non-refundable, one key per wallet). Sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds context: txHash as proof, chainId details, amount minimum and BTC exception, appName as key name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Buy' and resource 'new API key' with specific payment methods, and distinguishes from sibling 'insumer_buy_credits' for topping up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states no auth required and 'Agent-friendly: no email needed.' Also provides alternative: 'One key per wallet — use insumer_buy_credits to top up.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_buy_merchant_creditsA
Buy merchant verification credits with USDC, USDT, or BTC. Volume discounts: $5–$99 = $0.04/call (25/$1), $100–$499 = $0.03 (33/$1), $500+ = $0.02 (50/$1). Minimum $5. USDC/USDT on EVM and Solana (auto-detected). BTC on Bitcoin (converted to USD at market rate, 1 confirmation required). Non-refundable. Owner only. First purchase registers the sender wallet to the API key. To change the registered wallet, set updateWallet to true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID | |
| txHash | Yes | Transaction hash proving payment | |
| chainId | Yes | Payment chain: 1, 8453, 137, 42161, 10, 56, 43114, 'solana', or 'bitcoin'. EVM/Solana accept USDC and USDT (auto-detected). Bitcoin accepts BTC (converted to USD at market rate). | |
| amount | No | Stablecoin amount sent (minimum 5). Not required for BTC. | |
| updateWallet | No | Set true to update the registered sender wallet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses non-refundable, owner-only nature, wallet registration behavior, auto-detection of tokens on EVM/Solana, BTC conversion with confirmation, and volume discounts. No annotations, so description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph packs many details efficiently. Could be restructured for readability (e.g., bullet points for discounts), but it's not overly verbose and all information is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: payment methods, wallet registration, volume discounts. However, lacks explanation of return values or post-purchase state (e.g., how credits are reflected) since no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds context like volume discounts and wallet registration but doesn't significantly enhance parameter understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it buys merchant verification credits with specific tokens (USDC, USDT, BTC) and includes volume discounts. It differentiates from siblings like 'insumer_buy_credits' by specifying 'merchant' and 'verification'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: owner-only, minimum amount, wallet registration on first purchase, and how to update wallet. However, doesn't explicitly say when not to use or compare to alternatives like 'insumer_buy_key'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_check_discountB
Calculate discount for a wallet at a merchant. Checks on-chain balances and returns tier and discount percentage per token — never raw balance amounts. Free — does not consume credits.
| Name | Required | Description | Default |
|---|---|---|---|
| merchant | Yes | Merchant ID | |
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides some behavioral traits: it checks on-chain balances, never returns raw amounts, and is free (no credit consumption). However, it does not disclose side effects, error handling, rate limits, or what happens if a wallet is not found. The transparency is moderate but not insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with key information front-loaded. Each sentence adds value: purpose, behavioral constraint, cost. No redundant or missing critical info. Could be slightly more structured but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description explains what the tool does and what it returns (tier and discount percentage per token), but lacks return format details, edge cases (e.g., no wallet provided), and examples. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes each parameter (merchant ID, wallet addresses). The description adds minimal extra meaning beyond 'checks on-chain balances', but does not clarify which wallet(s) are expected or if multiple can be provided. It fails to guide parameter selection beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it calculates discount for a wallet at a merchant by checking on-chain balances, returning tier and discount percentage per token. Distinguished from sibling tools (e.g., insumer_acp_discount, insumer_ucp_discount) by focusing on discount calculation and stating it never returns raw balance amounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternative discount tools (acp, ucp). Lacks exclusions or prerequisites, such as requiring at least one wallet address. Implied usage is for checking discounts, but context of selection among siblings is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_compliance_templatesA
List available compliance templates for EAS attestation verification. Templates provide pre-configured schema IDs, attester addresses, and decoder contracts for KYC/identity providers (Coinbase Verifications on Base, Gitcoin Passport on Optimism). Use a template name in insumer_attest conditions instead of specifying raw EAS parameters. No authentication or credits required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool lists templates and requires no authentication or credits, which is transparent about its safe, read-only nature. No hidden behaviors are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: purpose, examples, and usage guidance. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no parameters and no output schema, the description covers the essential: what it does, how results are used, and cost/authentication. Could mention return format but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% description coverage, so the description need not explain parameters. The baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists compliance templates for EAS attestation verification, and provides specific examples of providers (Coinbase Verifications on Base, Gitcoin Passport on Optimism). It distinguishes itself from siblings by explaining that templates are used with insumer_attest conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells users to 'Use a template name in insumer_attest conditions instead of specifying raw EAS parameters,' which gives clear guidance on when to use this tool. It also notes 'No authentication or credits required,' but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_configure_nftsA
Configure NFT collections that grant discounts at the merchant. Max 4 collections. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID | |
| nftCollections | Yes | NFT collection configurations (0-4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds constraints (max 4, owner only) but does not explain side effects like replacing existing collections, immediate effect, or error handling. Partial but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence plus a phrase) and front-loads the main purpose. Every sentence is useful, though a slightly more structured format (e.g., listing restrictions) could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the tool's core function and key constraints but omits details like whether the configuration is additive or replacements, and what the return value indicates. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'id' and 'nftCollections' have descriptions). The tool description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures NFT collections for discounts, specifying the maximum of 4 collections and owner-only restriction. This distinguishes it from sibling tools like insumer_configure_tokens or insumer_check_discount.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Owner only' as a usage restriction, but does not explicitly state when to use this tool versus alternatives (e.g., when to use insumer_configure_tokens for token-based discounts). Usage context is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_configure_settingsA
Update merchant settings: discount stacking mode, cap, and stablecoin payment configuration. All fields optional. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID | |
| discountMode | No | 'highest' uses best single discount, 'stack' adds them together, 'capped' stacks up to discountCap | |
| discountCap | No | Maximum total discount percentage (1-100) | |
| usdcPayment | No | USDC payment settings, or null to disable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses 'Owner only' and 'All fields optional', but lacks details on side effects (e.g., whether changes are instantly applied, destructive potential of changing discount mode), atomicity, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences covering the core purpose and constraints. However, it could be slightly more structured (e.g., bullet points for clarity) without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters including a nested object, the description covers basic intent and ownership but omits return value or success/error indications. Given the absence of an output schema, more context on expected outcomes would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond listing parameter categories, which are already well-documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('merchant settings'), and the specific fields ('discount stacking mode, cap, and stablecoin payment configuration'). It effectively distinguishes from sibling tools like insumer_create_merchant or insumer_configure_nfts by specifying the scope of settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates ownership restriction ('Owner only') and implies usage context for updating merchant settings. While it does not explicitly contrast with siblings, the domain is clear enough for an AI to differentiate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_configure_tokensA
Configure merchant token discount tiers. Set own token and/or partner tokens. Max 8 tokens total. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID | |
| ownToken | No | Merchant's own token configuration, or null to remove | |
| partnerTokens | No | Partner token configurations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses ownership requirement and token limit, but lacks details on side effects (overwrites or appends), validation behavior, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and constraints, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested schema, the description covers the high-level purpose and key constraints. It lacks detail on return values or error conditions, but the schema is rich enough to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions. The description adds value by stating 'Max 8 tokens total' (a constraint not in schema) and 'Owner only' (authorization context).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (configure), the resource (merchant token discount tiers), and key constraints (max 8 tokens, owner only). It distinguishes itself from sibling tools like configure_nfts or configure_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Owner only' indicating who should use it, but doesn't provide explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_confirm_paymentA
Confirm stablecoin payment for a discount code. After calling insumer_verify, confirm that the USDC/USDT payment was made on-chain. The server verifies the transaction receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Verification code from insumer_verify (e.g. INSR-A7K3M) | |
| txHash | Yes | On-chain transaction hash or Solana signature | |
| chainId | Yes | Payment chain: EVM chain ID (1, 8453, 137, 42161, 10, 56, 43114) or 'solana' | |
| amount | Yes | Stablecoin amount sent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses that the server verifies the transaction receipt on-chain, but does not specify idempotency, destructive vs. read-only, or any additional behavioral traits like rate limits or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not indicate what the tool returns (e.g., success confirmation or error). For a tool with 4 required parameters, the return value is missing, making it less complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond what is in the schema; it only restates the purpose without detailing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'confirm' and the resource 'stablecoin payment for a discount code.' It distinguishes itself from the sibling tool 'insumer_verify' by specifying it is to be called after verification and confirms on-chain payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'After calling insumer_verify,' providing clear sequential context. Does not explicitly list alternatives or when not to use, but the prerequisite relationship is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_create_merchantA
Create a new merchant. Receives 100 free verification credits. The API key that creates the merchant owns it. Max 10 merchants per API key.
| Name | Required | Description | Default |
|---|---|---|---|
| companyName | Yes | Company display name | |
| companyId | Yes | Unique merchant ID (alphanumeric, dashes, underscores) | |
| location | No | City or region |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries full burden. It discloses key behavioral traits: creation grants free credits, ownership by API key, and a limit of 10 merchants. This adds significant transparency beyond the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core action. Every sentence adds value (create, credits, ownership, limit). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain the return value of the tool. For a creation action, expected output (e.g., the created merchant object) is missing. However, the description covers creation behavior adequately. Given the lack of output schema, the description is partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning each parameter already has a description in the schema. The tool description does not add additional meaning or constraints for parameters beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new merchant', which is a specific verb+resource. It distinguishes from sibling tools like insumer_get_merchant or insumer_list_merchants by focusing on creation and adding unique context (free credits, ownership, limit).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage guidance: 'Receives 100 free verification credits', 'The API key that creates the merchant owns it', and 'Max 10 merchants per API key'. This tells the agent when to use (e.g., when creating a new merchant and having capacity) and implies when not to (if already at 10). No explicit alternative is given, but context from siblings is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_creditsA
Check verification credit balance, tier (free/pro/enterprise), and daily rate limit for the current API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description indicates a read-like operation (check) but does not explicitly state if it is safe, free, or has any side effects. It lacks details on authentication or rate limits for the tool itself, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the tool's purpose without any unnecessary words. Every part of the description contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description fully specifies what information the tool provides (balance, tier, rate limit). It is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and the description adds meaning by explaining what the tool returns (balance, tier, rate limit). Per the baseline rule for 0 parameters, a score of 4 is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Check' and specifies three concrete resources: verification credit balance, tier (free/pro/enterprise), and daily rate limit. It is distinct from sibling tools like insumer_buy_credits or insumer_attest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the agent needs current credit information or tier status. It does not explicitly contrast with alternatives, but the context is clear and no misleading information is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_get_merchantB
Get full public merchant profile including token tiers, NFT collections, discount mode, and verification status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description fully responsible. States it's a read operation but doesn't disclose any behavioral traits like idempotency, rate limits, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, focused sentence with no unnecessary words. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, description adequately lists profile components. Missing return format details but acceptable given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with single 'id' described as 'Merchant ID'. Description adds no extra detail beyond schema, baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states tool retrieves full public merchant profile and lists included items (token tiers, NFT collections, discount mode, verification status). Distinct from siblings which are other actions like buy, configure, verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives such as insumer_list_merchants or insumer_merchant_status. Only describes function without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_jwksA
Get the JWKS (JSON Web Key Set) containing InsumerAPI's ECDSA P-256 public signing key. Use this to verify attestation signatures without hardcoding the key. The kid field in attestation responses identifies which key signed the response. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description covers behavioral traits well, stating it is a read operation and requires no authentication. It does not mention rate limits or response format, but for a simple get, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no extraneous information. Every sentence adds value: purpose, usage guidance, and authentication requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description fully explains its purpose, usage, and a key behavioral note (no auth). It is complete for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is effectively 100%. The description does not need to add parameter details, and the baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the JWKS containing the ECDSA P-256 public signing key, distinguishing it from other sibling tools like insumer_attest or insumer_verify, which focus on different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool for verifying attestation signatures without hardcoding the key, and explains the role of the 'kid' field. It provides good usage context but does not explicitly mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_list_merchantsA
Browse merchants in the public directory. Filter by accepted token, verification status. Returns company name, website, tokens accepted, and discount info.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Filter by accepted token symbol, e.g. 'UNI' | |
| verified | No | Filter by domain verification status | |
| limit | No | Results per page (default 50, max 200) | |
| offset | No | Pagination offset (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies read-only by saying 'Browse' but does not explicitly state it is a safe read operation. It also lacks details on authentication, rate limits, or pagination behavior beyond parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Purpose is front-loaded in the first sentence, followed by filters and output. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking annotations and output schema, the description covers the core action, filters, and return fields. It omits pagination behavior but the schema handles that. Reasonably complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the schema (100% coverage), so baseline is 3. The description restates filtering but adds no extra meaning beyond the schema. The mention of return fields is helpful but not parameter-related.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Browse'), resource ('merchants in the public directory'), and what is returned. It distinguishes from siblings like 'insumer_get_merchant' (single) and 'insumer_create_merchant' (write).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing merchants but does not explicitly contrast with other tools or provide when-to-use guidance. No mention of alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_list_tokensA
List all registered tokens and NFT collections in the Insumer registry. Filter by chain, symbol, or asset type.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Filter by chain ID | |
| symbol | No | Filter by token symbol | |
| type | No | Filter by asset type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool lists all registered tokens and NFT collections, implying a read-only operation, but does not disclose details like permissions, pagination, or response format. This is adequate for a simple listing tool but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the core function and filtering options. No filler words, highly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description provides enough information: it lists all registered tokens/NFTs and explains available filters. It lacks details on output structure but is sufficient for a basic listing tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description (e.g., 'Filter by chain ID'). The tool description merely reiterates the filters without adding new semantic meaning beyond the schema, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair: 'List all registered tokens and NFT collections'. It clearly distinguishes from sibling tools like configure_tokens or configure_nfts, which are for configuration, not listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains filtering options ('Filter by chain, symbol, or asset type'), giving context on how to narrow results. It does not explicitly contrast with alternatives, but the purpose is straightforward and does not require extensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_merchant_statusB
Get full private merchant details: credits, token configs, NFT collections, directory status, verification status, payment settings. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It notes 'private' and 'Owner only', implying authentication and restricted access, but lacks details on error behavior, rate limits, or what happens if the caller is not the owner.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose and lists details. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially explains return contents by listing categories, but lacks structure details. Simple tool with one param, but missing completeness on error scenarios and output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so baseline is 3. The description does not add meaning to the 'id' parameter beyond the schema's 'Merchant ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full private merchant details', listing specific categories. However, it does not distinguish from sibling tool 'insumer_get_merchant', which likely has a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'insumer_get_merchant' or 'insumer_list_merchants'. The only hint is 'Owner only', which implies access restriction but not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_publish_directoryA
Publish (or refresh) the merchant's listing in the public directory. Call again after updating tokens or settings. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It mentions both publish and refresh modes and owner-only restriction, but lacks details on side effects (e.g., overwriting, idempotency) or what happens if called repeatedly. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences packed with key information: action, resource, update guidance, and access control. No wasted words, front-loaded purpose, and efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides sufficient context: what it does, when to call, and who can use it. Minor gap in not describing the return format, but not critical given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (one parameter described as 'Merchant ID'). The description does not add any additional meaning or usage hints beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Publish') and resource ('merchant's listing in the public directory'), clearly distinguishing it from sibling tools like 'insumer_configure_settings' or 'insumer_get_merchant'. It also covers the refresh aspect, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to call again after updating tokens or settings, which is a valuable usage recommendation. It also notes 'Owner only', indicating authorization context, but does not compare to alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_request_domain_verificationA
Request a domain verification token for a merchant. Returns the token and three verification methods: DNS TXT record, HTML meta tag, or file upload. After placing the token, call insumer_verify_domain to complete verification. Verified merchants get a trust badge in the public directory. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID | |
| domain | Yes | Domain to verify (e.g. 'example.com') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It reveals that the tool returns 'the token and three verification methods,' and that 'Verified merchants get a trust badge.' It also notes the permission requirement ('Owner only'). These add behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 sentences, each adding value: purpose, return details, next step, benefit, and permission. No wasted words, well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers return values, next steps, and usage context. Even without an output schema, it provides enough information for an agent to understand and use the tool correctly. It also mentions the benefit (trust badge) and permission, making it contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add additional meaning to parameters beyond the schema. It mentions 'domain' and 'merchant' implicitly but no extra details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Request a domain verification token for a merchant.' It specifies the resource (domain verification token) and action (request). It also distinguishes from the sibling tool 'insumer_verify_domain' by explaining this is the first step before verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'After placing the token, call insumer_verify_domain to complete verification.' This tells the agent when to use the sibling tool. It also mentions 'Owner only,' indicating who can use it. However, it lacks explicit when-not-to-use or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_setupA
Generate a free InsumerAPI key instantly. No credit card required. Returns an API key (insr_live_...) with 10 verification credits and 100 calls/day. The user should add the key to their MCP config as INSUMER_API_KEY and restart. One free key per email, 3 per IP per day.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address for the API key | ||
| appName | No | Name of your app or project (default: 'MCP Agent') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key format (insr_live_...), included credits (10 verification, 100 calls/day), and usage limits. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each with a distinct purpose: generation, no credit card, what to do with the key, and limits. No redundant or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers all needed information: what it does, input parameters, output format, post-usage instructions, and rate limits. No output schema, but return value is adequately described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions. The overall description adds context about default appName ('MCP Agent') and confirms email is required, but does not add significant new meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a free InsumerAPI key instantly', identifying the specific resource (API key) and action (generate). This sets it apart from sibling tools that deal with discounts, attestation, buying credits, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit context: no credit card required, one free key per email, 3 per IP per day, and instructions to add the key to MCP config and restart. It doesn't explicitly state when not to use it, but the purpose is clear enough to distinguish from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_ucp_discountA
Check token-holder discount eligibility in Google Universal Commerce Protocol (UCP) format. Returns title, extension field, and applied array compatible with UCP checkout flows. Same on-chain verification as insumer_verify, wrapped in UCP format. Consumes 1 merchant credit.
| Name | Required | Description | Default |
|---|---|---|---|
| merchantId | Yes | Merchant ID | |
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address) | |
| items | No | Optional line items for per-item cent-amount allocations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behaviors: read-only check, credit consumption, and return format. However, it lacks details on authentication requirements, idempotency, or potential side effects, leaving gaps that annotations would normally fill.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the purpose, and contains no redundant information. Every sentence serves a clear function, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of multi-chain wallet parameters and UCP format, the description provides essential context about output fields and credit consumption. It lacks examples or error handling but is sufficient for a well-documented schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds limited value beyond the schema. It mentions return fields (title, extension field, applied array) but does not elaborate on parameters. The baseline of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks token-holder discount eligibility in UCP format, specifies return fields, and distinguishes it from insumer_verify by noting the same on-chain verification wrapped in UCP format. This provides a specific verb+resource with differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage for UCP checkout flows and notes a credit cost, giving clear context for when to use it. While it does not explicitly exclude alternatives, the reference to UCP format and the sibling tools imply a specific use case, making guidance adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_validate_codeA
Validate an INSR-XXXXX discount code. For merchant backends during ACP/UCP checkout to confirm code validity, discount percent, and expiry. Returns valid/invalid status with reason. No authentication required, no credits consumed. Does not expose wallet or token data.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Discount code in INSR-XXXXX format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It clearly states 'No authentication required, no credits consumed. Does not expose wallet or token data.' Also explains return value (valid/invalid status with reason).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, context, and behavioral traits. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple validation tool with no output schema, the description explains return value, authentication requirements, side effects (none), and data exposure. Completely covers what an agent needs to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'code' with schema description covering 100%. Description adds the 'INSR-XXXXX' context which matches the schema pattern, but does not add significant new semantics beyond what schema already provides. Baseline 3 due to high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the specific verb 'Validate' and resource 'INSR-XXXXX discount code'. It specifies the context (merchant backends during ACP/UCP checkout) and distinguishes from sibling tools like insumer_check_discount by focusing on a specific code format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('For merchant backends during ACP/UCP checkout to confirm code validity'). While it doesn't explicitly exclude other scenarios, the context is clear and alternatives are implied by sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_verifyA
Create signed discount code (INSR-XXXXX, 30-min expiry) for a wallet at a merchant. Returns tier and discount percentage — never raw balance amounts. Consumes 1 merchant credit. If merchant has Stripe Connect, a coupon is auto-created.
| Name | Required | Description | Default |
|---|---|---|---|
| merchantId | Yes | Merchant ID | |
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the side effects (consumes 1 merchant credit, auto-creates coupon if Stripe Connect), the return values (tier and discount percentage, never raw balances), and that it is a write operation ('Create'). However, it does not mention authorization requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences that front-load the core action (create code with format and expiry), then return values, then side effects. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the code format, expiry, return values, and side effects, it lacks explanation of why three wallet address options exist, and does not mention what happens if no wallet is provided. With no output schema, the description partially compensates by stating return values, but incomplete on parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema's parameter descriptions; it only emphasizes that the code is for a wallet at a merchant, but does not clarify the relationship between the three wallet address fields (wallet, solanaWallet, xrplWallet) or their optionality.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create signed discount code' with format 'INSR-XXXXX' and 30-min expiry, and distinguishes from sibling tools like insumer_check_discount and insumer_validate_code which are for checking or validating codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that it consumes 1 merchant credit and auto-creates coupons for Stripe Connect merchants, but does not provide explicit when-to-use or when-not-to-use guidance relative to siblings like insumer_check_discount or insumer_validate_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_verify_domainA
Verify domain ownership for a merchant. Call this after placing the verification token (from insumer_request_domain_verification) via DNS TXT record, HTML meta tag, or file upload. The server checks all three methods automatically. Rate limited to 5 attempts per hour. Owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Merchant ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the server checks all three methods automatically, rate limited to 5 attempts per hour, and owner only. No annotations provided, so description carries full burden and does so well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no redundant information. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisite, methods, rate limit, and ownership. Missing explanation of return values, but no output schema exists. Slightly incomplete for expected outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter 'id' described as 'Merchant ID'. Description adds no further parameter semantics beyond schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool's purpose: verifying domain ownership for a merchant. Distinguishes from sibling by referencing the prerequisite step insumer_request_domain_verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (after placing verification token) and how token can be placed (DNS, meta tag, file upload). Includes rate limit and owner-only restriction but does not mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insumer_wallet_trustA
Generate a structured, ECDSA-signed wallet trust fact profile. Send a wallet address, get 36 base checks across stablecoins (USDC + USDT across 21 chains), governance tokens (UNI, AAVE, ARB, OP), NFTs (BAYC, Pudgy Penguins, Wrapped CryptoPunks), and staking positions (stETH, rETH, cbETH). Up to 40 checks across 24 chains with optional Solana, XRPL, and Bitcoin wallets. Returns per-dimension pass/fail counts and overall summary. No score, no opinion — just cryptographically verifiable evidence organized by dimension. Designed for AI agent-to-agent trust decisions. Costs 3 credits (standard) or 6 credits (proof: 'merkle').
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | EVM wallet address (0x...) to profile | |
| solanaWallet | No | Solana wallet address (base58). If provided, adds USDC on Solana check. | |
| xrplWallet | No | XRPL wallet address (r-address). If provided, adds RLUSD and USDC on XRPL checks. | |
| bitcoinWallet | No | Bitcoin address. If provided, adds Bitcoin Holdings dimension (native BTC balance check). | |
| proof | No | Set to 'merkle' for EIP-1186 Merkle storage proofs on stablecoin/governance checks (6 credits). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns 'per-dimension pass/fail counts and overall summary,' emphasizes 'No score, no opinion — just cryptographically verifiable evidence,' and mentions cost (3 or 6 credits). It does not explicitly state it is read-only but implies it via 'no opinion' and the nature of trust profiles. The absence of destructive hint is not misleading. Overall, it provides strong behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-organized paragraph. The first sentence states the main function. Subsequent sentences systematically enumerate checks, return values, and cost. Every sentence adds unique information with no redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has moderate complexity (5 parameters, optional multi-chain wallets). The description covers the overall process, supported assets, and return summary. Without an output schema, it provides a high-level description of what is returned ('per-dimension pass/fail counts and overall summary'). However, it lacks exact output format details (e.g., JSON structure, field names). Given the absence of output schema, the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that optional wallet parameters add specific checks (e.g., Solana adds USDC on Solana). It also clarifies the 'proof' parameter's effect (merkle proof costs 6 credits). This semantic enrichment justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb ('Generate') and specific resource ('wallet trust fact profile'). It enumerates the exact checks (36 base checks across stablecoins, governance, NFTs, staking) and distinguishes itself from siblings like insumer_batch_wallet_trust by implying a single-wallet operation. The purpose is highly specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'Designed for AI agent-to-agent trust decisions,' providing context for use. However, it does not explicitly compare against sibling tools like insumer_batch_wallet_trust, nor does it specify when not to use it or list alternatives. The usage is implied but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
27 tool updates
v0.1.0- Added
insumer_acp_discount - Added
insumer_attest - Added
insumer_batch_wallet_trust - Added
insumer_buy_credits - Added
insumer_buy_key - Added
insumer_buy_merchant_credits - Added
insumer_check_discount - Added
insumer_compliance_templates - Added
insumer_configure_nfts - Added
insumer_configure_settings - Added
insumer_configure_tokens - Added
insumer_confirm_payment - Added
insumer_create_merchant - Added
insumer_credits - Added
insumer_get_merchant - Added
insumer_jwks - Added
insumer_list_merchants - Added
insumer_list_tokens - Added
insumer_merchant_status - Added
insumer_publish_directory - Added
insumer_request_domain_verification - Added
insumer_setup - Added
insumer_ucp_discount - Added
insumer_validate_code - Added
insumer_verify - Added
insumer_verify_domain - Added
insumer_wallet_trust
TDQS
Scored across 27 tools
Most tools have distinct purposes, but the three discount-generation tools (insumer_verify, insumer_acp_discount, insumer_ucp_discount) serve similar roles in different formats, which could cause an agent to select the wrong one. Overall, confusion is limited.
All tools follow a consistent verb_noun pattern (e.g., insumer_buy_credits, insumer_configure_tokens). The naming is predictable and easy to navigate, with no mixed conventions.
27 tools is on the higher side, but the server covers a complex domain (merchant setup, discount verification, trust profiles, directory management). The count is borderline but not excessive given the feature set.
The tool surface covers the full lifecycle: merchant creation, configuration, discount generation, credit management, and directory listing. Minor gaps like missing merchant deletion exist, but core workflows are well supported.
Maintenance
Related MCP Connectors
Hosted MCP server for AI agent identity, permissions, verification, and reusable proof.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Compliance MCP for AI agents: sanctions & KYT screening on 50+ chains, stablecoin-freeze, oracle.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that empowers AI agents to inspect any wallet’s balance and onchain activity across major EVM chains and Solana chain.39MIT
- AlicenseBqualityBmaintenanceMolTrust MCP Server provides AI agents with identity verification, reputation scoring, and verifiable credentials through W3C DID-based trust infrastructure. Includes ERC-8004 on-chain agent registration and Base blockchain anchoring for tamper-proof credential verification.483MIT
- AlicenseAqualityDmaintenanceMCP server for AI agent trust verification, enabling agents to verify identities, check trust scores, and build reputation across multiple blockchain and web platforms.1251MIT

Syeniteofficial
FlicenseNot gradedqualityDmaintenanceA DeFi MCP server enabling AI agents to query lending rates, execute swaps/bridges, monitor positions, and access prediction markets across 30+ chains with a trust layer for calldata verification.-