Skip to main content
Glama

Server Details

Wallet auth: send a wallet and conditions, get a signed boolean across 37 chains.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 24 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
insumerapi/mcp-server-insumer
GitHub Stars
2
Server Listing
InsumerAPI

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Most tools are clearly distinct: list_merchants vs get_merchant, check_discount vs validate_code, and wallet_trust vs batch_wallet_trust (single vs up to 10) are well-separated. The main overlap is between insumer_attest (arbitrary conditions) and insumer_wallet_trust (curated fixed condition set), which both evaluate wallet on-chain state, though the descriptions do differentiate the fixed-profile vs custom-condition use cases.

Naming Consistency4/5

All names are snake_case with a consistent insumer_ prefix and mostly verb_noun form (attest, check_discount, get_merchant, list_merchants, list_tokens, validate_code, wallet_trust). A few are noun phrases (jwks, compliance_templates) rather than verb-led, which is a minor deviation but still readable and predictable.

Tool Count5/5

Ten tools is well within the ideal range and each appears to earn its place: attestation, single/batch trust profiles, discount checks, code validation, merchant directory, token registry, compliance templates, and signing keys. No redundant or filler tools.

Completeness4/5

Covers the verification/read lifecycle well: evaluate (attest, wallet_trust, batch_wallet_trust), discount (check_discount, validate_code), discovery (list_merchants, get_merchant, list_tokens, compliance_templates), and key retrieval (jwks). A notable gap is the absence of a tool to create issue an INSR discount code, which get_merchant explicitly hints at ("before creating a code"), so the write side of the discount flow is only half-covered.

Available Tools

10 tools
insumer_attestVerify wallet conditions (signed)AInspect

Evaluate a list of 1 to 10 conditions against a wallet's on-chain state and return one signed attestation: a yes or no for each condition, never the balance. One call reads the chain for every condition in the list and returns a single attestation covering all of them, so conditions of different kinds and on different chains are combined in one signed result. A condition states what must be true of the wallet, such as a minimum token balance, ownership of an NFT, an attestation held or a registered agent ID; the type field on each condition lists the kinds available and the fields each one takes. Chains: EVM chains plus Solana, XRPL, Bitcoin, Tron, Stellar and Sui; Bitcoin, Tron, Stellar and Sui support token_balance only. The attestation is signed twice: ES256, with a kid identifying the key, and a post-quantum ML-DSA-65 signature (pqSig, pqKid). Each result includes evaluatedCondition, a SHA-256 conditionHash, and the block (EVM), ledger (XRPL, Stellar) or checkpoint (Sui) it was read at. An attestation expires 30 minutes after it is signed, or 5 minutes when it includes a delegation condition. Costs 1 credit (2 with proof: 'merkle'). An rpc_failure error (503) means a read did not complete and nothing was signed: retry, and never treat it as a no. Current chain and check counts: https://insumermodel.com/llms.txt On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

NameRequiredDescriptionDefault
proofNoSet to 'merkle' for EIP-1186 Merkle proofs (2 credits, refunded to 1 when no proof is delivered). For token_balance or ratio_to_amount against an ERC-20, a storage proof of the balance slot (no subject field); for the same conditions with contractAddress 'native', an account proof whose balance field is the value evaluated (subject 'account_balance'); for account_code, an account proof whose codeHash is the value evaluated (subject 'account_code'); for erc7710_delegation, a storage proof of the revocation slot (subject 'delegation_revocation') on managers with an on-chain-verified layout. Supported EVM chains only (not ZKsync Era, Sei, Viction or XDC Network, and not on non-EVM chains).
formatNoSet to 'jwt' to include a Wallet Auth by InsumerAPI token (ES256-signed JWT) in the response, with its ML-DSA-65 sibling pqJwt beside it. The jwt is verifiable by any standard JWT library using JWKS at /.well-known/jwks.json.
walletNoEVM wallet address (0x...)
suiWalletNoSui wallet address (0x + 64 hex chars). For verifying SUI or other Sui coins (e.g. USDC). Use chainId 'sui' with the Sui coin type as contractAddress: '0x2::sui::SUI' for native SUI, or the full coin type address::module::Name for other coins. The string 'native' is not accepted on Sui.
conditionsYesThe list of 1 to 10 conditions to evaluate. All of them are read in this one call and covered by the one signed attestation.
tronWalletNoTron wallet address (T-prefixed, base58). For verifying TRX or TRC20 tokens (USDT-TRC20). Use chainId 'tron'.
xrplWalletNoXRPL wallet address (r-address). For verifying XRP, trust line tokens (RLUSD, USDC), or NFTs on XRP Ledger.
solanaWalletNoSolana wallet address (base58)
bitcoinWalletNoBitcoin address (P2PKH, P2SH, bech32, or Taproot). For verifying native BTC balance. Use chainId 'bitcoin' with contractAddress 'native'.
stellarWalletNoStellar wallet address (G-prefixed). For verifying XLM or trustline assets (USDC, BENJI, etc.). Use chainId 'stellar' with the asset issuer's G-address as contractAddress and pass assetCode (e.g. 'USDC'). Soroban contract balances not visible; classic trustlines only.
declaredLimitsNoSet to 'omit' to leave decoded caveat limits out of the signed results of erc7710_delegation conditions, so a forwarded attestation does not carry the principal's spending ceiling. met, delegationHash, and conditionHash are byte-identical either way.

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true) only signal that this is a non-idempotent, outbound operation; the description goes well beyond that by disclosing dual signing (ES256 + ML-DSA-65), the 30-minute expiry and the 5-minute expiry when a delegation condition is present, the credit cost and x402 pricing, and that no balance is ever returned. This is exactly the behavioral context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, and most sentences earn their place (signing, expiry, cost, error semantics). It is a single dense block with mild redundancy — 'One call reads the chain for every condition... single attestation covering all of them' restates the opening claim, and the met/not-met rule is repeated later — but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations set, and full schema coverage, the description need not re-explain return values; it still covers everything else an agent needs: cost model, expiry, failure handling, signature scheme and JWKS verification path. Nothing material is missing for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3. The description adds cross-parameter meaning not derivable from individual field docs — notably that Bitcoin, Tron, Stellar and Sui support token_balance only, and that different condition kinds and chains are combined into a single attestation, which shapes how the conditions array is composed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb and resource: evaluate 1-10 conditions against a wallet's on-chain state and return one signed attestation, with an explicit output shape (yes/no per condition, never the balance). The chain coverage and condition-type list make it distinguishable from the sibling trust/merchant tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is concrete: which condition types exist, which chains support which, the credit price, and operational guidance for rpc_failure (503) — retry, never treat as a no. It never explicitly contrasts itself with the sibling insumer_wallet_trust / insumer_batch_wallet_trust, so the when-to-prefer-this-over-that decision is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_batch_wallet_trustBatch wallet trust profiles (signed)AInspect

