Prove that a document existed before a specific moment in time. No subscription. No account.
No server to trust. The proof lives in a .ots file and in the Bitcoin blockchain — and stays
valid forever, even if OTSkit disappears tomorrow.
OpenTimestamps is an open standard for decentralized timestamp
proofs. When you stamp a file, its cryptographic hash is submitted to public calendar servers
that batch-anchor it into a Bitcoin block. The result is a compact .ots proof file you keep
locally — no trusted third party required to verify it, ever.
Most existing OpenTimestamps tools are either abandoned, Python-only, or lack the resilience needed for production pipelines. OTSkit is a TypeScript-native implementation built for real-world use: circuit breakers, local SQLite persistence, automatic upgrade scheduling, and an MCP server so any AI agent can stamp files from a conversation.
If OTSkit disappears tomorrow, every proof ever generated stays valid forever.
AI agent audit trail — Every document your agent processes gets a tamper-proof timestamp. Prove what your agent did, on what file, and when.
File integrity — Stamp contracts, reports, or source code. Verify later that nothing changed.
Software releases — Timestamp each build artifact or SBOM. Prove your release existed before a specific date.
Digital preservation — Generate OAIS/PREMIS-compliant preservation packages anchored to Bitcoin.
| Package | What it does |
|---|---|
@otskit/core |
OpenTimestamps protocol engine — zero dependencies, TypeScript-native |
@otskit/client |
Production SDK with circuit breakers, SSRF protection, auto-retry |
@otskit/mcp |
MCP server — 8 tools for Claude, Codex, and any MCP-compatible agent |
| OTSkit Skills | Agent skills for BagIt/OAIS/PREMIS digital preservation workflows |
The low-level protocol engine. A zero-dependency, pure TypeScript implementation of the OpenTimestamps protocol — create, serialize, deserialize, merge, and verify timestamp proofs with no npm supply chain risk. Supports Merkle tree batching so thousands of documents can be anchored in a single Bitcoin transaction. Built with TypeScript 6 strict mode and a fail-closed security posture that rejects any malformed input by default.
The production SDK. Wraps the full stamp → upgrade → verify workflow with enterprise-grade
resilience: per-calendar circuit breakers, exponential backoff with jitter, dual timeouts, and
configurable N-of-M submission thresholds so one failing calendar never blocks the rest.
Requires Node.js 20+ (uses native crypto, dns, and net APIs). Tree-shakeable dual
ESM/CJS build with @otskit/core as its only runtime dependency.
An MCP server exposing 8 timestamping tools to any MCP-compatible AI agent — Claude, Codex, or any agent that speaks the Model Context Protocol. Stores all proofs in a local SQLite database, runs an automatic upgrade scheduler to detect Bitcoin confirmations, and includes a CLI for direct use outside of agents. Setup is a single command.
Agent skills for producing standards-compliant digital preservation packages. Say "preserve
this folder" and your agent generates a BagIt (RFC 8493) archive with OAIS/PREMIS metadata,
computes its hash, and anchors it to Bitcoin — delivering four portable files: a .zip, a
.sha256, a .ots proof, and a stamp ID for future verification.
New to MCP? → 5-minute setup guide
npm install -g @otskit/mcp
ots-mcp setup claude-code # or: claude, codexRestart your agent and ask: "Stamp this file and prove it exists on Bitcoin."
import { OpenTimestampsClient } from '@otskit/client';
import { createHash } from 'node:crypto';
import { readFileSync } from 'node:fs';
const hash = createHash('sha256').update(readFileSync('document.pdf')).digest('hex');
const client = new OpenTimestampsClient();
const proof = await client.stamp(hash); // Returns .ots proof as Buffer
// Later — upgrade when Bitcoin has confirmed (~60 min)
const upgraded = await client.upgrade(proof);The closest alternatives are OriginStamp (commercial, proprietary proof format), the OpenTimestamps CLI (Python, no TypeScript SDK), and getAlby/ots-mcp (MCP-only, no local persistence):
| OTSkit | OriginStamp | OpenTimestamps CLI | getAlby/ots-mcp | |
|---|---|---|---|---|
| Cost per stamp | Free | ~$12K/yr (500K stamps) | Free | Free |
| Proof format | .ots (open standard) | Proprietary (JSON/PDF) | .ots (open standard) | .ots (open standard) |
| Works if service disappears | ✅ Always | ✅ Always | ✅ Always | |
| TypeScript SDK | ✅ Native | ❌ | ||
| MCP integration (AI agents) | ✅ 8 tools | ❌ | ❌ | ✅ 6 tools |
| Local persistence (SQLite) | ✅ | ❌ Cloud only | ❌ Files only | ❌ |
| Auto-upgrade scheduler | ✅ | ❌ | ❌ | ❌ |
| Resilience (circuit breakers) | ✅ Per-calendar | ❌ | ❌ | |
| OAIS / PREMIS preservation | ✅ via Skills | ❌ | ❌ | ❌ |
| Open source | ✅ MIT | ✅ LGPL | ✅ MIT |
OTSkit proves that a specific file existed before a specific Bitcoin block. That's the guarantee, and it's a strong one.
It does not prove:
- Who created the file
- That the file hasn't changed since
- Anything about legal validity in any jurisdiction
The proof is cryptographic, not legal. What it means in a legal context depends on your jurisdiction and circumstances. Consult a lawyer for use in legal proceedings.
MIT License · Built on the OpenTimestamps open standard
