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, Gemini CLI, VS Code, Codex CLI, and the generic .mcp.json form, so an agent can discover how to connect without leaving the chat.