Mint a ZK-STARK for any computation — cryptographic proof your code ran on the inputs it claims, without revealing them. Generate in seconds, verify in milliseconds. One curl, or one MCP install.
The only production prover that runs in O(√N) memory instead of O(N) (where N = size of the computation) — a 100M-step proof fits on a laptop instead of a 256-GB server.
Free tier · 100 proofs/month · No credit card · First proof in 60 secondsProved that 42 is in range [0, 100] without revealing the value. Verified in 2.8ms.
TinyZKP ships as an MCP server with 10 tools. Your agent calls prove the way it calls any other tool. No glue code, no SDK juggling, no key handling outside the agent.
Or download the stdio binary for Claude Desktop, Cursor, and other clients.
Prove a password hash matches, a value is in range, or a computation is correct — without revealing any secrets.
POST to /prove/template/range_proof with your parameters. Choose from 6 built-in templates — or browse them via /templates. You get a job ID instantly.
Our servers generate a ZK-STARK proof using O(√N) memory, where N is the size of the computation. No trusted setup. No ceremony. Typical proofs complete in 1–5 seconds.
Anyone can verify the proof in milliseconds via /verify. Always free. Or get /calldata for on-chain verification. The verifier learns nothing except that the statement is true.
Python, TypeScript, or plain curl. Your first proof is free.
from tinyzkp import TinyZKP async with TinyZKP("https://api.tinyzkp.com", api_key="tzk_...") as client: job_id = await client.prove_template("range_proof", params={"min": 0, "max": 100, "witness_steps": [42, 44]}) proof = await client.wait_for_proof(job_id) result = await client.verify(proof) # free!
import { HcClient } from "tinyzkp"; const client = new HcClient("https://api.tinyzkp.com", { apiKey: "tzk_..." }); const jobId = await client.proveTemplate("range_proof", { min: 0, max: 100, witness_steps: [42, 44] }); const proof = await client.waitForProof(jobId); const result = await client.verify(proof); // free!
# Submit a proof via template (recommended) curl -X POST https://api.tinyzkp.com/prove/template/range_proof \ -H "Authorization: Bearer tzk_..." \ -H "Content-Type: application/json" \ -d '{"params":{"min":0,"max":100,"witness_steps":[42,44]}}' # {"job_id":"abc123..."} # Poll for result curl https://api.tinyzkp.com/prove/abc123... \ -H "Authorization: Bearer tzk_..." # Verify (free) curl -X POST https://api.tinyzkp.com/verify \ -H "Authorization: Bearer tzk_..." \ -d '{"proof":{...}}'
# Zero install, runs anywhere with Node 18+ export TINYZKP_API_KEY=tzk_... npx @tinyzkp/cli prove range_proof '{"min":0,"max":100,"witness_steps":[42,44]}' --wait > proof.json npx @tinyzkp/cli verify proof.json # → ✔ valid (round-trip 8 ms)
// Verify proofs client-side — no server, no API key import init, { verify } from '@tinyzkp/verify'; await init(); const result = verify({ version: 4, bytes: proofBytes }); console.log(result.ok); // true — verified in WASM, offline
Pick the audience that matches what you're shipping. Verification is always free across every tier.
Range proofs, hash preimages, policy compliance, data integrity, accumulator steps, computation attestations. Sub-second proofs. The wedge for AI-agent receipts.
Annual billing: 20% off any paid plan. · Need a one-off large trace? Overage is metered per million steps; Scale tier gets a 40% discount off the per-proof base rate. Team-tier pricing is available — contact us for an intermediate plan.
Other production STARK provers need O(N) memory — linear in computation size. TinyZKP's height-compressed architecture needs only O(√N), where N is the number of computation steps.
| Trace | Conventional STARK | TinyZKP |
|---|---|---|
| 1M steps | 10–20 GB RAM | ~30 MB |
| 10M steps | 100+ GB RAM | ~100 MB |
| 100M steps | Needs fleet sharding | ~300 MB |
Same cryptographic guarantees: ZK-STARK, ≥128-bit soundness, transparent, post-quantum. See the whitepaper →
Verification is always free across every tier · @tinyzkp/verify WASM package verifies anywhere in 5 ms
After claude mcp add ..., every tool below is callable from inside the agent.
Local stdio install (Claude Desktop, Cursor):
{
"mcpServers": {
"tinyzkp": {
"command": "hc-mcp-stdio",
"args": ["--api-key", "tzk_..."]
}
}
}