Signed hash receipt (Merkle batch, RFC 9162)
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
| Field | Type | Required | Description |
|---|---|---|---|
hashes | array<string; length 64..64>; max 256 items | yes | SHA-256 digests, 64 hex characters each. Hash your data locally; only the digests are sent. |
proofs | boolean | no | Return an inclusion proof per hash. Default true. |
label | string; length 0..200 | no | Optional 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.
| Field | Type | Required | Description |
|---|---|---|---|
verdict | string; one of "RECEIPTED" | no | |
root | string | no | RFC 9162 Merkle tree head, hex. |
treeSize | integer | no | |
receivedAt | string | no | ISO 8601, server clock. |
label | string | no | Caller label, empty when none was given. |
algorithm | string | no | |
leaves | array<object> | no | |
verify | string | no | |
limits | array<string> | no | |
upgrade | object | no | The 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
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent