AISOURCEOFTRUTH.COM

Regulated audit trails

Fix the method at decision time and hand auditors a bundle they check offline.

Who this is for

Companies under the EU AI Act, NIST AI RMF or sector rules, and the auditors who review them.

The problem

Audit logs kept by the company being audited can be rewritten. Anchoring each AI decision's inputs and outputs by hash in an outside, append-only log fixes the method at the time of the decision.

How it works

Routes it uses

Set it up

Step 1. Choose what to anchor

Map each decision to a record: the output's hash as the artifact, input hashes in inputs, the model in model. See /guides/ai-act-nist for the field mapping.

Check: The mapping is written down and reviewed.

Step 2. Publish at decision time

Publish the record in the same transaction that commits the decision. Keep personal data out: hashes only.

BODY='{ ...record }'
SIG=$(printf %s "$BODY" | ./sign-ed25519)   # base64url signature over these exact bytes
curl -s -X POST 'https://aisourceoftruth.com/v1/records' \
  -H "Authorization: Bearer $AISOT_TOKEN" \
  -H "X-AISOT-Key-Id: $AISOT_KEY_ID" \
  -H "X-AISOT-Signature: $SIG" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/vnd.aisot.record+json' \
  --data-binary "$BODY"

Check: Every decision row has a record digest.

Step 3. Hand over a bundle

Export up to 100 records per bundle for the audit period.

curl -s -X POST 'https://aisourceoftruth.com/v1/export' \
  -H 'Content-Type: application/json' \
  --data '{"digests":["{digest}"]}'

Check: The bundle verifies offline.

Step 4. Give auditors the verifier

Auditors download verify.mjs and run it themselves.

curl -s -H 'Accept: application/json' 'https://aisourceoftruth.com/v1/export/verify.mjs'

Check: An auditor reproduces the check without contacting you.

Publishing needs a publisher key and a token. The one-time setup is on /agents and in the plan's design.md.

Wire it into your agent

Publish from the service that commits decisions, inside its write path, with a retry queue so a registry outage delays the record instead of losing it.

MCP: add https://aisourceoftruth.com/mcp to the agent's MCP servers. Tools used: publish_record, export_bundle. Read tools need no token.

With the PromptReports products, or alone

Expected outcomes

What it does not prove

The OpenSpec plan for your agent

Your coding agent fetches the plan and writes it into your repo as openspec/changes/integrate-aisot-audit-trail/:

curl -H 'Accept: application/json' 'https://aisourceoftruth.com/use-cases/regulated-audit-trail/openspec?lang=python&with=commitops,repoops'

Read it here: OpenSpec plan. Back to all use cases or the documentation library.

$ curl -H 'Accept: application/json' https://aisourceoftruth.com/use-cases/regulated-audit-trail # this page is a rendering of the API. Reproduce it as data.