# list_syncs Behavior, inputs, outputs and permissions for list_syncs. Source: https://docs.getridian.com/developers/tools/list_syncs/ Language: en Reviewed: 2026-10-06 This reference is generated from the published tool contract. ## Behavior and boundaries Lists the user's own sync pairs in the connected workspace: which calendar feeds which, the state, and where a pair is not running, a documented reason, a next step and, where a page in Ridian completes it, nextStepUrl. A two-way sync is one pair, not two. Calendar names follow the granted selection; a calendar outside it is returned with a null name rather than the pair being hidden. It returns no event titles. The short ref (sync_1, sync_2, …) is the input for diagnose_sync and set_sync_paused; it is positional, so call list_syncs again if pairs may have changed since. An empty list means the user has no own pairs here, not that the workspace has none. Pausing and resuming work here with set_sync_paused, and a new one-way sync with preview_sync and create_sync; changing rules or deleting a sync happens in the Ridian app. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `sync:read` [Consent and boundaries](https://docs.getridian.com/developers/authentication/) ## Input ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": {}, "additionalProperties": false } ``` ## Output ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "syncs": { "type": "array", "items": { "type": "object", "properties": { "ref": { "type": "string" }, "source": { "type": "object", "properties": { "id": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] } }, "required": [ "id", "name" ], "additionalProperties": false }, "target": { "type": "object", "properties": { "id": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] } }, "required": [ "id", "name" ], "additionalProperties": false }, "twoWay": { "type": "boolean" }, "status": { "type": "string", "enum": [ "active", "paused", "error", "deleting" ] }, "reason": { "anyOf": [ { "type": "string", "enum": [ "userPaused", "sourceUnavailable", "targetUnavailable", "targetReadOnly", "unsupportedProvider", "planLimit", "other" ] }, { "type": "null" } ] }, "nextStep": { "type": [ "string", "null" ] }, "nextStepUrl": { "type": [ "string", "null" ] }, "unavailableSince": { "type": [ "number", "null" ] } }, "required": [ "ref", "source", "target", "twoWay", "status", "reason", "nextStep", "nextStepUrl", "unavailableSince" ], "additionalProperties": false } }, "scope": { "type": "string", "const": "own_pairs_in_this_workspace" } }, "required": [ "syncs", "scope" ], "additionalProperties": false } ``` ## Errors and retries Check the tool result for errors. Do not blindly retry writes after a timeout. Check the current resource or send status first. [Error handling](https://docs.getridian.com/developers/errors/)