Generate wallet trust fact profiles for up to 10 wallets in a single request. Faster than sequential calls. Each wallet gets an independently signed profile with its own TRST-XXXXX ID: 155 base checks across 27 chains in 10 dimensions (stablecoins, governance, nfts, staking, institutional_stablecoins, tokenized_treasuries, stablecoin_deposits, wrapped_bitcoin, names, account), up to 176 checks across 29 chains in 14 dimensions with the optional Solana, XRPL, Bitcoin and Tron wallets; the signed conditionSetVersion (currently 2026-10-08) names the check list. Dimensions arrive in a fixed order, identical for every wallet in the batch: the base dimensions as listed, then any of solana, xrpl, bitcoin and tron that were switched on, in that order. Supports partial success: failed wallets get error entries while successful ones return full profiles. Costs 3 credits per successful wallet (6 with proof: 'merkle'); credits are charged only for successful profiles, while a pay-per-call (x402) payment covers every wallet in the request. A wallet whose reads did not complete gets an error entry and no signed profile: retry that wallet, and never treat the entry as a no. Each profile lists every check, so the response is large; by default the text is a summary per wallet (profile ID, held / not held / not evaluated counts, and the checks held in each dimension, in the fixed dimension order; the account dimension's checks are present rather than held), and the complete signed profiles are returned unchanged as structuredContent. Set detail to 'full' on the call to get the complete signed profiles as text too. Profiles cannot be fetched again, so a later call signs fresh profiles and is charged again. On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

NameRequiredDescriptionDefault
proofNoSet to 'merkle' for EIP-1186 Merkle storage proofs on all wallets (6 credits/wallet).
detailNo'summary' (default): the text is a short summary per wallet and the complete signed profiles are in structuredContent. 'full': the complete signed profiles as text too, tens of thousands of characters per wallet (more with optional wallets or merkle proofs). Choose it on the call that needs it: profiles cannot be fetched again, so a second call signs fresh profiles and is charged again. Not sent to the API; it does not change the price of the call.
walletsYes1-10 wallet entries to profile

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations present the bar is lower, yet the description still discloses cost (3 credits per successful wallet, 6 with merkle, x402 covers all wallets), partial-success semantics, the fact that failed wallets yield no signed profile and must not be read as 'no', that profiles cannot be re-fetched (consistent with idempotentHint=false), the response size, and the summary-vs-structuredContent split. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly with purpose and speed benefit, but the body is a dense block that restates the detail parameter and the credit/x402 pricing twice, and mixes pricing, dimension ordering, retry policy, and response format without structure. Every fact is useful, but a scanner cannot easily locate a specific concern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with full schema coverage, an output schema, and annotations, the description covers everything an agent needs to call it correctly: cost model, partial-failure handling, dimension ordering, response size, and the non-repeatability of signed profiles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description goes beyond the schema by explaining that Solana/XRPL/Bitcoin/Tron wallets each switch on an extra dimension and that dimensions arrive in a fixed, identical order for every wallet in the batch. The credit implication of proof='merkle' (6 vs 3) is also stated, which the schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb, resource, and scope: 'Generate wallet trust fact profiles for up to 10 wallets in a single request.' The batch framing ('Faster than sequential calls') cleanly separates it from the single-wallet sibling insumer_wallet_trust without the agent needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance: set detail='full' only on the call that needs it, add proof='merkle' when Merkle storage proofs are required, and retry only the wallets that came back as error entries. It does not explicitly name insumer_wallet_trust as the single-wallet alternative, so the 'when not to use this' side is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_check_discountCheck a discount (free)A
Read-onlyIdempotent
Inspect

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. Takes an EVM, Solana or XRPL wallet. An rpc_failure error (503) means a read did not complete: retry, and never treat it as not eligible. The check carries no proof of wallet control, so totalDiscount is what an unproven wallet gets; walletTerms gives the store's terms, and discountIfProven (when present) is what signing would get.

NameRequiredDescriptionDefault
walletNoEVM wallet address (0x...)
merchantYesMerchant ID
xrplWalletNoXRPL wallet address (r-address)
solanaWalletNoSolana wallet address (base58)

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, and the description adds substantial context beyond them: it never returns raw balances, consumes no credits, exposes totalDiscount vs discountIfProven, and clarifies that no proof of wallet control is carried. The 503 retry semantics are a genuinely useful behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and cost, then error semantics, then the discount-field caveats. Dense but each sentence carries information; the discountIfProven/walletTerms sentence is somewhat packed but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full annotation coverage, the description supplies the remaining interpretive context an agent needs — cost model, error retry rule, unproven-wallet caveat — so nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by stating the wallet input may be EVM, Solana, or XRPL — clarifying that the three wallet-typed properties are mutually exclusive chain alternatives rather than additive inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource+scope: 'Calculate discount for a wallet at a merchant,' with the chain coverage and the free/no-credit trait stated. It is clearly distinguishable from siblings like insumer_wallet_trust or insumer_attest, which do not compute merchant discounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: it is free, accepts EVM/Solana/XRPL wallets, and that a 503 rpc_failure means retry rather than treat as ineligible. It does not, however, state when to prefer this over a sibling such as insumer_wallet_trust or insumer_attest.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_compliance_templatesList compliance templatesA
Read-onlyIdempotent
Inspect

List the compliance templates available for EAS attestation conditions. Each template carries pre-configured schema IDs, attester addresses, and decoder contracts for a KYC or identity provider (Coinbase Verifications on Base, Gitcoin Passport on Optimism), so a condition can name the template instead of raw EAS parameters. No authentication or credits required.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description still adds real value beyond them by stating "No authentication or credits required," which affects whether the agent can call this freely as a discovery step.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and then the payload contents; all clauses carry information (field list, provider examples, cost model). The second sentence is somewhat dense with parentheticals, which is a minor readability cost rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained, and the description still names the meaningful fields and concrete provider examples (Coinbase Verifications on Base, Gitcoin Passport on Optimism). Combined with the zero-parameter schema, this is complete enough for an agent to call correctly, with only the number/ordering of results left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly adds nothing about parameters because there are none to describe, keeping it consistent with the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ("List the compliance templates") and immediately scopes it to EAS attestation conditions, making it clearly distinct from siblings like insumer_attest or insumer_wallet_trust. It also enumerates what a template contains (schema IDs, attester addresses, decoder contracts), so the agent knows exactly what kind of object it gets back.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the purpose of the tool: fetching templates so a condition can "name the template instead of raw EAS parameters," which tells the agent when this lookup is warranted. It does not name an alternative tool or an explicit when-not condition, but the usage context is unambiguous for a zero-argument listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_get_merchantGet a merchant profileA
Read-onlyIdempotent
Inspect

Get full public merchant profile including token tiers, NFT collections, discount mode, verification status, and walletTerms: what the store gives a wallet with and without proof of control, so you can decide whether to sign before creating a code.

NameRequiredDescriptionDefault
idYesMerchant ID

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so safety and idempotency are fully covered structurally. The description adds context about what the profile contains (walletTerms, verification status) but does not disclose behavioral traits beyond the field enumeration — no auth requirements, rate limits, or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb+resource and then enumerates the payload and the decision context. It is information-dense without waste, though the clause after 'so you can decide' is slightly run-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, full schema coverage, annotations covering safety/idempotency, and an output schema that presumably documents the return shape, the description does not need to explain return values. It covers purpose, payload contents, and the decision context. Slight gaps remain around alternatives and when-not-to-use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter (id) with 100% schema description coverage and a pattern constraint. The description adds no parameter-level detail, but with a single well-documented parameter and full schema coverage, this is adequate — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Get full public merchant profile') and enumerates the payload fields (token tiers, NFT collections, discount mode, verification status, walletTerms). It does not name any sibling tool for differentiation, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an implied usage context — 'so you can decide whether to sign before creating a code' — which tells the agent when this data is relevant (pre-signing decisions). But there is no explicit when-to-use statement, no mention of alternatives like insumer_list_merchants for browsing, and no exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_jwksGet public signing keysA
Read-onlyIdempotent
Inspect

Get InsumerAPI's public signing keys as a JWKS (JSON Web Key Set): an ECDSA P-256 key under its kids, followed by the ML-DSA-65 post-quantum key as RFC 9964 AKP entries. Signatures on attestation and trust responses verify against these keys. Match an entry by the kid (or pqKid) on the response, never by position; an unknown kid is unverifiable, not refuted. No authentication required.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, openWorld, and non-destructive, so the bar is lower; the description still adds real behavioral context beyond them — 'No authentication required' and the rule that matching must be by kid/pqKid, with an unknown kid being 'unverifiable, not refuted.' It does not describe caching or rotation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and appropriately short for a zero-parameter tool. The single dense sentence packs several distinct facts (key types, verification use, matching rule, no auth), which is efficient though slightly overloaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return structure needn't be explained, yet the description still adds the key-identity semantics that the schema alone wouldn't convey. Nothing needed to invoke the tool correctly is missing; only optional context like key rotation cadence is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description's mention of kid/pqKid is about the response payload, not inputs, and the empty schema needs no compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get InsumerAPI's public signing keys as a JWKS') and enumerates the key types returned (ECDSA P-256, ML-DSA-65 AKP). It is unmistakably distinct from the attest/trust/compliance siblings, which all consume these keys rather than fetch them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: 'Signatures on attestation and trust responses verify against these keys,' implying this is the verification prerequisite. However, it never explicitly names alternatives or states when-not to call it, so it stops short of the explicit routing a 5 requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_list_merchantsList merchantsA
Read-onlyIdempotent
Inspect

