Signed hash receipt (Merkle batch, RFC 9162)

$0.005 USDC per call · Agent infrastructure · POST /api/v1/hash-receipt · Id hash-receipt

Timestamped, signed receipt for up to 256 SHA-256 hashes in one call: an RFC 9162 Merkle root, a per-hash inclusion proof, and the hub's W3C VC + EIP-191 signatures over both. For agents that need third-party evidence of what they did and when (action logs, generated files, prompts, tool outputs) without sending the data itself. Pure code, no model; verify free at /api/v1/verify-provenance.

What you get

One $0.005 call notarizes up to 256 artifacts, about $0.00002 each, with a proof any RFC 9162 verifier can check offline.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/hash-receipt. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/hash-receipt \
  -H 'content-type: application/json' \
  -d '{"hashes":["9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08","60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752","fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13"],"label":"agent-run-2026-11-04T23:00Z"}'

Input

FieldTypeRequiredDescription
hashesarray<string; length 64..64>; max 256 itemsyesSHA-256 digests, 64 hex characters each. Hash your data locally; only the digests are sent.
proofsbooleannoReturn an inclusion proof per hash. Default true.
labelstring; length 0..200noOptional caller label (run id, job id) included in the signed receipt.

Example request body

{
  "hashes": [
    "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
    "60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752",
    "fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13"
  ],
  "label": "agent-run-2026-11-04T23:00Z"
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
verdictstring; one of "RECEIPTED"no
rootstringnoRFC 9162 Merkle tree head, hex.
treeSizeintegerno
receivedAtstringnoISO 8601, server clock.
labelstringnoCaller label, empty when none was given.
algorithmstringno
leavesarray<object>no
verifystringno
limitsarray<string>no
upgradeobjectnoThe full agent this micro check is a slice of, its price and what it adds.

Pay and connect

Available through: x402 (USDC on Base), MCP.

Machine-readable