Evidence infrastructure · Anchored on SwissDLT

Proof, without
the payload.

Timestamp sensitive files without uploading them. This service turns a local fingerprint into a signed checkpoint anchored on SwissDLT — portable, independently verifiable evidence.

01

Your file stays yours.
Hashing happens in this browser.

02

Your proof travels.
Merkle receipts and SwissDLT transaction proofs.

03

Your trust endures.
Verify later, without asking us first.

New evidence receiptSHA-256
Blinded commitmentAdd a random salt before anything leaves your browser.

0 bytes of source content uploaded. Only a 32-byte blinded commitment is sent. Keep your evidence package: it contains the salt needed for later verification.

10 free stamps per day · larger plans via office@operal.biz

0 Bsource content uploaded
256 bitrandom commitment salt
2 layerssigned checkpoint + SwissDLT
1 fileportable evidence package
Trust, made inspectable

Evidence that answers precise questions.

01

What existed?

A blinded commitment binds your evidence to exact bytes without exposing those bytes to the proof service.

02

When did it exist?

Signed checkpoints provide immediate evidence; SwissDLT adds an independently checkable transaction confirmation.

03

Can I still verify?

Your original file, salt and receipt reproduce the commitment. The proof does not depend on a customer account.

Independent verification

Don’t trust. Verify.

Check a file against its evidence package. Your original file remains in this browser throughout verification.

01 · Original file
02 · Evidence package
Evidence registry

Receipts, not files.

Only blinded commitments and proof metadata are stored here. No filenames or source documents.

Total receipts—
SwissDLT confirmed—
Awaiting confirmation—
Signed checkpoints—
ReceiptCreatedCommitmentStatusHeightActions
Loading receipts…
API & MCP

Small API. Strong evidence.

Integrate commitments and receipts without creating a raw-data path through your application or AI agent.

1Local fileYour trust boundary
→
2Blinded hash32 bytes only
→
3Merkle batchSigned checkpoint
→
4SwissDLTAnchor transaction
→
5ReceiptPortable evidence
REST · Create a timestampPOST
curl http://localhost:4173/api/v1/timestamps \
  -H 'Content-Type: application/json' \
  -d '{
    "commitment": "YOUR_64_CHARACTER_BLINDED_SHA256",
    "clientReference": "opaque-workflow-id"
  }'

Source files, original hashes, filenames and salts are deliberately not accepted.

MCP · Agent-safe tools2026-07-28
POST /mcp

proof_submit   Submit a blinded commitment
receipt_get    Retrieve proof and status
anchor_run     Process pending commitments
proof_verify   Verify a local digest + receipt

Streamable HTTP · JSON-RPC 2.0 · Optional bearer-token enforcement.

Runtime

Anchor configuration

Mode
—
Region
Switzerland
MCP endpoint
/mcp
Proof calendars
—
Public verification

Checkpoint key

Ed25519 public key used to validate signed checkpoints. This is a public verification key, not a secret.

Service health ↗
Documentation

Built to be checked. Documented to be used.

How the service works, how to integrate it, and where its limits are. For teams handling sensitive files in regulated environments, including health-sector evidence workflows.

User guide

Create, keep, verify.

01

Create a timestamp.

Drop a file on the create page. It is hashed locally in your browser; only a blinded 32-byte commitment is sent. Download the evidence package — it carries the salt and file metadata the server never saw.

02

Keep the package.

Store the evidence package next to the original file, or in your records system. Verification needs the original file and this package; there is no account to log into and nothing to request from us.

03

Verify at any time.

Open the verify page, provide the original file and the package, and the attestations are re-checked: commitment, Merkle path, signed checkpoint and SwissDLT transaction confirmation.

10 free stamps per day · larger plans via office@operal.biz

REST API

Endpoints and payloads.

Base URL is the service origin. All endpoints speak JSON. A bearer token is required only when the operator has configured one.

MethodPathPurpose
GET/api/v1/healthService status and anchor mode.
GET/api/v1/configRegion, anchor mode, checkpoint key, stats, MCP and live quota.
POST/api/v1/timestampsSubmit a blinded commitment; returns the receipt.
GET/api/v1/timestampsList receipts: commitments and proof metadata only.
GET/api/v1/timestamps/{id}One receipt with checkpoint and confirmation state.
GET/api/v1/timestamps/{id}/transactionDownload the SwissDLT transaction proof for a confirmed receipt.
POST/api/v1/anchorProcess pending commitments into a signed checkpoint.
POST/api/v1/upgradeCheck for SwissDLT transaction confirmations.
POST/api/v1/verifyVerify an evidence package against a local digest and commitment.
Create a timestampPOST
curl http://localhost:4173/api/v1/timestamps \
  -H 'Content-Type: application/json' \
  -d '{
    "commitment": "YOUR_64_CHARACTER_BLINDED_SHA256",
    "clientReference": "opaque-workflow-id"
  }'

The commitment is SHA-256(domain · SHA-256(file) · salt). Source files, original hashes, filenames and salts are deliberately not accepted.

MCP

Agent-safe tools.

One streamable-HTTP endpoint at /mcp speaking JSON-RPC 2.0 (protocol version 2026-07-28). Optional bearer-token enforcement; an origin check can be enabled by the operator.

ToolDescription
proof_submitSubmit an existing blinded SHA-256 commitment.
receipt_getRetrieve a timestamp receipt and its proof status by receipt ID.
anchor_runAnchor all currently pending commitments and check for confirmations.
proof_verifyVerify an evidence package against a locally computed file digest and commitment.

Agents must never place source files, original hashes, filenames or salts in tool arguments — only blinded commitments and receipt IDs.

SwissDLT

Signed checkpoint + SwissDLT.

Every commitment first enters a Merkle batch. The batch root is signed with an Ed25519 checkpoint key, producing a signed checkpoint: immediate, independently verifiable evidence that this commitment existed at checkpoint time.

Signed checkpoints are then anchored in a SwissDLT transaction submitted from the BCTS anchor wallet. Once the transaction is confirmed, the receipt carries an independently verifiable SwissDLT transaction proof, downloadable per receipt at /api/v1/timestamps/{id}/transaction.

Anchoring

BCTS anchor wallet

The service publishes the anchor wallet address here as soon as the operator configures it.

Anchor address
Not published yet
Mode
—
Two layers

What each layer proves

Signed checkpoint
Inclusion in a Merkle batch, signed by the service’s checkpoint key.
SwissDLT confirmation
The checkpoint is anchored in a confirmed SwissDLT transaction.
Rate limits

Fair use, by design.

Daily quota.

10 free stamps per day per client. The create page and this section show the live remaining count when the service publishes it.

Payload limits.

Commitment requests up to 16 KB. Verification requests up to 8 MB. Evidence packages up to 8 MB. Source files up to 250 MB, hashed locally in the browser.

Larger plans.

For higher volumes, anchoring under your own BCTS anchor wallet, or health-sector deployments, contact office@operal.biz.

OperalEvidence certificate
Cryptographic proof of existence

Timestamp evidence

This certificate records the blinded commitment and proof state for the evidence package identified below. Verify with the original file and complete evidence package.

This certificate does not establish the truth, legality or accuracy of the underlying content. A pending SwissDLT transaction is not yet a confirmed attestation.