Browse merchants in the public directory. Filter by accepted token, verification status. Returns company name, website, tokens accepted, discount info, and walletTerms (the store's terms with and without proof of wallet control).

NameRequiredDescriptionDefault
limitNoResults per page (default 50, max 200)
tokenNoFilter by accepted token symbol, e.g. 'UNI'
offsetNoPagination offset (default 0)
verifiedNoFilter by domain verification status

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety profile is covered. Description adds useful return-field context (walletTerms explanation) beyond annotations, but doesn't mention pagination behavior or default result size, which are relevant for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, then filters, then return values. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return-field details needn't be repeated, but the description does a good job summarizing key fields anyway. Missing pagination behavior for a list tool is a minor gap given params cover limit/offset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already fully documents all four parameters including defaults, ranges, and enum. The description adds no syntax or format details beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Browse merchants in the public directory.' Clearly distinguishes from sibling insumer_get_merchant (singular fetch) by scoping to listing/browsing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions filtering by token and verification status but gives no when-to-use guidance or alternatives. An agent would need to infer that insumer_get_merchant should be used for a single merchant rather than listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_list_tokensList registered tokensA
Read-onlyIdempotent
Inspect

List the tokens and NFT collections listed in the Insumer registry. Filter by chain, symbol, or asset type. The registry is a directory, not the list of what can be checked: an attestation can check any token on a supported chain, and NFTs on EVM chains, Solana and XRPL, whether listed or not. An empty result means nothing is listed under that filter, not that the token is unsupported.

NameRequiredDescriptionDefault
typeNoFilter by asset type
chainNoFilter by chain ID
symbolNoFilter by token symbol

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, destructiveHint and openWorldHint, so the safety bar is lower. The description adds real value beyond them by disclosing empty-result semantics and the non-exhaustive nature of the registry, which prevents a common misinterpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core action before the interpretive caveats. Each sentence earns its place, though the 'not the list of what can be checked' point is restated in slightly different phrasing in the following sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations, the description needn't cover return values. Combined with the safety annotations and full schema coverage, the definition gives the agent everything needed to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three filter parameters (type, chain, symbol) are already documented in the schema. The description restates the filter axes without adding format or edge-case detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (tokens and NFT collections in the Insumer registry) with clear scope. It distinguishes itself from the check/attest siblings by framing the registry as a directory rather than the set of checkable assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong guidance on interpretation: 'The registry is a directory, not the list of what can be checked' and 'An empty result means nothing is listed under that filter, not that the token is unsupported.' This tells the agent when not to conclude lack of support, but it does not explicitly name sibling tools as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insumer_validate_codeValidate a discount codeA
Read-onlyIdempotent
Inspect

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, and walletProven (whether the code went to a caller that proved control of the wallet). No authentication required, no credits consumed. Does not expose wallet or token data.

NameRequiredDescriptionDefault
codeYesDiscount code in INSR-XXXXX format

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds significant context beyond them: no authentication required, no credits consumed, return shape (valid/invalid with reason, walletProven), and a data privacy guarantee ('Does not expose wallet or token data'). This is a rich behavioral disclosure that goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and followed by context, return info, and constraints. Every sentence adds value with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description still summarizes the return values (valid/invalid status, reason, walletProven), which helps the agent understand the outcome. It covers authentication, cost, side effects, and privacy. Complete for a validation tool with one parameter and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema documents the single parameter with a pattern and description. The description mentions the INSR-XXXXX format, which is redundant with the schema, and adds no extra semantic detail about the parameter beyond what is already provided. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Validate) and resource (INSR-XXXXX discount code), and explicitly scopes it to merchant backends during ACP/UCP checkout. This distinguishes it from siblings like insumer_check_discount or insumer_attest by naming the exact format and use context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states the context ('For merchant backends during ACP/UCP checkout') and the purpose ('confirm code validity, discount percent, and expiry'). This tells when to use it, though it does not explicitly name an alternative tool (e.g., insumer_check_discount) 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_wallet_trustWallet trust profile (signed)AInspect

