Docs

Evidence

Decision receipts

Evidence that does not depend solely on project promises.


Decision Receipts records policy and mandate hashes, outcomes, denial reasons, and execution evidence.

What a receipt holds#

FieldMeaning
id, agentId, decidedAtWhich decision, and when
modelive or dry_run
outcome, reasonsThe result and any denial codes
requestThe proposed transaction
cover, mandate, simulationEach check and its result
certificateId, policyHashThe certificate in force
mandateVersion, mandateHashThe mandate in force
humanApprovedWhether a person approved it
executionExecution evidence, or null
hashHash of the receipt
signatureEd25519 signature of the hash

Receipt Verifier#

Lets anyone check a receipt against its hashes without an account.

bash
curl -X POST https://dapp.covergate.app/api/v1/receipts/verify \
  -H "content-type: application/json" \
  -d '{ "receipt": { } }'

Send the receipt without its hash field. The response returns the computed hash, whether it matches a stored decision, decidedAt, and the signature.

Check a receipt offline#

Every new decision is signed with CoverGate's Ed25519 receipt key. Fetch the public key once from GET /api/v1/receipts/key, keep it, and you can check a receipt with no call to CoverGate. A changed receipt fails the check.

js
import { verifyDecision } from "./covergate.mjs";

const valid = await verifyDecision(decision, publicKey);

See JavaScript SDK.

Audit Export#

Exports decisions and receipts for an agent.

bash
curl -O https://dapp.covergate.app/api/v1/agents/<agent id>/export.csv