provenance
Server Details
Stamp any data to the Markovian chain for a verifiable provenance receipt. Proves timing, not truth.
- Status
- Healthy
- Uptime
- 99.8% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools are largely distinct: notarize and stamp both commit to a transparency log, but notarize targets files/hashes with a receipt while stamp supports arbitrary data and lineage via derived_from. Trace and verify are clearly separated as walker vs. checker. Minor overlap exists between notarize and stamp, but descriptions provide enough context to choose correctly.
All tools follow a uniform pattern: 'markovian_' + single verb (notarize, stamp, trace, verify). This is consistent and predictable, with no mixing of styles or ambiguous verb choices.
Four tools is well-scoped for a provenance server: two creation methods (notarize for files/hashes, stamp for arbitrary data with lineage), one verification, and one lineage trace. Each tool serves a distinct purpose and none feel redundant or missing.
The tool set covers the full lifecycle: create (stamp/notarize), verify, and trace lineage. Since provenance stamps are immutable, there's no need for update/delete. The surface is complete for the domain without dead ends.
Available Tools
4 toolsmarkovian_notarizeMarkovian NotarizeAInspect
Notarize any file or hash into a public transparency log cosigned by 7 independent witnesses and anchored to Bitcoin. Hash-only: pass a local file path (hashed on this machine; the file never leaves it) or a sha256 hex string — only 32 bytes reach the log. Returns a receipt with the leaf index, inclusion-proof URL, an offline c2sp.org/tlog-proof bundle URL, and the witness trust policy. Proves the hash existed no later than the covering checkpoint, in a single history everyone sees identically; does NOT prove authorship or that the content is true. Rate-limited (10/hour). Typical use: notarize an output the moment it is produced, keep the file, hand anyone the proof URL.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Local file to notarize. Hashed here; never uploaded. | |
| sha256 | No | Alternatively, a sha256 hex digest (with or without 'sha256:' prefix). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond annotations by explaining privacy ('the file never leaves it'), rate limits ('Rate-limited (10/hour)'), the nature of the proof ('Proves the hash existed no later than the covering checkpoint'), and explicit disclaimers ('does NOT prove authorship'). It also discloses the receipt contents and the anchored-to-Bitcoin mechanism, giving a very clear behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence immediately establishes the core purpose. Subsequent sentences incrementally add essential details (input options, return values, guarantees, limitations, rate limit, typical use) without redundancy. Every sentence carries useful information, making it dense yet digestible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description fully specifies the return value ('a receipt with the leaf index, inclusion-proof URL, an offline c2sp.org/tlog-proof bundle URL, and the witness trust policy'). It also covers privacy, proof semantics, limitations, rate limiting, and a use case, making it self-sufficient for an agent to invoke and understand the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (path, sha256) with 100% coverage. The description adds the either/or semantics ('pass a local file path ... or a sha256 hex string') and the detail that 'only 32 bytes reach the log,' which enriches the parameter meaning without duplicating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Notarize any file or hash into a public transparency log cosigned by 7 independent witnesses and anchored to Bitcoin.' It distinguishes itself from sibling tools by focusing on notarization, which is a distinct action from stamping, tracing, or verifying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool: 'Typical use: notarize an output the moment it is produced, keep the file, hand anyone the proof URL.' It also notes a limitation ('does NOT prove authorship or that the content is true'). However, it does not explicitly mention alternatives or when not to use it, so it misses the full 5 score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markovian_stampMarkovian Provenance StampAInspect
Commit any data (an AI output, a decision, a record) into a public, witnessed transparency log and get back a verifiable, tamper-evident provenance stamp (canonical markovian-provenance/v1). It proves the data existed and was committed at this time; it does NOT assert the data is correct (provenance, not truth). No wallet, account, or funding is required, the first stamp just works, and only the SHA-256 hash of your data is sent to the public API, the raw data is never stored. The returned merkle_root is the handle: save it, then call markovian_verify(merkle_root) to prove integrity later, or pass prior stamps in derived_from to build a lineage you can walk with markovian_trace. Typical use: stamp an agent output the moment it is produced, so anyone can later confirm it was not altered.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Exact bytes/string to stamp. Hashed server-side; raw data is not stored. | |
| label | No | Optional human label for the stamp. | |
| wallet | No | Optional. Omit and the protocol mints an ephemeral committer for you. Provide one to attribute the stamp. | |
| derived_from | No | Optional lineage. A list of prior stamps this output was derived from, each {merkle_root, data_hash}. Bound inside the committed bytes so the link is tamper-evident; the payload is published so markovian_trace can walk it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issuer | No | The committer handle, as named in the transparency-log leaf. Attribution metadata, not a cryptographic identity. |
| schema | Yes | |
| verify | Yes | |
| wallet | Yes | Compatibility alias for issuer (kept because existing clients require it). |
| data_hash | Yes | |
| stamped_at | Yes | |
| attestation | Yes | |
| merkle_root | Yes | |
| block_height | No | Legacy field, null for stamps after 2026-07. Historical values are internal sequence heights of a retired chain (never a Bitcoin block). |
| zk_commitment | No | Legacy field, null for stamps after 2026-07. Historical values are Pedersen points that shipped without an opening, so clients could never check them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses multiple traits beyond annotations: sends only SHA-256 hash, never stores raw data, requires no wallet/account, returns merkle_root as handle, and proves existence/time but not correctness. These details add context annotations can't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence contributes distinct information, structured from core action to caveats, privacy, and usage. Length is appropriate for the tool's complexity, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage guidelines, behavioral constraints, privacy, output handle, and lineage, all in one cohesive description. Output schema exists for return format, so no gap there. For a 4-parameter external-facing tool, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all 4 params, so baseline is 3. Description adds key semantics: data is hashed server-side, derived_from creates tamper-evident lineage, wallet can be omitted for ephemeral committer. This elevates above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses 'Commit' to specify the action, identifies the resource (data) and output (provenance stamp). It explicitly names sibling tools markovian_verify and markovian_trace and contrasts its role (stamping) with verification and tracing, fully distinguishing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete use case: 'stamp an agent output the moment it is produced' and clarifies it is for provenance, not correctness. It also states no account/funding required, reducing selection barriers, and refers to alternative tools for verification/tracing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markovian_traceMarkovian TraceARead-onlyInspect
Walk and verify a stamp's full provenance lineage by merkle_root. Use this when a stamp was created with derived_from links, to map what an output was built from. Returns a MAP of the graph (not a yes/no verdict): each node carries hash_binds and anchored, each edge carries edge_verified, and valid is true only if every node and edge checks out. A node whose payload was never published is an unresolved frontier (resolved:false). Read-only. Provenance, not truth.
| Name | Required | Description | Default |
|---|---|---|---|
| merkle_root | Yes | root of the stamp to trace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds critical context: returns a map (not boolean), describes graph structure (nodes, edges, 'valid' logic, unresolved frontier), and states 'Read-only. Provenance, not truth.' No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-structured, front-loading the main action. A few sentences could be tightened, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema provided, so description must explain return format. It does so thoroughly: map with nodes, edges, valid flag, unresolved frontier. Covers all critical aspects of a complex trace tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but parameter description is minimal ('root of the stamp to trace'). Description adds meaning by explaining the purpose and that merkle_root is the provenance root to trace.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'walk and verify', the resource 'stamp's full provenance lineage', and the input 'merkle_root'. It distinguishes from siblings by mentioning 'derived_from links' and contrasting with verification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when a stamp was created with derived_from links', providing clear context. Does not explicitly exclude alternatives but implies when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markovian_verifyMarkovian VerifyARead-onlyInspect
Look up a Markovian stamp by its merkle_root against the public verifier, with no key or account. verified:true means the stamp record exists and the response echoes its committed data_hash — recompute your content's SHA-256 and compare it to that data_hash yourself to confirm the content is unaltered. An unknown merkle_root returns verified:false. The trust-nobody path is the stamp's witnessed transparency-log leaf (log_index / inclusion URL from markovian_stamp): its inclusion proof verifies against the witnessed log head with no trust in this endpoint. Read-only; anyone can run it, including a party who does not trust the stamper.
| Name | Required | Description | Default |
|---|---|---|---|
| merkle_root | Yes | merkle_root to verify. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses the exact meaning of verified:true (record exists and echoes data_hash), instructs the user to recompute SHA-256 for integrity, explains verified:false for unknown roots, and details the trustless verification path via the transparency log. This adds substantial behavioral context about return semantics and security properties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds critical information: the verb and resource, response semantics, unknown-root behavior, trustless alternative, and access/read-only note. It is structured logically, starting with the primary action and moving to verification details, without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description fully explains the return behavior (verified field, data_hash, inclusion proof) and tells the user exactly how to perform content verification and obtain the needed log index/URL from markovian_stamp. It covers both normal and trustless usage, making the tool self-sufficient for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only says 'merkle_root to verify,' but the description enriches this by explaining it's the stamp's merkle_root, defining behavior for known/unknown values, and connecting it to the data_hash comparison. With 100% schema coverage, the baseline is 3, but the added semantic context about verification logic justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Look up a Markovian stamp by its merkle_root against the public verifier,' which is a specific verb+resource+parameter construction. It clearly distinguishes from siblings by focusing on verification rather than stamping (markovian_stamp) or tracing (markovian_trace), and further clarifies 'Read-only; anyone can run it.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states this is the verification step and references markovian_stamp as the source of the log index/inclusion URL, making the workflow between stamp and verify explicit. It also provides the trust-nobody alternative, implying that users who don't trust this endpoint should use the witnessed inclusion proof, though it does not explicitly list exclusions or when to prefer a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
markovian_notarize
1 tool update
- Changed
markovian_stamp4 fields changed- changed
Output schema / properties / block_height / descriptionPrevious value: -"Protocol-internal sequence height where the commitment was recorded (not a Bitcoin block)."New value: +"Legacy field, null for stamps after 2026-07. Historical values are internal sequence heights of a retired chain (never a Bitcoin block)." - added
Output schema / properties / issuerAdded value: +{ + "description": "The committer handle, as named in the transparency-log leaf. Attribution metadata, not a cryptographic identity.", + "type": "string" +} - added
Output schema / properties / wallet / descriptionAdded value: +"Compatibility alias for issuer (kept because existing clients require it)." - added
Output schema / properties / zk_commitment / descriptionAdded value: +"Legacy field, null for stamps after 2026-07. Historical values are Pedersen points that shipped without an opening, so clients could never check them."
1 tool update
- Changed
markovian_stamp2 fields changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Optional. Omit and the protocol mints an ephemeral committer for you. Provide one to attribute the stamp or to burn from your own MKV balance."New value: +"Optional. Omit and the protocol mints an ephemeral committer for you. Provide one to attribute the stamp." - changed
Output schema / properties / block_height / descriptionPrevious value: -"Markovian chain height where the commitment was recorded (the Markovian chain block, not a Bitcoin block)."New value: +"Protocol-internal sequence height where the commitment was recorded (not a Bitcoin block)."
1 tool update
- Changed
markovian_stamp1 field changed- added
Output schema / properties / block_height / descriptionAdded value: +"Markovian chain height where the commitment was recorded (the Markovian chain block, not a Bitcoin block)."
2 tool updates
- Changed
markovian_stamp1 field changed- added
Input schema / properties / derived_fromAdded value: +{ + "description": "Optional lineage. A list of prior stamps this output was derived from, each {merkle_root, data_hash}. Bound inside the committed bytes so the link is tamper-evident; the payload is published so markovian_trace can walk it.", + "items": { + "properties": { + "data_hash": { + "type": "string" + }, + "merkle_root": { + "type": "string" + }, + "relationship": { + "type": "string" + } + }, + "required": [ + "merkle_root", + "data_hash" + ], + "type": "object" + }, + "type": "array" +}
- Added
markovian_trace
1 tool update
- Changed
markovian_stamp2 fields changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"MKV wallet that pays the 1 MKV burn and is recorded as committer."New value: +"Optional. Omit and the protocol mints an ephemeral committer for you. Provide one to attribute the stamp or to burn from your own MKV balance." - changed
Input schema / requiredPrevious value: -[ - "data", - "wallet" -]New value: +[ + "data" +]
2 tool updates
- First observed
markovian_stamp - First observed
markovian_verify
Related MCP Connectors
Stamp content with permanent, verifiable provenance. Hash locally, verify free forever.
Prove you made it first. Blockchain Timestamp creative work via Claude or any MCP-enabled AI Agent.
Timestamp & verify evidence on-chain, free. Proofpack: a portable BEEF+BUMP proof bundle per txid.
Capture a web source, or seal a hash you hold, into a signed receipt anyone can verify offline.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables creating and verifying permanent, publicly verifiable content provenance stamps via MCP tools.11 npmMIT
- AlicenseAqualityAmaintenanceStamp, upgrade, and verify Bitcoin timestamps via AI agents using the OpenTimestamps protocol. No API keys required.29322 npm3MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to create document timestamps on a VerusID, writing directly to the Verus blockchain via a local or remote daemon.42 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables tamper-evident anchoring of file, text, or JSON hashes to the BSV blockchain via MCP tools, with verification and lookup capabilities.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.