Proof-of-spend and reserve checks for AI agents: receipts, spend audit, NAV, reconciliation.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find duplicates, price escalation, failed-but-billed calls, runaway loops, missing refunds, model overpay, unknown asset/network and budget breaches in a list of settled agent calls. Returns three separate amounts (money without a basis, estimate above the agent's own median, budget overrun) instead of one sum, because adding them together would overstate what can be recovered. Do NOT use as a statement of money actually returned.
Rows with ts, agent_id, tool, quote, settled, status; optional model, actual, refund, asset, network, tx_hash, payee.
Optional budget policy: {"limit_usd": "100"}.
Find duplicates, price escalation, failed-but-billed calls, runaway loops, missing refunds, model overpay, unknown asset/network and budget breaches in a list of settled agent calls. Returns three separate amounts (money without a basis, estimate above the agent's own median, budget overrun) instead of one sum, because adding them together would overstate what can be recovered. Do NOT use as a statement of money actually returned.
| Argument | Type | Description |
|---|---|---|
| policy | object | Optional budget policy: {"limit_usd": "100"}. |
| records* | array | Rows with ts, agent_id, tool, quote, settled, status; optional model, actual, refund, asset, network, tx_hash, payee. |
{
"type": "object",
"required": [
"records"
],
"properties": {
"policy": {
"type": "object",
"description": "Optional budget policy: {\"limit_usd\": \"100\"}."
},
"records": {
"type": "array",
"items": {
"type": "object"
},
"description": "Rows with ts, agent_id, tool, quote, settled, status; optional model, actual, refund, asset, network, tx_hash, payee."
}
}
}Match invoices to stablecoin transfers by memo first, then exact amount and asset inside the invoice window. Names what is left over in both directions: invoices nobody paid, money nobody invoiced, invoices paid twice. A duplicate is counted once, never twice. Do NOT use as proof of who the payer was.
| Argument | Type | Description |
|---|---|---|
| invoices* | array | id, amount, asset, created_at; optional due_at, payee, memo. |
| transactions* | array | tx_hash, amount, asset, timestamp; optional to, memo. |
{
"type": "object",
"required": [
"invoices",
"transactions"
],
"properties": {
"invoices": {
"type": "array",
"items": {
"type": "object"
},
"description": "id, amount, asset, created_at; optional due_at, payee, memo."
},
"transactions": {
"type": "array",
"items": {
"type": "object"
},
"description": "tx_hash, amount, asset, timestamp; optional to, memo."
}
}
}Turn an issuer's reserve lines into a NAV with explicit formulas and a sha256 evidence hash per line. Verdict is backed, underbacked, or incomplete - and the backing ratio is refused (null) when any line has no price, because a ratio over half a reserve is not a number. Do NOT treat the result as a statutory audit.
| Argument | Type | Description |
|---|---|---|
| reserve* | object | Reserve document. |
{
"type": "object",
"required": [
"reserve"
],
"properties": {
"reserve": {
"type": "object",
"description": "Reserve document."
}
}
}Weigh the sources a resolver says it read against the declared outcome. Verdicts: supported, disputed, single_source, insufficient. A conflict is reported as a conflict, never averaged. Do NOT use to trade or to place a position.
| Argument | Type | Description |
|---|---|---|
| market* | object | Market document. |
{
"type": "object",
"required": [
"market"
],
"properties": {
"market": {
"type": "object",
"description": "Market document."
}
}
}Check a signed proof-of-spend receipt offline: schema, Ed25519 signature, mandate expiry, positive amount, quantity*unit_price == amount, refund not above payment. Use when an agent or provider returns a receipt and you need to know whether it actually proves the charge was allowed. Do NOT use to move funds or to confirm a transaction on-chain - nothing here reads a chain.
| Argument | Type | Description |
|---|---|---|
| receipt* | object | The receipt document as JSON. |
| public_key* | string | Ed25519 public key, base64url (from keygen) or 64 hex chars. |
{
"type": "object",
"required": [
"receipt",
"public_key"
],
"properties": {
"receipt": {
"type": "object",
"description": "The receipt document as JSON."
},
"public_key": {
"type": "string",
"description": "Ed25519 public key, base64url (from keygen) or 64 hex chars."
}
}
}