Skip to main content
Glama

verify_treasury_settlement_status

Read-onlyIdempotent

On-chain proof the treasury actually received settled x402 USDC.

Wires services.x402_settlement.verify_treasury_settlement ( real on-chain proof: treasury USDC ATA balance read as the primary signal, plus settle-tx signature confirmation) up to an MCP tool -- the follow-up to which intentionally split the on-chain proof logic from this wiring to avoid file collisions across parallel sessions.

signatures is optional: when omitted, this tool pulls recent settled X402PaymentRecord.tx_signature values itself (via django_bridge.recent_x402_signatures, same window shape as reconcile_x402_settlement) over the last since_iso window (or all time), capped at signature_limit to bound RPC round trips -- so a caller does not have to hand-assemble signatures to get a real proof. Pass an explicit signatures list to check specific settle-tx hashes instead (bypasses the DB lookup entirely).

verified is True only when every checked signature confirms on-chain AND (if expected_usd is given) the treasury balance covers it -- see the service docstring for the full non-falsely-asserting contract. Raises CONFIG_ERROR if no treasury wallet is configured, UPSTREAM_ERROR (retryable) on an RPC failure -- never a silent verified=False.

FREE read (never gated, never in x402 PAID_TOOLS): public addresses/ signatures/balances only, never a key (hard rule 1).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
caller_idNo
since_isoNo
signaturesNo
expected_usdNo
signature_limitNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint/idempotentHint annotations by explaining the exact verified=true contract, the failure modes (CONFIG_ERROR, retryable UPSTREAM_ERROR), and the guarantee that failures are never reported as silent verified=false. It also clarifies the privacy boundary: only public data is exposed, never keys.

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?

The description is front-loaded with the core purpose and is internally organized, but it includes extraneous implementation history ('the follow-up to which intentionally split the on-chain proof logic... to avoid file collisions across parallel sessions') and a cryptic reference to 'hard rule 1'. These details add noise without helping an agent select or invoke the tool.

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?

Given the tool's complexity, the annotations, and the presence of an output schema, the description is complete: it defines success conditions, error behavior, optional-parameter semantics, access gating, and data-privacy constraints. An agent has enough context to call this tool correctly and to interpret its verified result.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full parameter-documentation burden. It compensates thoroughly for signatures, since_iso, signature_limit, and expected_usd, explaining their behavior and interactions. Only caller_id is left undocumented, but it has a default and appears to be a minor field.

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 states a concrete and specific purpose: proving on-chain that the treasury received settled x402 USDC. This clearly distinguishes the tool from generic verifiers like verify_transaction and verify_token by naming both the asset class and the settlement domain.

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?

The description gives clear operational guidance: omit signatures to auto-fetch recent ones, or pass an explicit list to bypass the DB lookup. It also explains the free-read access posture. It does not explicitly name alternatives to choose between, but the usage logic is specific enough to be actionable.

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.

TDQS

B3.2/5.0
Disambiguation2/5

Multiple tools overlap significantly: close_perp_position vs perp_close, get_leaderboard vs get_score_leaderboard vs get_strategy_leaderboard, get_venue_status vs get_all_venues_status, send_token_social vs bulk_send_social, and get_crank_score vs get_score. Several read-only tools have nearly identical purposes, and the descriptions do not always clarify boundaries.

Naming Consistency4/5

Most tools follow a consistent verb_noun snake_case pattern (get_balances, create_strategy, set_alert, list_webhooks). However, there are deviations like 'lst_swap', 'jupiter_swap', 'flash_loan', 'sr_backtest', and the use of both 'get_' and 'list_' for reads, plus category prefixes like 'perp_' and 'strategy_' that vary in order. Overall still readable and predictable.

Tool Count1/5

177 tools is an extreme count for any server, far exceeding the 25+ threshold for 'too many'. Even a full DeFi platform does not need this many separate operations; the surface is overwhelming and clearly not well-scoped.

Completeness3/5

The domain (Solana DeFi trading) is covered extensively across swaps, perps, lending, staking, strategies, signals, and support. However, there are notable gaps: no lend_withdraw, no direct way to close a lending position, no spot order cancellation (though aggregator-based swaps may not need it), and a general lack of tiered account management. The huge number of tools makes it hard to identify missing lifecycle steps.

Resources