# find_available_rooms Behavior, inputs, outputs and permissions for find_available_rooms. Source: https://docs.getridian.com/developers/tools/find_available_rooms/ Language: en Reviewed: 2026-09-20 This reference is generated from the published tool contract. ## Behavior and boundaries Checks live free/busy for up to 20 Microsoft 365 or Google Workspace rooms returned by search_rooms. It never returns event titles, attendees, or organizer data. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `rooms:read` [Consent and boundaries](https://docs.getridian.com/developers/authentication/) ## Input ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "accountId": { "type": "string", "minLength": 1 }, "roomIds": { "minItems": 1, "maxItems": 20, "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 512 } }, "start": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", "description": "ISO 8601 timestamp with an explicit UTC offset, for example 2026-09-14T09:00:00+02:00 or 2026-09-14T07:00:00Z. A timeZone field does not replace the offset." }, "end": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", "description": "ISO 8601 timestamp with an explicit UTC offset, for example 2026-09-14T09:00:00+02:00 or 2026-09-14T07:00:00Z. A timeZone field does not replace the offset." } }, "required": [ "accountId", "roomIds", "start", "end" ], "additionalProperties": false } ``` ## Output ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "accountId": { "type": "string" }, "provider": { "type": "string" }, "start": { "type": "string" }, "end": { "type": "string" }, "rooms": { "type": "array", "items": { "type": "object", "properties": { "roomId": { "type": "string" }, "name": { "type": "string" }, "capacity": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "building": { "type": "string" }, "floor": { "type": "string" }, "features": { "type": "array", "items": { "type": "string" } }, "available": { "type": "boolean" } }, "required": [ "roomId", "name", "available" ], "additionalProperties": false } } }, "required": [ "accountId", "provider", "start", "end", "rooms" ], "additionalProperties": false } ``` ## Errors and retries Check the tool result for errors. Do not blindly retry writes after a timeout. Check the calendar state first. [Error handling](https://docs.getridian.com/developers/errors/)