live_export_cancel_run
ChatGPTStop an in-flight run. A run that already finished returns run_not_active.
live_export_create
ChatGPTCreates a draft live export: a one-way scheduled copy from a source app into destination tables the export creates. NEVER ask the person for credentials in chat: create with connector names only and the export comes back with a pending_actions link per side where the person connects securely in the app — relay each link. Include auth inline only for api_key connectors whose credentials were already handed to you programmatically. Not idempotent: if a call fails ambiguously, check live_export_list before retrying.
live_export_delete
ChatGPTDeletes the live export and its schedule. Tables already created in the destination stay put.
live_export_get
ChatGPTFull live export details: status, both sides, schedule, last run, and pending_actions. When pending_actions is non-empty, relay each action's url and instruction to the person verbatim — browser sign-ins can only be done by a human.
live_export_get_mappings
ChatGPTThe working mappings document: which source tables copy into which to-be-created destination tables, field by field. Carries the revision to send back on live_export_update_mappings.
live_export_get_run
ChatGPTOne run with its ordered steps (pull → map → write) — where a failed run explains itself.
live_export_get_save
ChatGPTThe latest save: how it ended (with per-table errors), staying on the line while one is still running. succeeded is authoritative — it is only reported when no edits remain unsaved. If it returns a still-running state, simply call it again.
live_export_get_schedule
ChatGPTThe export's cadence and on/off switch, plus allowed_cadences from the person's plan. There is no pause/activate — the schedule IS the lifecycle switch.
live_export_get_status
ChatGPTThe live view: whether a run is in flight right now, and when the next scheduled run fires.
live_export_list
ChatGPTThe account's live exports, newest first. Paginate with cursor when has_more is true.
live_export_list_connectors
ChatGPTThe connectors usable for live exports, each with the roles it can play (source, destination) and its auth. A separate registry from sync_list_connectors — the same brand can differ per surface.
live_export_list_locations
ChatGPTWhere the destination can host created tables (an Airtable base, a Notion parent page). Pick one with live_export_update. Only destinations with pickable locations return any.
live_export_list_runs
ChatGPTOne export's recent runs, newest first — the monitoring surface (live exports have runs, not issues; a failed run's error is the diagnostic). History is retention-bounded.
live_export_list_source_fields
ChatGPTOne source table's exportable fields, each with the name and type it would get in the destination. Pick from these when writing mappings — field types are planned by the server, never chosen by you.
live_export_list_source_tables
ChatGPTThe exportable tables in the source app. Live — the connector enumerates them, so it can be slow.
live_export_save
ChatGPTCreate the mapped tables and fields in the destination app, then apply the runnable pipeline. This is the apply point: mapping edits change nothing until a save lands. The call stays on the line while the save runs (usually well under a minute), streaming progress; a still-running result says to call live_export_get_save for the outcome. succeeded is authoritative — it also requires unsaved_changes to be false on the export. Runs overwrite the destination tables this export manages — treat destination data as replaceable before pointing an export at anything a person cares about.
live_export_trigger
ChatGPTRun the export now, regardless of the schedule. One run at a time — a trigger while one is active returns run_in_progress. Unsaved mapping edits return the unsaved_changes conflict (the run would use the last-saved pipeline, not them): live_export_save first, or — only if the person explicitly wants the old pipeline — pass force. Runs overwrite the destination tables this export manages — treat destination data as replaceable before pointing an export at anything a person cares about.
live_export_update
ChatGPTRename it, complete an api_key side's withheld auth, or set the destination's location (where created tables live, from live_export_list_locations).
live_export_update_mappings
ChatGPTDeclarative full replace of the mappings document. Edits the working draft only — nothing is created in the destination until live_export_save. The document: {"tables": [{"source_table", "destination_table": {"create": {"name"}}, "fields": [{"source_field", "destination_field": {"create": {"name", "primary?"}}}]}]}. Reference source tables/fields by the ids the list tools return. Send back the revision you read — a stale revision fails instead of overwriting someone's edit.
live_export_update_schedule
ChatGPTTurn the export on or off, set its cadence, and set the time of day a daily export runs. Creates the schedule on first use; missing fields keep their current values. Requires a saved export. Runs overwrite the destination tables this export manages — treat destination data as replaceable before pointing an export at anything a person cares about.
live_export_validate_mappings
ChatGPTThe checks live_export_update_mappings would run, as a report instead of a rejection.
live_export_whats_next
ChatGPTThe happy-path compass for live exports: given where an export actually is, the ordered next steps — including the browser connection steps only a person can do (relay those verbatim). Call it with no arguments to get oriented, or whenever unsure.
sync_activate
ChatGPTTurns a paused sync on. A draft whose mappings a person has not yet reviewed fails with confirmation_required — relay the required_action's url so they can review and start it in the app.
sync_create
ChatGPTCreates a draft sync between two connectors. NEVER ask the person for credentials in chat: create the sync with connector names only (no auth, no base) and it comes back with a pending_actions link per side where the person connects securely in the app — relay each link. That is the only option for OAuth connectors (the person picks the base in the browser; even a remote_id you know from another sync cannot be pre-selected), and the default for API-key connectors too; include auth inline only when the credentials were already handed to you programmatically. Validation reports the first problem it finds, so fix and retry rather than expecting every issue at once. Not idempotent: if a call fails ambiguously, check sync_list before retrying.
sync_delete
ChatGPTStops and deletes the sync. The connected apps and their data are not touched.
sync_get
ChatGPTFull sync details: status, both sides, open issue count, review_url, and pending_actions. When pending_actions is non-empty, relay each action's url and instruction to the person verbatim — those steps (browser sign-in, reviewing before starting) can only be done by a human.
sync_get_issue
ChatGPTOne issue in full, including its remediation.
sync_get_mappings
ChatGPTThe sync's declarative mappings document plus its revision. Keep the revision and send it back with sync_update_mappings so a concurrent edit fails instead of being silently overwritten. Also the place to find a table pair's sync filter and advanced settings when asked why some records never sync.
sync_get_operation
ChatGPTOne operation in full, including per-field changes.
sync_get_record_status
ChatGPTEverything known about one record's sync state — the diagnosis tool for "why isn't this record syncing". Returns open issues blocking it, a pending delete awaiting a person's review, operations queued right now, per-side flags (deleted / filtered out by a sync filter / sync disabled), links to the record in both apps, and its most recent operations. queued_operations null means the queue could not be consulted, not that it is empty. For older history call sync_list_operations with record. Diagnose from the flags and issues before assuming the sync itself is broken: a filtered or sync-disabled record is excluded on purpose, and a pending delete waits for a person to approve it in the app.
sync_get_status
ChatGPTA live snapshot: pending pushes and each side's polling/initializing state. Makes live calls, so it can take a few seconds — use sync_get for the cheap summary.
sync_list
ChatGPTThe account's syncs, newest first. Paginate with cursor when has_more is true.
sync_list_bases
ChatGPTThe bases/sites/databases the credential on one side can reach, fetched live from the connected app (can take a few seconds). Reference a base by its remote id — names are not unique.
sync_list_connectors
ChatGPTEvery connector Whalesync supports, with its auth method (API key fields vs browser OAuth) and capabilities. Start here to learn what a sync side needs.
sync_list_fields
ChatGPTThe fields of one table with type metadata, from the cached schema. Reference the table by table_… id, remote id, or exact name — resolution tries them in that order, so when the same string names tables on both sides (Postgres remote ids are bare table names), pass side to pin which one you mean. May block for up to a minute while a fetch completes. When choosing what to map: fields with write: false (formulas, created-time, Whalesync's synthesized record id, …) can only be the SOURCE side of a one-way mapping — include them only when the person wants that value in the other app (syncing a record id across is a common, legitimate case). Skip fields whose type_details.mapping_disabled is true, and map link/reference fields only when the table they point at is also mapped.
sync_list_issues
ChatGPTOpen issues on one sync, each with a remediation hint. Empty means healthy.
sync_list_operations
ChatGPTThe record-level change log for one sync, newest first: what was created, updated, or deleted, where, and why. The place to verify a sync is actually moving data.
sync_list_pending_deletes
ChatGPTDeletes waiting on a person for one sync. When a record goes missing on one side, Whalesync holds the delete rather than applying it to the other side, so an accidental delete or an app outage cannot destroy data. Each entry links to the record in the connected app so a person can look before deciding. Approving or ignoring is irreversible and deliberately not in this API — relay the entry's review_url. A sync that auto-approves deletes has no queue and answers delete_approval_disabled; sync_get reports which mode a sync is in before you call.
sync_list_tables
ChatGPTThe tables on one side of the sync, from Whalesync's cached schema (fetched automatically the first time). Pass refresh: true after changing the connected app's schema; refresh requires the sync to be off. May block for up to a minute while a fetch completes.
sync_pause
ChatGPTTurns an active sync off. Mappings can only be edited while paused. A sync still working through its initial sync fails with initial_sync_running — only a person can stop that, from the sync in the app.
sync_retry_issue
ChatGPTRe-attempts the failed work behind an issue. Fix the cause (see remediation) first.
sync_search_records
ChatGPTFind a record in one sync by its id in the connected app (e.g. an Airtable "rec…" id), its Whalesync rec_… id, or its display text (fuzzy). The first step when a person asks why a specific record is not syncing — take a result's id to sync_get_record_status. Exact id matches come first. Results are capped, not paginated: when has_more is true, narrow the query.
sync_update
ChatGPTRename the sync, amend a draft side, or update credentials.
sync_update_mappings
ChatGPTReplaces the whole mappings document (fetch with sync_get_mappings, modify, send back — there is no partial edit). Validate first with sync_validate_mappings. Referenced tables whose fields were never fetched are fetched during the call, so a first update can take a few seconds. The sync must be paused or draft.
sync_validate_mappings
ChatGPTChecks a candidate mappings document (or the stored one, if tables is omitted) without changing anything. Empty issues means valid. Can take a few seconds if referenced tables need a schema fetch.
sync_whats_next
ChatGPTReports where a sync is in the setup flow and the recommended next steps, including any action only a person can do (relay those verbatim). Call it with no arguments to get oriented, or whenever unsure.
activate_sync
Claudecreate_sync
Claudedelete_sync
Claudeget_issue
Claudeget_mappings
Claudeget_operation
Claudeget_record_status
Claudeget_sync
Claudeget_sync_status
Claudelist_bases
Claudelist_connectors
Claudelist_fields
Claudelist_issues
Claudelist_operations
Claudelist_pending_deletes
Claudelist_syncs
Claudelist_tables
Claudelive_export_cancel_run
Claudelive_export_create
Claudelive_export_delete
Claudelive_export_get
Claudelive_export_get_mappings
Claudelive_export_get_run
Claudelive_export_get_save
Claudelive_export_get_schedule
Claudelive_export_get_status
Claudelive_export_list
Claudelive_export_list_connectors
Claudelive_export_list_locations
Claudelive_export_list_runs
Claudelive_export_list_source_fields
Claudelive_export_list_source_tables
Claudelive_export_save
Claudelive_export_trigger
Claudelive_export_update
Claudelive_export_update_mappings
Claudelive_export_update_schedule
Claudelive_export_validate_mappings
Claudelive_export_whats_next
Claudepause_sync
Clauderetry_issue
Claudesearch_records
Claudesync_activate
Claudesync_create
Claudesync_delete
Claudesync_get
Claudesync_get_issue
Claudesync_get_mappings
Claudesync_get_operation
Claudesync_get_record_status
Claudesync_get_status
Claudesync_list
Claudesync_list_bases
Claudesync_list_connectors
Claudesync_list_fields
Claudesync_list_issues
Claudesync_list_operations
Claudesync_list_pending_deletes
Claudesync_list_tables
Claudesync_pause
Claudesync_retry_issue
Claudesync_search_records
Claudesync_update
Claudesync_update_mappings
Claudesync_validate_mappings
Claudesync_whats_next
Claudeupdate_mappings
Claudeupdate_sync
Claudevalidate_mappings
Claudewhats_next
Claude