Skip to main content
Glama

Double charge check

wever_double-charge-check
Read-only

Agent Purchases: submit the calls a buyer ordered once (id, endpoint, price, when ordered) and the call sequence as recorded: every 402 challenge, settlement, refund, delivery and failure, each with the call it belongs to, its time, amount, settlement reference and status. The signed report reads the charge record call by call and names every call settled more than once with each settlement reference and the extra amount standing, every 402 that arrived after a call had settled asking the buyer to pay again and whether the buyer paid again, every settlement for a call never ordered, and every duplicate a refund answered. One settlement recorded twice under one reference counts once. A retry design read for where a second charge could happen is wever_retry-safety-check, a timed-out checkout against merchant orders is wever_duplicate-order-check and expected settlements against received transfers are wever_settlement-reconciliation-check. Verdict double_charged, repay_requested, charges_unverified or charged_once. POST /api/double-charge-check. Reads only the material in the call: no network request, fetch, money movement, message, sharing, configuration change or external write. Paid URL: 0.10 USDC per call on Base via x402 exact, with the shared 10 signed-wallet free calls per rolling 30 days. Bind X-Wever-Wallet-Proof to the exact JSON arguments and the tool route. Returns a report with an Ed25519 signed receipt. Contract: /api/agent-purchases-contract. Human page: https://weverlabs.com/agent-purchases/.

Input Schema

NameRequiredDescriptionDefault
callsYesEach call the buyer ordered once.
labelNoOptional name recorded in the report.
eventsYesThe call sequence as recorded, in order.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the description gets a lower bar. It still adds real behavioral context: no network request, no money movement, no external write; 0.10 USDC per call on Base via x402 exact with 10 free signed-wallet calls per 30 days; X-Wever-Wallet-Proof must be bound to the exact JSON arguments and route; the result carries an Ed25519 signed receipt. The only gap is idempotencyHint=false, which the description never explains (e.g., whether re-submitting costs another call), so this lands slightly above adequate rather than fully transparent.

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?

The purpose and input shape are front-loaded, and every clause is load-bearing (dedup rule, alternatives, verdict enum, pricing, auth binding, contract link). It is, however, a single dense paragraph with no line breaks around the pricing and transport details, which makes it harder to scan than it needs to be.

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?

No output schema exists, and the description compensates well by enumerating what the report examines and naming the four verdicts (double_charged, repay_requested, charges_unverified, charged_once). Combined with the auth and pricing details, an agent has everything needed to call it correctly; only the disclosure that repeated submissions are not idempotent is missing.

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 schema already documents calls, events and label, and the baseline is 3. The description does add one genuinely non-schema rule — 'one settlement recorded twice under one reference counts once' — plus the framing of calls as ordered-once vs events as the recorded sequence, but it does not explain how amounts are compared or how call ids map to events beyond what the schema's descriptions already state.

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: takes the ordered calls plus the recorded event sequence and produces a signed report naming every call settled more than once, every post-settlement 402, every settlement for an unordered call, and every duplicated refund. It also distinguishes itself from wever_retry-safety-check, wever_duplicate-order-check and wever_settlement-reconciliation-check by naming the exact scope that separates them.

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?

Names three sibling alternatives and the precise condition that routes to each ('a retry design read for where a second charge could happen', 'a timed-out checkout against merchant orders', 'expected settlements against received transfers'). The agent knows both when to call this tool and when to call something else.

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.