nidhipati — proof of spend for AI agents

io.github.mrpkkPublished by GitHub account mrpkkv0.7.1Updated Nov 4, 2026

Proof-of-spend and reserve checks for AI agents: receipts, spend audit, NAV, reconciliation.

The publisher's own server: Proof Holdings

VerifiedStreamable HTTPWeb executableFinanceSecurity & MonitoringData & Analytics

Overview

AI-generated overview

Verifies signed proof-of-spend receipts and audits AI agent spending, reserve/NAV reports, resolution evidence and invoice reconciliation.

What you can do
  • Verify signed proof-of-spend receipts offline: schema, Ed25519 signature, mandate expiry, amount and usage math, refund limits
  • Audit a list of settled agent calls for duplicates, price escalation, failed-but-billed calls, runaway loops, missing refunds and budget breaches
  • Turn an issuer's reserve lines into a NAV with explicit formulas and a per-line evidence hash, refusing a ratio when a line has no price
  • Weigh a resolver's cited sources against its declared outcome, returning supported, disputed, single_source or insufficient
  • Match invoices to stablecoin transfers and name unpaid invoices, uninvoiced money and double payments
When to use it
Useful when an assistant handles agent payments or billing records and needs to check whether a charge was within its mandate, find anomalies in a spend export, sanity-check a tokenised-asset reserve report, or reconcile invoices against transfers. All five tools are read-only checks on data you supply.
Requirements
Runs as a remote streamable HTTP endpoint or as a local process (OCI image ghcr.io/mrpkk/nidhipati:0.6.0 over stdio, or the Python package). No authentication, environment variables or headers are declared. Inputs are passed as data, not file paths, and no network calls are made by the tools.
Before you install
Results are analytical checks, not a statutory audit, legal, tax or investment advice, and do not verify on-chain transactions. The README describes paid human audit services and a $5,000 finding guarantee; the MCP tools themselves are read-only with no custody or keys. Do not paste real billing records or keys into public issue trackers.

Installation

In SourceWeft

  1. Open nidhipati — proof of spend for AI agents in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.mrpkk%2Fnidhipati/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nidhipati-proof-of-spend-for-ai-agents": {
      "type": "http",
      "url": "https://rta.lat/nidhipati/mcp"
    }
  }
}

README

Nidhipati

Proof of Spend for AI agents. A signed receipt that proves what an agent was authorized to pay, what it actually paid, what it used and what was refunded. Not a token, not custody, not another payment rail.

Рельсы двигают деньги. Nidhipati доказывает, что движение было правильным.

[tests] [MCP Registry] [Glama] [license]

Status: v0.6 — five CLIs, an MCP server, 94 tests, official MCP Registry and Glama listing.

Site: https://mrpkk.github.io/nidhipati/
Free browser audit (no signup): https://mrpkk.github.io/nidhipati/free-spend-audit.html
BusinessMCP directory: https://businessmcp.com/mcp-servers/nidhipati
Private scan request: https://github.com/mrpkk/nidhipati/issues/new?template=free-spend-audit.yml

[Free browser audit]

Reserve and NAV report

For tokenised assets: the issuer's own numbers turned into a NAV with explicit formulas and an evidence hash per line. The verdict is backed, underbacked, or incomplete — and the ratio is refused when any line has no price, because a number computed over half a reserve is not a number.

bash
nidhipati-reserve report examples/reserve.example.json --key keys/private.pem --markdown report.md
NAV = Σ quantity × price × (1 − haircut) − liabilitiesratio = NAV / supply

The statement hash is compared with the file if you provide it. The disclaimer travels inside the signed document. Details and the partner/legal checklist: docs/RESERVE-REPORT.md.

Resolution evidence

When a market resolves and someone disagrees, the question is whether the resolver's sources say what the resolver claims and whether they agree with each other. The report answers with four verdicts — supported, disputed, single_source, insufficient — and never picks a winner.

bash
nidhipati-resolve report examples/resolve.example.json --key keys/private.pem --markdown report.md

Details: docs/RESOLUTION-EVIDENCE.md.

Reconciliation

Invoices on one side, transfers on the other. The report names what is closed, what nobody paid, and what arrived without an invoice — a transfer that duplicates a payment is counted once, never twice.

bash
nidhipati-reconcile run examples/invoices.example.csv examples/transactions.example.csv --csv matches.csv

Details: docs/RECONCILIATION.md.

MCP server (for agents, not shells)

The same five checks over the Model Context Protocol: verify_receipt, audit_spend, reserve_report, resolve_report, reconcile_books. Input is data, never a file path and never a network call; the answers are the same reports the CLIs produce, including the refusal to print a backing ratio when a line has no price.

