Nalvorn

Checks that tell you what's wrong, and where

Send a manifest, a schema, a receipt, or the address of a running API. You get JSON back: what was compared, what did not line up, and where. Pay per call in USDC on Base.

Three checks are free. The rest start at 0.005 USDC per call — the 402 names the price before you pay, and that is the whole price. No account, no API key; you need a wallet with USDC on Base and an x402 client to sign.

The toolsPrices are per call, in USDC on Base.

A real call

All four answers were taken from the live server on 2026-10-26. The first two calls are free and need no payment; the third is a paid tool, so it answers 402 until you sign.

1. The request

curl -s -X POST \
  https://tools.nalvorn.top/verify-manifest \
  -H 'Content-Type: application/json' \
  -d '{"manifest":"a1b2c3d4e5f6  ./app.py","files":{"./app.py":"a1b2c3d4e5f6"}}'

2. The free call answers right away: HTTP 200

{
 "ok": true,
 "verdict": "every declared digest matches",
 "declared_files": 1,
 "checked": 1,
 "mismatched": [],
 "missing": [],
 "extra_not_in_manifest": []
}

3. The same call with one digest changed: HTTP 200, ok: false

{
 "ok": false,
 "verdict": "digests do not match",
 "declared_files": 1,
 "checked": 1,
 "mismatched": [
  {
   "file": "./app.py",
   "declared": "a1b2c3d4e5f6",
   "actual": "11b2c3d4e5f6"
  }
 ],
 "missing": [],
 "extra_not_in_manifest": []
}

The 402 is the whole object a client reads: price in token atomic units, receiving address, network and the bazaar extension.

4. A paid call without payment: HTTP 402

{
 "x402Version": 2,
 "error": "PAYMENT-SIGNATURE header is required",
 "resource": {
  "url": "https://tools.nalvorn.top/receipt-verify",
  "description": "Verify a receipt: canonical JSON digest and declared sha256",
  "mimeType": "application/json",
  "serviceName": "Nalvorn verification tools",
  "tags": [
   "verification",
   "audit",
   "evidence"
  ],
  "iconUrl": "https://tools.nalvorn.top/favicon.ico"
 },
 "accepts": [
  {
   "scheme": "exact",
   "network": "eip155:8453",
   "amount": "10000",
   "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
   "payTo": "0x98d6768508A36C04d8a60E5E5B24Ac3d628F5350",
   "maxTimeoutSeconds": 120,
   "extra": {
    "name": "USD Coin",
    "version": "2"
   }
  }
 ]
}

The paid call, ready to run:

curl -s -X POST \
  https://tools.nalvorn.top/receipt-verify \
  -H 'Content-Type: application/json' \
  -H "PAYMENT-SIGNATURE: $(your-x402-client-signs)" \
  -d '{"payload":{"a":1},"sha256":"0f343b09"}'

amount is in atomic units: 10000 means 0.01 USDC, because USDC has six decimals. The free tools have no amount: nothing is charged.

How a call works

  1. POST a JSON body to one of the paths above. Leave the payment header out for now.
  2. The server answers HTTP 402 with the price, the receiving address and the asset. You do not pay anything to get that answer.
  3. Sign an EIP-3009 authorization with an x402 client — plain curl cannot sign, and a direct USDC transfer to the address is not counted as payment. Send the same request again with the signed proof in PAYMENT-SIGNATURE; the result comes back as JSON.

Paying

Network
Base (eip155:8453)
Asset
USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Receiving address
0x98d6768508A36C04d8a60E5E5B24Ac3d628F5350
Scheme
exact — one call, one charge. No deposit, no balance, no monthly fee.

For agents

Agents read the catalogue and the payment terms directly:

Catalogue
/manifest
llms.txt
/llms.txt

Listed in directories