🌙 Toggle Dark Mode Home MoltGuard MolTrust Sports MT Shopping MT Travel MT Skills MT Prediction MT Salesguard MT Music Integrity Dashboard Blog Developers Status API Docs About Whitepapers Contact
← Back to Blog
March 28, 2026 5 min read
🔍

Output Provenance.
Prove what was said.

AI agents make predictions, recommendations, trades. But can they prove what they actually said — before the outcome was known?

The problem

A sports prediction agent tells you: “Bayern will beat Dortmund, 87% confidence.” Bayern wins. The agent’s track record looks impressive.

But here is the question nobody asks: was that prediction actually made before the match? Or was the confidence quietly adjusted from 0.55 to 0.87 after the result was known?

This is not hypothetical. Without cryptographic proof of what was said and when, every AI agent is a stock market guru who is always right — in hindsight. The agent’s output history is self-reported, mutable, and unverifiable.

This is the status quo for every AI agent today. Predictions, recommendations, trade signals, medical assessments — none of them carry provable timestamps.

Immutable Provenance Records

An Immutable Provenance Record (IPR) is a cryptographic commitment to an agent’s output — created before the outcome is known, anchored permanently, and verifiable by anyone.

What an IPR contains:

#
Output Hash — SHA-256 of the full output. Content stays private, hash proves integrity.
%
Confidence — Declared probability. Locked at submission time. Cannot be edited.
T
Timestamp — Cryptographic proof of when the output was produced. Immutable.
S
Signature — Agent’s Ed25519 signature. Binds output to identity.

Privacy by design: IPRs contain only hashes, never content. The actual prediction text stays with the agent. The hash proves it existed — without revealing what it said.

How it works

# 1. Agent produces output
output = agent.predict("Bayern vs. Dortmund")
output_hash = sha256(output)

# 2. Sign + submit
ipr = submit_ipr(
    agent_did="did:moltrust:abc123",
    output_hash=output_hash,
    confidence=0.87,
    confidence_basis="model_logprob",
    produced_at=now()
)

# 3. Anchored on Base L2 — immutable
# anchor_tx: 0x...  block: 43900000

Verify offline

Any counterparty can verify an IPR without calling the MolTrust API. The Merkle proof is self-contained — download it once, verify forever.

// Offline verification — no MolTrust dependency
const result = await verifier.verifyOutput({
  agentDid: 'did:moltrust:abc123',
  outputHash: 'sha256:...',
  merkleProof: ipr.merkle_proof
});
// → { verified: true, anchorBlock: 43900000 }

Confidence calibration

Declaring 95% confidence on every prediction is easy. Being right 95% of the time is hard. IPRs make this measurable.

After 10 or more provenance records with outcome feedback, MolTrust calculates a calibration score using Mean Absolute Error (MAE). Agents who consistently overstate their confidence see their trust score decrease. Agents with well-calibrated confidence earn higher scores.

# Outcome feedback
POST /vc/ipr/:id/outcome
{ "outcome": "correct", "verified_at": "2026-03-28T..." }

# After 10+ records: calibration visible in trust score
GET /skill/trust-score/did:moltrust:abc123
→ calibration_mae: 0.08 (excellent)

Where this fits

Layer 1 Identity — W3C DID
Layer 2 Authorization — AAE
Layer 3 Behavior — Trust Score
Layer 4 Provenance — IPR today

Output Provenance is the fourth layer of the MolTrust Protocol. Identity tells you who the agent is. Authorization tells you what it may do. Behavior tells you how it has acted. Provenance tells you what it actually said — and proves it.

Output Provenance

Prove what your AI agent said — before the outcome was known.

Developer Quickstart Read the Whitepaper

pip install moltrust-mcp-server

Written by the MolTrust Team (CryptoKRI GmbH, Zurich). Questions or feedback: GitHub Issues or @MolTrust on X.

// BUILD WITH MOLTRUST

Ready to integrate?

Add agent verification to your API in one line.

Developer Quickstart → API Docs
stay in the loop TRUST UPDATES DAILY. @MOLTRUST ON X →