AISOURCEOFTRUTH.COM

Evidence an investigator can take to court

Hash-only evidence records for cases such as prediction-market fraud, amendments that point back, and an export with proofs and timestamps.

Who this is for

Investigators, fraud teams and lawyers, for example in prediction-market fraud cases.

The problem

Screenshots and exports are easy to challenge. Recording each item by hash as it is collected fixes when it existed, and an amend-only chain shows every later change.

How it works

Routes it uses

Set it up

Step 1. Record on capture

Hash each item when captured and publish an evidence record: evidence: { case_id, item_id, kind, captured_at }. Content stays with you.

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: Each captured item has a record.

Step 2. Amend, never edit

For a corrected item, publish a new record with amends naming the old record.

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: The case chain shows the amendment linked to the original.

Step 3. List the case

List every record for the case by its case id.

curl -s -H 'Accept: application/json' 'https://aisourceoftruth.com/v1/records?ref={ref}'

Check: The count matches your evidence log.

Step 4. Export

Export the case for a regulator or a court.

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

Check: The bundle verifies offline.

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 capture tool, so an item cannot enter the case folder without a record.

MCP: add https://aisourceoftruth.com/mcp to the agent's MCP servers. Tools used: publish_record, search_records, 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-evidence-records/:

curl -H 'Accept: application/json' 'https://aisourceoftruth.com/use-cases/evidence-for-court/openspec?lang=python'

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

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