Generate a signed wallet trust fact profile for an EVM wallet: a curated set of presence checks organized into dimensions (stablecoins, governance, nfts, staking, institutional_stablecoins, tokenized_treasuries, stablecoin_deposits, wrapped_bitcoin, names, account): 155 base checks across 27 chains in 10 dimensions. Optional Solana, XRPL, Bitcoin and Tron wallets add their own dimensions, up to 176 checks across 29 chains in 14 dimensions; optional Stellar and Sui wallets let rows inside existing dimensions evaluate. Dimensions arrive in a fixed order: the base dimensions as listed, then any of solana, xrpl, bitcoin and tron that were switched on, in that order. The account dimension holds two rows per chain on Ethereum, Base, Arbitrum, Optimism and Polygon: contract code at the wallet address, and an EIP-7702 delegation there; a plain key reads false on both, and which contract is never named. Rows on a chain whose wallet is not supplied stay in the signed profile with evaluated: false. Every check is held or not held (present or not present in the account dimension), never a balance. The signed conditionSetVersion (currently 2026-10-08) names the check list that was run; log it, never reject on it. Returns per-dimension pass/fail counts and an overall summary: no score, no opinion. Designed for AI agent-to-agent trust decisions. Costs 3 credits (6 with proof: 'merkle'). An rpc_failure error (503) means a read did not complete and nothing was signed: retry, and never treat it as a no. Current chain and check counts: https://insumermodel.com/llms.txt On this hosted endpoint the call is paid from a shared daily allowance, so the caller is not charged; the credit cost above applies on the caller's own API key, and each result states the price on a key and by x402 pay-per-call.

