# setup_status Behavior, inputs, outputs and permissions for setup_status. Source: https://docs.getridian.com/developers/tools/setup_status/ Language: en Reviewed: 2026-10-06 This reference is generated from the published tool contract. ## Behavior and boundaries Reports aggregate setup state and a machine-readable next step. For an external mailbox-only OAuth grant it returns mailboxes.total for accessible enabled Agent Mailboxes and requires inbox:read; no calendar account is required. Otherwise it returns calendar account counts per provider and state plus sync counts and requires calendar:read. nextStepUrl links to the page in Ridian where the user completes that step; it is null when setup is ready. Returns no calendar names, event titles or email addresses. Read-only. Connecting or reconnecting an account always happens in the Ridian app; a first sync can be created there or with preview_sync and create_sync. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `calendar: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": { "accounts": { "type": "object", "properties": { "total": { "type": "number" }, "active": { "type": "number" }, "authError": { "type": "number" }, "disabled": { "type": "number" }, "byProvider": { "type": "array", "items": { "type": "object", "properties": { "provider": { "type": "string" }, "active": { "type": "number" }, "authError": { "type": "number" }, "disabled": { "type": "number" } }, "required": [ "provider", "active", "authError", "disabled" ], "additionalProperties": false } } }, "required": [ "total", "active", "authError", "disabled", "byProvider" ], "additionalProperties": false }, "syncs": { "type": "object", "properties": { "total": { "type": "number" }, "active": { "type": "number" }, "paused": { "type": "number" }, "error": { "type": "number" }, "deleting": { "type": "number" } }, "required": [ "total", "active", "paused", "error", "deleting" ], "additionalProperties": false }, "mailboxes": { "type": "object", "properties": { "total": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "required": [ "total" ], "additionalProperties": false }, "assistantGrant": { "type": "object", "properties": { "granted": { "type": "boolean", "const": true } }, "required": [ "granted" ], "additionalProperties": false }, "nextStep": { "type": "string", "enum": [ "connect_first_account", "reconnect_account", "create_first_sync", "ready", "open_mailbox" ] }, "nextStepUrl": { "type": [ "string", "null" ] } }, "required": [ "assistantGrant", "nextStep", "nextStepUrl" ], "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/)