Skip to content

get_provenance

Signed write history of one note: which mutating tool calls changed it, newest first, each with outcome, timestamp, sha256 before/after, and who made the call. verified holds what the server established (host, and the principal/persona/session only when a bearer token was verified); unauthenticated a caller label nobody proved; self_reported what the client claimed about itself (model, project, agent, client) and can be false. Moves (move_note, bulk_move_notes, move_attachment) are followed backwards to the note’s earlier paths, but only through move records that verify: a move that fails stops the walk and is reported as lineage_incomplete. One bounded pass over the chain: scan_truncated means the row budget ran out and older history was not examined. Only paths you can read are listed, an unreadable path answers exactly like one with no history, and a record naming other paths never shows the ones you cannot read (its hash is then a hash of the visible view). cursor is the signed next_cursor of a previous page of the same request. include_verification re-checks each returned record’s hash, signature and chain link (not whole-chain completeness: run obsidian-tc provenance verify). since/until are epoch milliseconds, inclusive. Needs read:provenance as well as read:notes. response_format=concise drops the host, the full path list, the record hash and machine.

Domain notes
Scopes read:notes, read:provenance
Access read
Tags read-only, domain:notes
Profile full only
Annotation Value
Read-only yes
Destructive no
Idempotent no
Accepts an idempotency key no

Idempotent is the advisory MCP idempotentHint. Destructive is also yes for a tool that asks for confirmation only on some calls.

No human confirmation is required to call this tool.

Parameter Type Required Default Description
vault string — Vault id. May be omitted when only one vault is available. length 1–64; pattern ^[a-z0-9_-]+$
path string yes — length 1–1024
limit integer 50 range 1–200
cursor string — The next_cursor of a previous page of this same request. length 1–4096
since integer — range ≥ 0
until integer — range ≥ 0
include_verification boolean false —
response_format enum — concise returns only the high-signal fields; detailed (the shipped default) returns the full payload. Errors and safety warnings are never trimmed. When omitted, the server’s tools.defaults.responseFormat applies. One of: "concise", "detailed"
verbosity enum — Legacy alias for response_format: terse = concise, full = detailed. One of: "full", "terse"
Field Type Always present Description
vault string yes —
path string yes —
previous_paths string[] yes —
records object[] yes —
records[].seq number yes —
records[].ts number yes —
records[].tool string yes —
records[].outcome enum yes One of: "ok", "error", "pending"
records[].path string yes —
records[].before string —
records[].after string —
records[].paths object[] —
records[].paths_truncated boolean —
records[].hash string —
records[].head_untrusted boolean —
records[].verified object yes —
records[].unauthenticated object yes —
records[].self_reported object yes —
records[].verification object —
next_cursor string | null yes —
scan_truncated boolean —
lineage_incomplete object —
lineage_incomplete.reason string with parent —
lineage_incomplete.seq number with parent —

Other tools in the notes domain: append_note, bulk_create_notes, bulk_move_notes, copy_note, delete_note, fetch, list_notes, list_snapshots, move_note, note_exists, patch_note, read_note, read_notes, read_resources, read_snapshot, restore_note, snapshot_note, write_note.

Back to the tool catalog.