deepcalc-api (w1 journal + w2 state index + w3 branches/merge/policy + w4 diff/review + p2.1 slice/serving). POST /v1/workbooks/:id/branches/:branch/ops {ops:[{kind,payload}],writer} · GET .../state · .../export · POST .../flush · .../commit · .../checkpoint · POST/GET /v1/workbooks/:id/branches · POST/GET /v1/workbooks/:id/merges · GET .../merges/:mid[/conflicts|/diff?values=true] · POST .../merges/:mid/(resolve|approve|abort) · PUT .../merges/:mid/units {groups} · GET /v1/workbooks/:id/diff?from=branch[@seq]&to=...[&values=true] · GET/PUT /v1/workbooks/:id/settings · POST /v1/workbooks/:id/(verify|wake|topology) · GET /v1/workbooks[?include=archived][?source=pg (addressable {ns}/{name} registry)] · DELETE /v1/workbooks/:id (archive — writes rejected, R2 history kept; ?purge=true&confirm=TOKEN deletes the R2 prefix, tlog entries remain by design) · POST /v1/workbooks/:id/restore · GET /v1/workbooks/:id/slice?ref=REF&range=A1:Z100&lens=value|formula|input · GET /v1/workbooks/:id/values?ref=REF[&offset&limit] (p2.5: 202 {status:computing,retry_after} over the in-DO ceiling while modal fills the cache — poll the same URL) · GET /v1/workbooks/:id/eval-stats · POST /v1/workbooks/:id/eval-ceiling {cells,grid|null} (dev hook) · p2.3 tables: POST /v1/workbooks/:id/branches/:branch/tables {name,keyColumn,schema} · POST .../tables/:tid/rows {mode:import|upsert|delete, rows|keys} · DELETE .../tables/:tid · GET /v1/workbooks/:id/tables?ref=REF · GET /v1/workbooks/:id/tables/:tid/rows?ref=REF[&offset&limit] · GET /v1/workbooks/:id/tables/:tid/changes?from=REF&to=REF · p2.8 semantic match (docs/SEMANTIC.md): POST /v1/workbooks/:id/matches {branch?, left:{tableId,column}, right:{tableId,column}, opts?:{hi,lo,provider,verifyProvider,dim}} → 202 {matchId, poll} · GET /v1/workbooks/:id/matches · GET .../matches/:mid[?offset&limit] · p2.4 collab: GET /v1/workbooks/:id/ws?branch=X (websocket; wire protocol src/collab-protocol.ts — hello/presence_update/submit_ops in, presence_snapshot/presence_changed/presence_left/op_applied/ack/cell_activity/gap out) · p2.6b tlog (docs/TLOG.md, c2sp tlog-tiles): GET /v1/tlog/checkpoint (signed note) · GET /v1/tlog/tile//[.p/] + tile/entries/… (static, mirror the r2 tlog/ prefix) · GET /v1/tlog/proof?leaf_hash= · GET /v1/tlog/status · auth: every /v1 route except /v1/tlog/* needs "authorization: Bearer dc_sk_..." — register via POST https://id.deepcalc.com/agent/auth {"type":"anonymous"} (doc: GET https://id.deepcalc.com/auth.md; discovery: https://id.deepcalc.com/.well-known/oauth-protected-resource). humans sign in at https://deepcalc.com · GET /v1/account/usage (metering + plan caps) · GET /health