json
{"jsonrpc":"2.0","id":1,"method":"tools/call", "params":{"name":"reserve_report","arguments":{"reserve":{...}}}}
bash
python3 -m nidhipati_proof.mcp_stdio      # stdio transportdocker build -t nidhipati-mcp . && docker run -i --rm nidhipati-mcp

Five tools, all read-only: no custody, no keys, no chain read.

Official MCP Registry: https://registry.modelcontextprotocol.io/v0/servers?search=nidhipati (io.github.mrpkk/nidhipati, OCI ghcr.io/mrpkk/nidhipati:0.6.0).
Glama listing: https://glama.ai/mcp/servers/mrpkk/nidhipati.

Free scan, and what it costs after

Send records of what your agents spent and get the audit back — no card. The browser audit needs no account; a human review can go by email or Telegram, no GitHub needed: email [email protected] or Telegram with the downloaded report (not raw rows). GitHub is optional: open a private scan request; the issue is public, so ask the question only and never paste records or keys. Paid: first 3 audits $1,250; then $2,500 fixed, $1,500/mo retainer, or 20% of verified savings. $5,000 finding guarantee (identified overcharges, not recovery). Full terms, including what is not included: docs/OFFER.md.

In CI, on every run:

yaml
- uses: mrpkk/[email protected]  with:    records: billing/agent-spend.csv    policy: billing/policy.json

Quick start

bash
python3 -m pip install -e .[dev]python3 -m pytest -qpython3 -m nidhipati_proof.cli verify examples/proof-of-spend.example.json --pubkey <base64url>

What it checks

  • schema and canonical JSON;
  • Ed25519 signature;
  • mandate expiry vs settlement time;
  • amount, asset, network, payee;
  • usage.quantity × usage.unit_price vs payment;
  • refund ≤ payment;
  • verdict allow for a settled payment;
  • receipt ID/replay (v0.2 store).

Agent spend audit

A signed receipt proves one charge. A bill proves a month. The audit reads the records you already have (CSV or JSON) and names the rows where money left without a reason:

FindingWhat it means
duplicate_chargethe same receipt twice, or an equal charge within 120s with no receipt at all
price_escalationsettled above the authorised quote by more than 1%
failed_but_billedstatus failed/error and still charged
missing_refundauthorised 10, used 4, nothing returned
runaway_loopmore than 30 calls a minute from one agent
model_overpayfar above this agent's own median for the same tool and model (an estimate)
unknown_asset / unknown_network / missing_payeethe record does not say where the money went
budget_bypass / budget_exceededno policy file: the limit lives in a prompt; with a policy, the agent is over it
bash
python3 -m pip install -e .nidhipati-spend audit examples/spend-sample.csv --policy examples/spend-policy.example.jsonnidhipati-spend audit records.csv --json > report.json

Exit code 1 when there is an error — a pipeline can fail on it. The report keeps three amounts apart on purpose: spent without a reason (duplicates, escalation, failed calls, refunds not returned), above the usual price (an estimate, not proof), and over the limit (the money may have been spent on real work).

The sample is synthetic and labelled: it contains every finding once, so you can see what a report looks like before trusting it with real invoices.

Honest limits

  • v0.1 does not verify the on-chain transaction; onchain_verified=false is explicit.
  • It is not a statutory audit, legal, tax, or investment advice.
  • It does not guarantee the service was good; it proves the payment was within mandate.
  • No custody, no money transmission, no token.

Docs

  • SPEC.md — product, architecture, modules, SEO, monetization, 30/60/90.
  • PROGRESS.md — slices, acceptance, metrics.
  • docs/PROMPT-AND-IDEAS.md — prompt and decisions for RAG.
  • docs/SEO-MONETIZATION.md — keywords, pages, funnel, pricing.
  • docs/LAUNCH-KIT.md — Show HN, Reddit, Product Hunt, X/LinkedIn copy.
  • docs/DEMO.md — real commands and sample output.
  • docs/AGENT-SPEND-AUDIT.md, docs/RESERVE-REPORT.md, docs/RESOLUTION-EVIDENCE.md, docs/RECONCILIATION.md — module rules.
  • schemas/proof-of-spend.schema.json — v0.1 schema.
  • examples/proof-of-spend.example.json — example.

License

Apache-2.0.

Source: README.md at commit 2c3d835

Tools

5

verify_receipt

Verify an agent payment receipt

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.

Parametersreceiptrequiredpublic_keyrequired

audit_spend

Audit an agent's spending records

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.

Parameterspolicyrecordsrequired

reserve_report

Reserve and NAV report for a tokenised asset

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.

Parametersreserverequired

resolve_report

Resolution evidence for a prediction market

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.

Parametersmarketrequired

reconcile_books

Reconcile invoices against transfers

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.

Parametersinvoicesrequiredtransactionsrequired

Version history

2
  1. v0.7.1LatestNov 4, 2026
  2. v0.6.1Oct 25, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Proof integrations