# Markovian Protocol > Markovian lets an agent commit a claim, resolve the outcomes decidable from public data, and trace the lineage of any output, all bound into a public witnessed transparency log with Bitcoin-anchored heads and verifiable by anyone, without trusting the agent or an operator. It proves what was committed and when, and settles outcomes by deterministic replay. It does not assert that arbitrary claims are true. Markovian has three primitives over one atomic output. One claim, many envelopes. - COMMIT writes a content-agnostic provenance record: a SHA-256 data hash and a Merkle root, bound as a leaf into a public append-only transparency log that independent witnesses cosign, verifiable by anyone with no account and without trusting the issuer. It proves that an agent made a claim, and when. It makes no statement about whether the claim is correct. - RESOLVE decides whether a claim actually holds, for outcomes decidable from public data, by deterministically replaying that data into a verdict anyone can recompute, anchored to Bitcoin, with no oracle and no trusted party. It is the only primitive that returns a verdict. - TRACE walks the lineage between records across agent handoffs, verifying every node and edge against Bitcoin. It shows what produced an agent's output, so an agent is checked, not trusted. In short: COMMIT proves a claim was made, RESOLVE decides whether it holds, TRACE shows what produced it. The same provenance record is the canonical object `markovian-provenance/v1`. It plugs into the standards agents already use. ## Witnessed log - Markovian operates a public, append-only transparency log (C2SP checkpoint format) at https://log.markovianprotocol.com . Signed head: /checkpoint . Any leaf: /leaf/{i} . Bulk: /leaves?start={s}&end={e} . Inclusion proof: /inclusion?leaf={i}&size={n} - Seven independent witnesses, run by unrelated operators, cosign each checkpoint. A cosignature attests the log is append-only with a single history. It does not attest that any claim in the log is true. Roster, key sources, and the 4-of-7 acceptance rule: https://markovianprotocol.com/witness-policy.html - Checkpoints are timestamped into Bitcoin hourly with OpenTimestamps: https://log.markovianprotocol.com/anchor - Standalone verifier with the witness keys pinned in source: https://markovianprotocol.com/.well-known/verify_checkpoint.py . Browser verification of all seven cosignatures: https://markovianprotocol.com/trace.html - Verify a log record by hash: GET https://markovianprotocol.com/anchor/{sha256-hex} recomputes the RFC 6962 inclusion proof server-side. rootcommit/v3 records also return an EIP-712 signer verdict, binding an EVM wallet to a log root under a Bitcoin timestamp. - Markovian also runs a public witness for other transparency logs: https://witness.markovianprotocol.com/about ## New in August 2026 — the log is public infrastructure now - WITNESS WATCH (the landing page, https://markovianprotocol.com/): our witness cosigns other operators' transparency logs, free. Published rules, live member roster, per-log badge served from the cosign table: https://witness.markovianprotocol.com/badge/{sha256(origin)}.svg - NOTARIZE ANYTHING, no account: POST "sha256:{64 hex}" to https://log.markovianprotocol.com/submit (hash-only; rate-limited). The JSON receipt carries leaf index, inclusion proof, an offline proof bundle, and a human receipt page at https://markovianprotocol.com/r/{leaf}. Browser drag-and-drop (file hashed locally, never uploaded): https://markovianprotocol.com/log.html - OFFLINE PROOF BUNDLES per leaf (c2sp.org/tlog-proof): https://log.markovianprotocol.com/proof/{i} Machine-readable witness trust policy (c2sp.org/tlog-policy, 4-of-7): https://log.markovianprotocol.com/policy - QUERY WITH COMPLETENESS PROOFS: https://markovianprotocol.com/ask.html — streams number records densely, so the browser can prove an answer set is complete (nothing withheld), not merely unaltered. - PROVE A PREDICTION (commit now, reveal after): https://markovianprotocol.com/predict.html - RUN THIS EXACT STACK: https://github.com/MarkovianProtocol/log-server — the live one-file log server, the witness, the offline verifier, tiles, SCITT receipts. Apache-2.0. - WITNESS WATCH: hourly verified oversight of the witness fleet itself — every witness on the shared network polled through the tlog-witness monitoring API, cosignatures verified against pinned keys, answers archived and compared across the fleet. Operator alerts free. - MCP tool for agents: markovian_notarize (path hashed locally or sha256) at https://api.markovianprotocol.com/mcp/ ## Doors - [W3C Verifiable Credentials](https://markovianprotocol.com/vc.html): Live. The record becomes the credentialSubject of a signed Verifiable Credential. Endpoints: /.well-known/did.json, /vc/provenance/v1, POST /credential, POST /credential/verify. - [Model Context Protocol](https://markovianprotocol.com/mcp.html): Live. An MCP server exposes the tools markovian_stamp and markovian_verify over Streamable HTTP at https://api.quantsynth.net/mcp/ . Listed in the official MCP registry as io.github.MarkovianProtocol/provenance - [ERC-8004, Trustless Agents](https://markovianprotocol.com/erc8004.html): Live on Base mainnet. Agent 59270 is registered on the ERC-8004 registry with trust model witnessed-log. A deterministic-replay resolution validator is published at https://github.com/MarkovianProtocol/erc8004-resolution-validator . The page documents the earlier Sepolia validation demo. - x402: Live. A paid endpoint at https://markovianprotocol.com/signal/latest returns 402 payment terms and sells one signal for 0.02 USDC on Base. Each settlement is stamped as a leaf in the witnessed log, for example https://log.markovianprotocol.com/leaf/912 - [OpenTimestamps](https://markovianprotocol.com/ots.html): Live. Every COMMIT root carries a standard Bitcoin timestamp proof (.ots), verifiable with stock tooling and no trust in Markovian. Download at GET https://api.quantsynth.net/verify/{merkle_root}.ots - [Ethereum Attestation Service](https://markovianprotocol.com/eas.html): Testnet. The record is registered as an EAS schema (markovian-provenance/v1) and issued as an attestation on Sepolia, with refUID linking onto existing attestations. - [C2PA](https://markovianprotocol.com/c2pa.html): Live. A namespaced assertion (com.markovianprotocol.provenance.v1) inside a C2PA content manifest, surviving even if the manifest is stripped. - [CloudEvents](https://markovianprotocol.com/cloudevents.html): Live. The record rides on a CloudEvent as extension attributes (markovianroot, markovianverify, markovianprovenance), so provenance follows the event across every transport. ## Trace - TRACE composes stamps into one provenance graph: a stamp can reference another stamp, with the parent bound inside the committed bytes (tamper-evident), so the doors become nodes and references become edges. TRACE walks a stamp's lineage and verifies every node and edge against Bitcoin, returning a verified map. This is how an agent is checked rather than trusted. - Showcase: https://markovianprotocol.com/trace.html ## Verify - Verify any record by Merkle root: https://api.quantsynth.net/verify/{merkle_root} - Live verifiable demo, a real record checked in the browser: https://demo.markovianprotocol.com ## Stamp Stamping is frictionless. POST /stamp with a data payload and nothing else: no account, no wallet, no funding. The protocol mints an ephemeral committer and returns a verifiable record. By default the stamp is anonymous and free. An optional key may be supplied to attribute repeated stamps to the same agent, so an agent can accumulate a verifiable, replayable track record. curl -X POST https://api.quantsynth.net/stamp -H "Content-Type: application/json" -d '{"data":"anything"}' ## Canonical record The `markovian-provenance/v1` object carries: merkle_root, data_hash, issuer (the committer handle; `wallet` is kept as a compatibility alias), stamped_at, a public verify URL, and an attestation noting the record proves provenance and time, not correctness. Two legacy fields, zk_commitment and block_height, are null on new stamps; historical values date from a retired internal chain and were never client-verifiable. ## Reference - GitHub: https://github.com/MarkovianProtocol - Integration specs for the MCP and C2PA doors live under specs/ in the repository. ## Primitives - [COMMIT](https://commit.markovianprotocol.com): prove what an agent produced, the content-agnostic stamp. - [RESOLVE](https://resolve.markovianprotocol.com): settle what an agent asserts, oracle-free outcome resolution by deterministic replay. - [TRACE](https://markovianprotocol.com/trace-explorer.html): trace where an output came from, lineage across the doors. - [How it composes](https://markovianprotocol.com/atomic.html): one atomic output, three primitives.