NameRequiredDescriptionDefault
proofNoSet to 'merkle' for EIP-1186 Merkle storage proofs on EVM token checks (6 credits). Rows whose balance is computed rather than stored (Aave aTokens, BUIDL), NFT/non-EVM rows and the account rows are declined with a reason (an account proof is available from the attest tool's account_code condition); the premium is refunded whenever no proof is delivered.
walletYesEVM wallet address (0x...) to profile
suiWalletNoSui wallet address (0x + 64 hex). If provided, lets the rows on Sui evaluate. Adds no dimension.
tronWalletNoTron wallet address (T-prefixed). If provided, adds the Tron dimension.
xrplWalletNoXRPL wallet address (r-address). If provided, adds the XRPL dimension and lets the institutional row on XRPL evaluate.
solanaWalletNoSolana wallet address (base58). If provided, adds the Solana dimension and lets the institutional rows on Solana evaluate.
bitcoinWalletNoBitcoin address. If provided, adds the Bitcoin dimension (native BTC presence).
stellarWalletNoStellar wallet address (G-prefixed). If provided, lets the institutional rows on Stellar evaluate (classic trustlines). Adds no dimension.

Output Schema

NameRequiredDescription
okNotrue when the API call succeeded
dataNoThe endpoint's payload: a signed attestation, trust profile, discount, merchant or token records
keysNoJWKS entries (insumer_jwks)
metaNoResponse metadata such as version and timestamp
errorNoError details when ok is false
itemsNoThe result when the endpoint returns a JSON array
messageNoA plain-text result (insumer_setup), or a message from the API

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false): it discloses signing semantics (conditionSetVersion must be logged, never rejected on), error semantics (503 rpc_failure means nothing was signed), refund behavior for undelivered Merkle proofs, credit pricing (3, or 6 with proof), and that the hosted endpoint draws from a shared allowance rather than charging the caller.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is a single dense run-on of nested parentheticals (dimension list, counts, ordering, account-row behavior, pricing, x402, llms.txt URL) that would benefit from structure. Every fact is relevant, yet the packing reduces scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the description still appropriately summarizes per-dimension pass/fail counts and the overall summary. Combined with error/retry semantics, cost model, and a live URL for current chain/check counts, an agent has everything needed to call and interpret this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with rich per-parameter descriptions, so the baseline is 3. The description adds real semantic detail: each optional wallet's effect (Solana/XRPL/Bitcoin/Tron add dimensions; Stellar/Sui only let existing rows evaluate) and the fixed dimension ordering, plus the two-row structure of the account dimension. It largely reinforces what the schema already says, which caps it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource: 'Generate a signed wallet trust fact profile for an EVM wallet', then enumerates what a profile contains (presence checks across named dimensions, 155 base checks / 27 chains). This distinguishes it cleanly from the sibling insumer_batch_wallet_trust (singular vs. batch) and from insumer_attest (which is referenced for account_code proofs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the intended use case explicitly ('Designed for AI agent-to-agent trust decisions') and gives the alternative for account proofs (the attest tool's account_code condition). It also gives operational guidance (retry on rpc_failure 503, never treat as a 'no'). It does not, however, say when to prefer this over insumer_batch_wallet_trust or the non-trust attest path for a single wallet.

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.

  1. 1 tool update
    • Changedinsumer_attest2 fields changed
      • changedInput schema / properties / conditions / description
        Previous value: -"1-10 on-chain conditions to verify"New value: +"The list of 1 to 10 conditions to evaluate. All of them are read in this one call and covered by the one signed attestation."
      • changedInput schema / properties / conditions / items / properties / delegation / description
        Previous value: -"Required for erc7710_delegation. The signed ERC-7710 delegation to evaluate. Met iff ALL of: attested wallet is the delegate; declared delegator is expectedDelegator; EIP-712 signature verifies (EOA or ERC-1271); unrevoked at the anchored block; every caveat enforcer recognized; any time-window caveat currently satisfied. Recognized enforcers: timestamp (evaluated), erc20_transfer_amount, native_transfer_amount, allowed_targets, limited_calls (the last four are REPORTED as declaredLimits: redemption enforces them, the attestation does not simulate enforcement)."New value: +"Required for erc7710_delegation. The signed ERC-7710 delegation to evaluate. Met iff ALL of: attested wallet is the delegate; declared delegator is expectedDelegator; EIP-712 signature verifies (EOA or ERC-1271); unrevoked at the anchored block; every caveat enforcer recognized; any time-window caveat currently satisfied. Recognized enforcers: timestamp (evaluated), erc20_transfer_amount, native_transfer_amount, allowed_targets, limited_calls (the last four are REPORTED as declaredLimits: redemption enforces them, the attestation does not simulate enforcement). A delegation result that is not met carries failReason, and an attestation that includes a delegation condition expires in 5 minutes instead of 30."
  2. 1 tool update
    • Changedinsumer_attest6 fields changed
      • changedInput schema / properties / conditions / items / properties / agentId / description
        Previous value: -"Required for erc8004_agent. The ERC-8004 agent ID as a uint256 decimal string — the caller must supply it (the deployed Identity Registry has no wallet-to-agentId reverse lookup). Met iff the attested wallet owns the agent NFT (ownerOf) or is the registry's signature-verified agentWallet binding. Registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 on Base; chainId 8453 only. Honest semantics: registration is permissionless minting — the signed statement implies no vetting, no reputation, no endorsement."New value: +"Required for erc8004_agent. The ERC-8004 agent ID as a uint256 decimal string; the caller must supply it (the deployed Identity Registry has no wallet-to-agentId reverse lookup). Met iff the attested wallet owns the agent NFT (ownerOf) or is the registry's signature-verified agentWallet binding. Registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 on Base; chainId 8453 only. Honest semantics: registration is permissionless minting, so the signed statement implies no vetting, no reputation, no endorsement."
      • changedInput schema / properties / conditions / items / properties / delegation / description
        Previous value: -"Required for erc7710_delegation. The signed ERC-7710 delegation to evaluate. Met iff ALL of: attested wallet is the delegate; declared delegator is expectedDelegator; EIP-712 signature verifies (EOA or ERC-1271); unrevoked at the anchored block; every caveat enforcer recognized; any time-window caveat currently satisfied. Recognized enforcers: timestamp (evaluated), erc20_transfer_amount, native_transfer_amount, allowed_targets, limited_calls (the last four are REPORTED as declaredLimits — redemption enforces them, the attestation does not simulate enforcement)."New value: +"Required for erc7710_delegation. The signed ERC-7710 delegation to evaluate. Met iff ALL of: attested wallet is the delegate; declared delegator is expectedDelegator; EIP-712 signature verifies (EOA or ERC-1271); unrevoked at the anchored block; every caveat enforcer recognized; any time-window caveat currently satisfied. Recognized enforcers: timestamp (evaluated), erc20_transfer_amount, native_transfer_amount, allowed_targets, limited_calls (the last four are REPORTED as declaredLimits: redemption enforces them, the attestation does not simulate enforcement)."
      • changedInput schema / properties / conditions / items / properties / delegation / properties / caveats / description
        Previous value: -"Caveats the principal signed (max 16). Every enforcer must be recognized or the condition fails — no override."New value: +"Caveats the principal signed (max 16). Every enforcer must be recognized or the condition fails, with no override."
      • changedInput schema / properties / conditions / items / properties / delegationManager / description
        Previous value: -"Required for erc7710_delegation. DelegationManager contract the delegation was signed against — one of the recognized MetaMask Delegation Framework managers on Base (current default 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3). chainId 8453 only."New value: +"Required for erc7710_delegation. DelegationManager contract the delegation was signed against: one of the recognized MetaMask Delegation Framework managers on Base (current default 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3). chainId 8453 only."
      • changedInput schema / properties / conditions / items / properties / expectedDelegator / description
        Previous value: -"Required for erc7710_delegation. The principal address the caller asserts authorized this agent. The condition fails unless the delegation's declared delegator matches — without it a self-delegation would read as authority, so there is no structural-only mode."New value: +"Required for erc7710_delegation. The principal address the caller asserts authorized this agent. The condition fails unless the delegation's declared delegator matches. Without it a self-delegation would read as authority, so there is no structural-only mode."
      • changedInput schema / properties / stellarWallet / description
        Previous value: -"Stellar wallet address (G-prefixed). For verifying XLM or trustline assets (USDC, BENJI, etc.). Use chainId 'stellar' with the asset issuer's G-address as contractAddress and pass assetCode (e.g. 'USDC'). Soroban contract balances not visible — classic trustlines only."New value: +"Stellar wallet address (G-prefixed). For verifying XLM or trustline assets (USDC, BENJI, etc.). Use chainId 'stellar' with the asset issuer's G-address as contractAddress and pass assetCode (e.g. 'USDC'). Soroban contract balances not visible; classic trustlines only."
  3. 1 tool update
    • Changedinsumer_attest1 field changed
      • changedInput schema / properties / conditions / items / properties / type / description
        Previous value: -"Condition type: token_balance, nft_ownership (EVM, Solana and XRPL), eas_attestation, farcaster_id (Farcaster IdRegistry on Optimism), evm_view_call (single-address-argument view function returning bool; RPC EVM chains only), ratio_to_amount (balance >= multiple * amount; RPC EVM chains only), ratio_to_supply (balance / totalSupply >= minFraction; RPC EVM chains, ERC-20 only), erc8004_agent (registered ERC-8004 agent on Base; agentId required), erc7710_delegation (signed MetaMask-framework delegation validity on Base; delegationManager, expectedDelegator, and delegation required; max 3 per request), or account_code (the code state of the wallet address itself on an EVM chain; expect required, delegate optional with expect 'eip7702'; no contractAddress)"New value: +"Condition type: token_balance, nft_ownership (EVM, Solana and XRPL), eas_attestation, farcaster_id (Farcaster IdRegistry on Optimism), evm_view_call (single-address-argument view function returning bool; EVM chains only), ratio_to_amount (balance >= multiple * amount; EVM chains only), ratio_to_supply (balance / totalSupply >= minFraction; EVM chains, ERC-20 only), erc8004_agent (registered ERC-8004 agent on Base; agentId required), erc7710_delegation (signed MetaMask-framework delegation validity on Base; delegationManager, expectedDelegator, and delegation required; max 3 per request), or account_code (the code state of the wallet address itself on an EVM chain; expect required, delegate optional with expect 'eip7702'; no contractAddress)"
  4. 2 tool updates
    • Changedinsumer_attest5 fields changed
      • addedInput schema / properties / conditions / items / properties / delegate
        Added value: +{
        +  "$ref": "#/properties/wallet",
        +  "description": "For account_code with expect 'eip7702' only (a 400 with any other expect): an EVM address; met iff the wallet's EIP-7702 designator points at it. Echoed in lowercase inside the signed evaluatedCondition as the caller's input; the actual delegation target is never returned."
        +}
      • addedInput schema / properties / conditions / items / properties / expect
        Added value: +{
        +  "description": "Required for account_code: the code state the wallet address itself must be in at the anchored block. 'none' is no code (a plain key account); 'eip7702' is the EIP-7702 delegation designator (a key that has delegated execution to a contract); 'contract' is any other code (a smart-contract wallet, a protocol, a token). The three states are exclusive on a chain. EVM chains only; a non-EVM chainId is rejected with a 400. The result is met or not met, like every type: the code and the delegation target are never returned, in any format or mode. The signed evaluatedCondition is {type, chainId, expect, operator: 'code_state'}. With proof 'merkle', the proof is an EIP-1186 account proof (subject 'account_code') whose codeHash is the proven value.",
        +  "enum": [
        +    "none",
        +    "eip7702",
        +    "contract"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / conditions / items / properties / type / description
        Previous value: -"Condition type: token_balance, nft_ownership (EVM, Solana and XRPL), eas_attestation, farcaster_id (Farcaster IdRegistry on Optimism), evm_view_call (single-address-argument view function returning bool; RPC EVM chains only), ratio_to_amount (balance >= multiple * amount; RPC EVM chains only), ratio_to_supply (balance / totalSupply >= minFraction; RPC EVM chains, ERC-20 only), erc8004_agent (registered ERC-8004 agent on Base; agentId required), or erc7710_delegation (signed MetaMask-framework delegation validity on Base; delegationManager, expectedDelegator, and delegation required; max 3 per request)"New value: +"Condition type: token_balance, nft_ownership (EVM, Solana and XRPL), eas_attestation, farcaster_id (Farcaster IdRegistry on Optimism), evm_view_call (single-address-argument view function returning bool; RPC EVM chains only), ratio_to_amount (balance >= multiple * amount; RPC EVM chains only), ratio_to_supply (balance / totalSupply >= minFraction; RPC EVM chains, ERC-20 only), erc8004_agent (registered ERC-8004 agent on Base; agentId required), erc7710_delegation (signed MetaMask-framework delegation validity on Base; delegationManager, expectedDelegator, and delegation required; max 3 per request), or account_code (the code state of the wallet address itself on an EVM chain; expect required, delegate optional with expect 'eip7702'; no contractAddress)"
      • changedInput schema / properties / conditions / items / properties / type / enum
        Previous value: -[
        -  "token_balance",
        -  "nft_ownership",
        -  "eas_attestation",
        -  "farcaster_id",
        -  "evm_view_call",
        -  "ratio_to_amount",
        -  "ratio_to_supply",
        -  "erc8004_agent",
        -  "erc7710_delegation"
        -]New value: +[
        +  "token_balance",
        +  "nft_ownership",
        +  "eas_attestation",
        +  "farcaster_id",
        +  "evm_view_call",
        +  "ratio_to_amount",
        +  "ratio_to_supply",
        +  "erc8004_agent",
        +  "erc7710_delegation",
        +  "account_code"
        +]
      • changedInput schema / properties / proof / description
        Previous value: -"Set to 'merkle' for EIP-1186 Merkle storage proofs (2 credits). For token_balance on supported EVM chains (not ZKsync Era, Sei, Viction or XDC Network, and not on non-EVM chains); for erc7710_delegation, a storage proof of the revocation slot (subject 'delegation_revocation') on managers with an on-chain-verified layout."New value: +"Set to 'merkle' for EIP-1186 Merkle proofs (2 credits, refunded to 1 when no proof is delivered). For token_balance or ratio_to_amount against an ERC-20, a storage proof of the balance slot (no subject field); for the same conditions with contractAddress 'native', an account proof whose balance field is the value evaluated (subject 'account_balance'); for account_code, an account proof whose codeHash is the value evaluated (subject 'account_code'); for erc7710_delegation, a storage proof of the revocation slot (subject 'delegation_revocation') on managers with an on-chain-verified layout. Supported EVM chains only (not ZKsync Era, Sei, Viction or XDC Network, and not on non-EVM chains)."
    • Changedinsumer_wallet_trust1 field changed
      • changedInput schema / properties / proof / description
        Previous value: -"Set to 'merkle' for EIP-1186 Merkle storage proofs on EVM token checks (6 credits). Rows whose balance is computed rather than stored (Aave aTokens, BUIDL) and NFT/non-EVM rows are declined with a reason; the premium is refunded whenever no proof is delivered."New value: +"Set to 'merkle' for EIP-1186 Merkle storage proofs on EVM token checks (6 credits). Rows whose balance is computed rather than stored (Aave aTokens, BUIDL), NFT/non-EVM rows and the account rows are declined with a reason (an account proof is available from the attest tool's account_code condition); the premium is refunded whenever no proof is delivered."
  5. 1 tool update
    • Changedinsumer_batch_wallet_trust1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "'summary' (default): the text is a short summary per wallet and the complete signed profiles are in structuredContent. 'full': the complete signed profiles as text too, tens of thousands of characters per wallet (more with optional wallets or merkle proofs). Choose it on the call that needs it: profiles cannot be fetched again, so a second call signs fresh profiles and is charged again. Not sent to the API; it does not change the price of the call.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  6. 2 tool updates
    • Changedinsumer_attest9 fields changed
      • addedInput schema / properties / conditions / items / properties / contractAddress / anyOf
        Added value: +[
        +  {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "pattern": "^[A-Za-z0-9:_]+$",
        +    "type": "string"
        +  },
        +  {
        +    "maxLength": 600,
        +    "pattern": "^0x[0-9a-fA-F]{1,64}::[A-Za-z_][A-Za-z0-9_]*::[A-Za-z_][A-Za-z0-9_]*<[A-Za-z0-9:_<>, ]+>$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / conditions / items / properties / contractAddress / description
        Previous value: -"Token or NFT contract address (required for token_balance, nft_ownership, ratio_to_amount, and ratio_to_supply; ratio_to_supply requires an ERC-20 contract, no native). 'native' means the chain's native coin and is for token_balance and ratio_to_amount only. nft_ownership needs the NFT contract address (0x + 40 hex on EVM); 'native' with nft_ownership is rejected with a 400, so use token_balance for the native coin. On Sui, pass a coin type address::module::Name: native SUI is '0x2::sui::SUI', and 'native' is not accepted there."New value: +"Token or NFT contract address (required for token_balance, nft_ownership, ratio_to_amount, and ratio_to_supply; ratio_to_supply requires an ERC-20 contract, no native). 'native' means the chain's native coin and is for token_balance and ratio_to_amount only. nft_ownership needs the NFT contract address (0x + 40 hex on EVM); 'native' with nft_ownership is rejected with a 400, so use token_balance for the native coin. On Sui, pass a coin type address::module::Name: native SUI is '0x2::sui::SUI', and 'native' is not accepted there. A coin type may carry type parameters in angle brackets."
      • removedInput schema / properties / conditions / items / properties / contractAddress / maxLength
        Removed value: -200
      • removedInput schema / properties / conditions / items / properties / contractAddress / minLength
        Removed value: -1
      • removedInput schema / properties / conditions / items / properties / contractAddress / pattern
        Removed value: -"^[A-Za-z0-9:_]+$"
      • removedInput schema / properties / conditions / items / properties / contractAddress / type
        Removed value: -"string"
      • changedInput schema / properties / conditions / items / properties / taxon / description
        Previous value: -"XRPL NFToken taxon filter (optional, for nft_ownership on XRPL only). Filters NFTs by issuer + taxon."New value: +"XRPL NFToken taxon filter: an integer from 0 to 4294967295 (optional, for nft_ownership on XRPL only). Filters NFTs by issuer + taxon."
      • addedInput schema / properties / conditions / items / properties / taxon / maximum
        Added value: +4294967295
      • addedInput schema / properties / conditions / items / properties / taxon / minimum
        Added value: +0
    • Changedinsumer_check_discount3 fields changed
      • removedInput schema / properties / stellarWallet
        Removed value: -{
        -  "description": "Stellar wallet address (G-prefixed)",
        -  "pattern": "^G[A-Z2-7]{55}$",
        -  "type": "string"
        -}
      • removedInput schema / properties / suiWallet
        Removed value: -{
        -  "description": "Sui wallet address (0x + 64 hex)",
        -  "pattern": "^0x[0-9a-fA-F]{64}$",
        -  "type": "string"
        -}
      • removedInput schema / properties / tronWallet
        Removed value: -{
        -  "description": "Tron wallet address (T-prefixed)",
        -  "pattern": "^T[1-9A-HJ-NP-Za-km-z]{33}$",
        -  "type": "string"
        -}
  7. 1 tool update
    • Changedinsumer_attest3 fields changed
      • changedInput schema / properties / conditions / items / properties / currency / description
        Previous value: -"XRPL trust line currency code (e.g. 'RLUSD', 'USDC'). Required for XRPL trust line tokens, ignored for other chains."New value: +"XRPL trust line currency code (e.g. 'RLUSD'). Case-sensitive: enter it exactly as the issuer created it. Required for XRPL trust line tokens, ignored for other chains."
      • addedInput schema / properties / conditions / items / properties / currency / minLength
        Added value: +1
      • changedInput schema / properties / conditions / items / properties / currency / pattern
        Previous value: -"^[A-Za-z0-9]+$"New value: +"^[\\x20-\\x7E]+$"
  8. 10 tool updates
    • Changedinsumer_attest1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_batch_wallet_trust1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_check_discount1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_compliance_templates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_get_merchant1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_jwks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_list_merchants1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_list_tokens1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_validate_code1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinsumer_wallet_trust1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "data": {
        +      "description": "The endpoint's payload: a signed attestation, trust profile, discount, merchant or token records"
        +    },
        +    "error": {
        +      "description": "Error details when ok is false"
        +    },
        +    "items": {
        +      "description": "The result when the endpoint returns a JSON array",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "keys": {
        +      "description": "JWKS entries (insumer_jwks)",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "message": {
        +      "description": "A plain-text result (insumer_setup), or a message from the API"
        +    },
        +    "meta": {
        +      "description": "Response metadata such as version and timestamp"
        +    },
        +    "ok": {
        +      "description": "true when the API call succeeded",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
  9. 10 tool updates
    • First observedinsumer_attest
    • First observedinsumer_batch_wallet_trust
    • First observedinsumer_check_discount
    • First observedinsumer_compliance_templates
    • First observedinsumer_get_merchant
    • First observedinsumer_jwks
    • First observedinsumer_list_merchants
    • First observedinsumer_list_tokens
    • First observedinsumer_validate_code
    • First observedinsumer_wallet_trust

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to prepare and execute onchain wallet actions, including balance checks, name resolution, swaps, bridges, transactions, and DeFi skills, with popup approval by default or scoped ERC-7710 delegated execution when opted in.
    65
    16 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to generate or import multi-chain keys, sign messages and unsigned transactions, broadcast them, and query native balances across Ambient, Solana, BSC, and Arbitrum. Private keys stay encrypted on the local machine, so agents can complete the sign-and-send half of a swap, liquidity, or bridge workflow handed over by a remote market server.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform pay-per-call security verification of wallets, tokens, contracts, dApps, agents, and more via a remote endpoint with no installation.
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.