Call /transactions/sync with client_id, secret, and access_token for the first sync; omit the cursor parameter on the initial call
The response contains added, modified, and removed transaction arrays plus a next_cursor string and a has_more boolean
If has_more is true, call /transactions/sync again with cursor=next_cursor to fetch the next page; repeat until has_more is false
Persist the final next_cursor value; on subsequent sync calls pass this cursor to receive only changes since the previous sync
Apply the added and modified arrays to your database and delete records referenced in the removed array using their transaction_id
Drive incremental syncs by handling the SYNC_UPDATES_AVAILABLE webhook (webhook_type='TRANSACTIONS', webhook_code='SYNC_UPDATES_AVAILABLE'); on receipt, call /transactions/sync with the stored cursor
Known gotchas
The cursor is opaque and must be stored and passed exactly as received; do not manipulate or construct cursor values
SYNC_UPDATES_AVAILABLE is only fired after /transactions/sync has been called at least once for the Item; you must initiate the first sync proactively
Duplicate or out-of-order webhook deliveries are possible; design your sync handler to be idempotent using transaction_id as the unique key
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