Skip to main content
Glama

invoice_analysis_pay

Only for an invoice created with paid checks (["scorechain"], ["merkle-science"] or both) whose analysis.status is awaiting_payment (see invoice_get). Builds ONE USDC transfer of analysis.amount (0.15 Scorechain, 0.60 Merkle Science, 0.75 both) to the Vurto fee wallet (analysis.to), signed by the invoice creator. Nothing is signed or sent here. The free screening runs first on the receiving wallet and on the creator: a rejected wallet gets screening_blocked (403) and nothing is built; a screening that cannot be read gets screening_unavailable (503). payer must be the creator (the receiving wallet when the invoice was created without a session, which is always the case over MCP); any other wallet gets not_invoice_creator (403) before anything is built. plan has the same shape as invoice_pay (prepare_signing; on Solana POST the signed transaction to /v1/svm/execute), then call invoice_report_analysis_payment with the hash or signature. Paying it from another token is a swap built over the HTTP API (POST /v1/swap on EVM, POST /v1/svm/swap on Solana) from the creator wallet with tokenOut = analysis.token, receiver = analysis.to and invoiceId = this invoice, sized so the guaranteed minimum covers analysis.amountRaw; report its hash or signature to invoice_report_analysis_payment. On EVM only a swap built that way counts (the transaction must match that build); on Solana the Vurto fee wallet must be the only wallet whose USDC rises in it. A swap that only pays a fee to the same wallet does not count. Errors: no_paid_check, analysis_already_paid, invoice_already_paid, not_invoice_creator, screening_blocked, screening_unavailable. SOLANA invoices (new model, since 23/10/2026): this is how the PAYER buys the paid analysis of the RECEIVING wallet, with their own money, before paying. Pass payer = the paying wallet and checks (["merkle-science"] 0.30, ["scorechain"] 0.075, both 0.375 USDC, the price of ONE wallet). The payer proves the wallet first (destination_challenge/destination_authorize for this invoice's receiver; without it payer_signature_required, 401); the free screening of both wallets must pass (screening_blocked 403). It returns receiverAnalysis {status: awaiting_payment, amount, to} and the USDC transfer to sign; report it with invoice_report_analysis_payment (txHash and payer). While it is awaiting payment, invoice_pay refuses with receiver_analysis_unpaid (409): the invoice can be paid only after this analysis is paid and done. checks: [] gives it up before paying. The result comes back without the receiving wallet. Paying it from another token: POST /v1/svm/swap from the payer with receiver = the fee wallet (receiverAnalysis.to) and invoiceId = this invoice.

Input Schema

NameRequiredDescriptionDefault
idYesINV-XXXX-XXXX or the 8-character id.
payerYesEVM (old model): the invoice creator wallet, which signs the analysis payment. Solana (new model): the paying wallet, which buys the analysis of the receiving wallet.
checksNoSolana only: the paid analyses of the RECEIVING wallet the payer buys. [] gives up an unpaid one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds substantial context beyond them: no signing or sending happens, a free screening runs first with screening_blocked (403) and screening_unavailable (503), payer must be the creator or the result is not_invoice_creator (403), and the full error set is enumerated. This is rich behavioral disclosure, though some of it, like the swap-build instructions, is operational rather than behavioral.

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

Conciseness2/5

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

The definition is a single wall of text covering two models, with repeated instructions to call invoice_report_analysis_payment and duplicated swap guidance for EVM and Solana. Key constraints like the payer restriction and screening error codes are buried mid-paragraph rather than front-loaded. The content is dense and mostly relevant, but it is not structurally concise.

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?

For a tool with no output schema and only three parameters but a complex dual-chain flow, the description covers prerequisites, screening behavior, error codes, the EVM plan reference (same shape as invoice_pay), and the Solana receiverAnalysis return. The EVM return shape is left by reference to a sibling rather than detailed, which is a minor gap, but overall the agent has enough to call it 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 coverage is 100%, so the schema already defines id, payer (EVM creator vs Solana paying wallet), and checks (Solana-only, [] gives up). The description echoes those meanings and adds the pricing context of checks (0.30/0.075/0.375) but does not add syntax or semantics the schema lacks. Baseline 3 is appropriate when the schema carries the parameter burden.

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 concrete operation: builds one USDC transfer of analysis.amount to the Vurto fee wallet, signed by the invoice creator, and explicitly says nothing is signed or sent. It distinguishes itself from invoice_pay (which refuses while awaiting payment) and invoice_report_analysis_payment (the reporting step). The dual EVM/Solana semantics make the purpose slightly sprawling, but the core verb+resource remains identifiable.

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

Usage Guidelines5/5

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

It gives a precise precondition: only for invoices created with paid checks whose analysis.status is awaiting_payment, pointing to invoice_get. It names alternatives: paying from another token must go through POST /v1/swap or POST /v1/svm/swap, and checks: [] explicitly abandons an unpaid analysis. The Solana path spells out that invoice_pay refuses with receiver_analysis_unpaid (409) until this is done, so the agent knows exactly when to route here.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources