Reference
The eleven tools
Exposed over stdio by the tuskpoint-mcp server. Plus a twelfth helper, tuskpoint_info, that returns ready-to-paste client configuration so an agent can wire itself up.
Write
Persist, branch, roll back, or hand off a run.
checkpoint_save(thread_id, state_json)Serialize agent state, gzip it, and store it as an immutable Walrus blob. Also writes a one-line summary to MemWal.
→ { checkpoint_id, blob_id, thread_id }
e.g. checkpoint_save("run-42", '{"step":"research","sources":["a","b"]}')
checkpoint_fork(source_thread, source_id, new_thread)Git-branch an agent run. Copy any checkpoint into a new thread to replay a different path, the original stays untouched.
→ { new_thread_id, checkpoint_id, blob_id, forked_from }
e.g. checkpoint_fork("run-42", "0c3b84d1-…", "run-42-alt")
checkpoint_rollback(thread_id, checkpoint_id)Durable, auditable undo. Re-writes an earlier checkpoint's state as a new head of the same thread, append-only, so history (and the audit trail) stays intact.
→ { checkpoint_id, restored_from, blob_id, rolled_back_from }
e.g. checkpoint_rollback("run-42", "0c3b84d1-…")
handoff_checkpoint(thread_id, checkpoint_id, to_agent?)Emit a tiny portable descriptor (blob id + SHA-256 + provenance) so another agent can adopt this exact state. No state is copied, only the Walrus pointer and its hash cross the boundary.
→ { source, blob_id, blob_sha256, to_agent }
e.g. handoff_checkpoint("run-42", "0c3b84d1-…", "agent-b")
adopt_checkpoint(handoff_json, new_thread_id)Adopt a handoff descriptor: re-fetch the blob from Walrus, verify its SHA-256 against the sender's, and write it as the genesis of a new thread. A tampered blob is rejected before it becomes state.
→ { adopted_from, new_thread_id, checkpoint_id, verified }
e.g. adopt_checkpoint(descriptor, "agent-b-run")
Read
Deterministic, content-addressed reads from Walrus.
checkpoint_load(thread_id, checkpoint_id?)Load a specific checkpoint by ID (or the latest). Deterministic, content-addressed read straight from Walrus.
→ { state, checkpoint_id, blob_id }
e.g. checkpoint_load("run-42", "0c3b84d1-…")
checkpoint_list(thread_id)List every checkpoint for a thread, newest first, with lineage, timestamps, and summaries from the manifest.
→ { count, checkpoints[] }
e.g. checkpoint_list("run-42")
checkpoint_resume(thread_id)Rehydrate the latest state so an agent can continue exactly where it left off after a crash.
→ { state, checkpoint_id }
e.g. checkpoint_resume("run-42")
checkpoint_diff(thread_id, id_a, id_b)Compare two checkpoints and report exactly what was added, removed, or changed between them.
→ { added, removed, changed, human_readable }
e.g. checkpoint_diff("run-42", id_a, id_b)
verify_trail(thread_id)Audit a thread end-to-end. Re-fetches every content-addressed blob and recomputes its SHA-256, so tampering or corruption shows up as a FAIL step rather than a silent pass.
→ { ok, checkpoint_count, verified, tampered_count, steps[] }
e.g. verify_trail("run-42")
Discover
Find the right checkpoint in plain English.
checkpoint_search(query)Ask a question in plain English. MemWal returns the nearest checkpoint summaries, pointers you then load exactly.
→ { results: [{ text, distance }] }
e.g. checkpoint_search("when did the writer start?")
tuskpoint_info
Calling tuskpoint_info returns the full tool list plus copy-paste MCP config for Claude Desktop, Claude Code, Cursor, Windsurf, and the generic .mcp.json form, so an agent can discover how to connect without leaving the chat.