About Privi Anchor
Privi Anchor provides on-chain hash anchoring for AI agents and applications, creating evidence that specific content existed at a given time and has not changed. Content stays off-chain, and verification can be performed independently from Base transaction data and a Merkle proof.
Key features
- 01Computes SHA-256 hashes of text
- 02Anchors batches of up to 100 hashes
- 03Returns transaction receipts and Merkle proofs
- 04Verifies anchors using chain data
- 05Reports chain and anchoring status
Use cases
- 01Create existence proofs for reports or datasets
- 02Check whether generated content was altered
- 03Timestamp audit-log heads
MCP support
Privi Anchor exposes status, text hashing, hash anchoring, and on-chain verification tools through MCP. The anchoring tool requires an API key; only hashes, not source content, are placed on chain.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://privi-anchor.onrender.com/mcpclaude mcp add --transport http canoydario847-cloud-privi-anchor https://privi-anchor.onrender.com/mcp{"mcpServers":{"canoydario847-cloud-privi-anchor":{"type":"http","url":"https://privi-anchor.onrender.com/mcp"}}}Open in Cursor{"servers":{"canoydario847-cloud-privi-anchor":{"type":"http","url":"https://privi-anchor.onrender.com/mcp"}}}Open in VS Code{"mcpServers":{"canoydario847-cloud-privi-anchor":{"type":"http","url":"https://privi-anchor.onrender.com/mcp"}}}{"mcpServers":{"canoydario847-cloud-privi-anchor":{"serverUrl":"https://privi-anchor.onrender.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEPrivi Anchor MCP
Timestamped proof that data existed, on chain. Any AI agent can fingerprint what it produced or relied on (a report, generated image, dataset, contract, model card, audit-log head) and anchor that fingerprint on chain. Anyone can later prove the exact content existed at that time and hasn't changed, by checking the chain itself rather than trusting Privi.
Works with Claude, ChatGPT, Cursor, VS Code and custom agents. Part of the Privi suite with Privi Verify and Privi Ledger.
Live: https://privi-anchor.onrender.com/mcp, anchoring on Base (chain ID 8453) until the Privi chain mainnet launches, then it moves there. Anchors made earlier on the Privi EVM Devnet (chain 262144) stay recorded. anchor_verify reports them as devnet anchors instead of failing them, and you can re-anchor any hash to get a Base receipt.
Tools
| Tool | Access | What it does |
|---|---|---|
anchor_status | free | Chain, anchor wallet, gas balance, totals |
anchor_hash_text | free | SHA-256 of text, ready to anchor |
anchor_verify | free | Proves on chain that a hash was anchored, by whom and when. With a receipt's tx_hash + proof, uses chain data only |
anchor_hashes | API key | Anchors 1-100 hashes in one transaction; returns a receipt per hash |
Only hashes go on chain, never content.
How it works
- The hashes in a call become leaves of a SHA-256 Merkle tree (
node = sha256(min(a,b) || max(a,b))). - One zero-value transaction from the anchor wallet to itself carries the root in its data:
0x50525641("PRVA") +0x01+ 32-byte root. No contract is needed. - Each hash gets a receipt: the transaction hash and its Merkle proof.
- To verify, read the transaction from any Base RPC node (or basescan.org), take the root from its data, and recompute it from the hash and proof. The block's timestamp is the proof of when.
Independent check in a few lines:
import hashlib
def node(a, b): return hashlib.sha256(min(a, b) + max(a, b)).digest()
x = bytes.fromhex(my_hash)
for sib in proof: x = node(x, bytes.fromhex(sib))
assert x.hex() == tx_input[12:] # strip "0x" + "50525641" + "01"
Access
anchor_hashes needs Authorization: Bearer <key> with a key from ANCHOR_API_KEYS and is rate-limited per key. It's free with a key. Each call is one Base transaction (a fraction of a cent of gas, paid by the anchor wallet), so the server also enforces a daily budget (ANCHOR_MAX_TX_PER_DAY, default 500). Batch up to 100 hashes per call.
Run, test, deploy
pip install -e ".[dev]"
cp .env.example .env # set ANCHOR_PRIVATE_KEY and ANCHOR_API_KEYS
pytest
privi-anchor-mcp # HTTP :8000, MCP at /mcp
The anchor wallet is a hot key. Keep only a little ETH on Base in it for gas (about $5 lasts weeks at the default budget). /status shows its balance and gas_ok.
Public explorer feed
For Privi Explorer (CORS open, free): GET /anchors/recent?limit&before lists anchor batches newest first (Merkle root, transaction, block, hash count; never the label or the client), and GET /anchors/verify/<sha256> runs the same on-chain check as anchor_verify for one hash.
License
MIT © 2026 Dario Canoy, Privi World Co
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.