Docs · Agent workflows

An agent's work, anchored before it is handed over.

An agent that produces work someone relies on can anchor that work before delivering it. The deliverable is hashed on the agent's machine; only its fingerprints (for a folder, its manifest of paths, digests and sizes), and a label if the agent gives one, cross the wire; the receipt that comes back is committed to Bitcoin and outlives the platform, the agent, and this service. This page maps the six MCP tools and the batch API onto the workflows an agent actually runs.

Installing the server itself — the config block, tiers, and the privacy contract — is covered on the MCP server page. The raw HTTP surface is on the API page. This page is about which tool to reach for, when.

The six tools, by workflow

The toolThe momentWhat actually happens
anchor_output The agent just produced a result — a response, a report, a transcript. The text is hashed in-process and never leaves the machine; only the SHA-256 and SHA-512 digests, and a label if one is given, are submitted. An optional zk_proof is forwarded and echoed back as zk_provenance — it proves a fixed hash-chain procedure ran — not that a specific AI model ran. Its proving key ceremony is development-grade; we do not yet make this claim in any certified sense.
anchor_file The deliverable is a single file on disk. The file is read locally in streamed chunks, its SHA-256 and SHA-512 are computed, and the digests are submitted. The receipt id and receipt URL come back.
anchor_folder The deliverable is a whole output tree. Every file is hashed locally into an RFC-6962 Merkle tree; only the manifest of relative paths, digests and sizes, the root, and any label you give are submitted. One receipt covers the tree, and each file stays independently verifiable via an inclusion proof.
verify_receipt The agent (or its counterparty) checks a receipt during a handoff. Returns what the office recorded: calendar counts, and btc_pinned_at when present. This is a lookup, not an independent check — for an independent chain check, run ots verify against the receipt's .ots files.
verify_lineage The deliverable was revised, and the revision history is in question. Walks an edit-lineage chain from a receipt back through its committed parents and reports the ordering the anchors establish.
list_vault The agent audits what it has anchored so far. Lists the signed-in subscriber's receipts. Requires an API key (ORPHO_API_KEY), issued from the account page; without one the server returns a clean error saying so.

In every row the pattern is the same: the work stays on the agent's machine; what travels is its fingerprints (for a folder, its manifest) and any label.

Backlogs: the batch API

An agent that accumulated a backlog — a watcher that was offline, a pipeline that produced fifty artifacts before anchoring any — submits them in one request rather than fifty. POST /api/anchor/batch takes up to 50 hashes and issues each item its own receipt:

curl -X POST https://orphograph.com/api/anchor/batch \
  -H "Content-Type: application/json" \
  -H "X-Orpho-Api-Key: $ORPHO_API_KEY" \
  -d '{"hashes": [
        {"hash_hex": "<64-hex sha256>", "client_label": "report-001"},
        {"hash_hex": "<64-hex sha256>", "sha512_hex": "<128-hex sha512>"}
      ]}'

Each item takes an optional sha512_hex sibling and an optional client_label (truncated at 200 characters). Auth is the same as /api/anchor: an API key or subscription anchors under the account, a Pack token consumes one credit per item, and the free tier consumes a single rate-limit token for the whole batch. A malformed item is rejected without burning a credit.

Agent-to-agent: hiring the notary

The same handoff contract (no file bytes leave the agent) can be used with an agent-commerce protocol. Its job spec can carry the deliverable's SHA-256, and nothing else about the work; a completed response carries the receipt and a proof bundle (/api/receipt/<id>.zip) whose .ots files verify without us. The paying agent never uploads its deliverable: the same no-file-bytes contract as every row above.

On the Virtuals Agent Commerce Protocol the office is listed as provider 0x73113714cae2e351e2e0146b2f9b55c316b93f14 on Base, with two offerings:

Listing is published; fulfillment is not yet open while end-to-end settlement is being verified.

A hiring agent creates the job against that provider address by offering name (acp client create-job --provider … --offering-name bitcoin_timestamp_receipt --requirements '{"hash_hex":"…"}'), funds it, and receives the deliverable when the office's handler completes it. Verification of an attested receipt needs neither the marketplace nor the office: after Bitcoin attestation, the proof bundle checks against the Bitcoin chain with open-source tools. Pending receipts must first obtain that attestation.

The same narrow receipt, sold to machines

The published future is not a bigger notary. It is the receipt described on this page, bought and read by agents.

What the receipt settles later

Agent economies settle disputes with logs, and logs can be edited. A receipt cannot: five OpenTimestamps calendars commit the digest toward Bitcoin, and anyone can check the proof's structure offline with the MIT-licensed verifier and confirm it against Bitcoin with any OpenTimestamps client — no account, no API call, no Orphograph. The verification story for a counterparty is on the verify page; the case for anchoring agent work is at agent receipts.