Load a table with GET /v1/{prefix}/namespaces/{namespace}/tables/{table}; the response includes the current metadata-file location, a metadata object, and optionally vended credentials
Read the current snapshotId and last-sequence-number from the returned metadata
Build an UpdateTableRequest containing a list of requirements (e.g., assert-current-snapshot-id) and a list of updates (e.g., add-snapshot, set-snapshot-ref)
POST the UpdateTableRequest to /v1/{prefix}/namespaces/{namespace}/tables/{table} to commit atomically
On a 200 response, parse the new metadata location; on 409 (CommitFailedException) re-load the table and retry
Known gotchas
Requirements in the commit request act as optimistic concurrency guards; omitting assert-current-snapshot-id can allow blind overwrites that corrupt table history
Vended credentials returned by loadTable are short-lived; cache them only for the duration of the write operation and refresh by re-calling loadTable if they expire
The POST to commit a table update (updateTable) uses the same path as the GET (loadTable) but a different HTTP method; some HTTP clients or proxies may unexpectedly cache GET responses at this path
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp