{"openapi":"3.1.0","info":{"title":"Acuity Scheduling Config (BYOK) API","version":"0.1.0","description":"Acuity Scheduling Config (BYOK) lets an AI assistant read your own Acuity Scheduling Config data through the Acuity Scheduling Config API with a key you supply (Acuity numeric user ID). Read-only: 5 tools (list_intake_forms, list_appointment_labels, list_blocked_time, list_appointment_addons, list_available_classes). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-acuity-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-acuity-config/docs"},"termsOfService":"https://connectorbay.com/byok-acuity-config/terms"},"servers":[{"url":"https://byok-acuity-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-acuity-config/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_intake_forms":{"post":{"operationId":"list_intake_forms","summary":"List the intake forms with name, description, hidden flag, the appointment type ids they apply to and their field defini","description":"List the intake forms with name, description, hidden flag, the appointment type ids they apply to and their field definitions (labels, types, required flag, options). No answers are returned. Use for \"Which intake forms and questions does my Acuity account use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_intake_formsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_appointment_labels":{"post":{"operationId":"list_appointment_labels","summary":"List the status labels that can be put on appointments (for example Confirmed or Checked In) with id, name and color. Us","description":"List the status labels that can be put on appointments (for example Confirmed or Checked In) with id, name and color. Use for \"Which appointment labels exist in my Acuity account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_appointment_labelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_blocked_time":{"post":{"operationId":"list_blocked_time","summary":"List blocked-off time on calendars (including recurring blocks) with calendar, start, end and description; filter by dat","description":"List blocked-off time on calendars (including recurring blocks) with calendar, start, end and description; filter by dates or calendar. Block notes are not returned. Use for \"When is time blocked off on my Acuity calendars next month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"max":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of blocks to return (default 100).","title":"Max"},"min_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only blocks on or after this date, YYYY-MM-DD.","title":"Min Date"},"max_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only blocks on or before this date, YYYY-MM-DD.","title":"Max Date"},"calendar_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this calendar id.","title":"Calendar Id"}},"title":"list_blocked_timeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_appointment_addons":{"post":{"operationId":"list_appointment_addons","summary":"List the add-ons that can extend an appointment with name, extra duration in minutes, price and private flag. Use for \"W","description":"List the add-ons that can extend an appointment with name, extra duration in minutes, price and private flag. Use for \"Which add-ons can clients book in Acuity\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_appointment_addonsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_available_classes":{"post":{"operationId":"list_available_classes","summary":"List class offerings for a month (or a date range) with name, time, calendar, duration, capacity and remaining slots; by","description":"List class offerings for a month (or a date range) with name, time, calendar, duration, capacity and remaining slots; by default only classes that can still be booked. Use for \"Which Acuity classes still have free spots in November\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"month":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Month to check, for example 2026-11 (replaces the date range).","title":"Month"},"appointment_type_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this class appointment type id.","title":"Appointment Type Id"},"calendar_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this calendar id.","title":"Calendar Id"},"timezone":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Long time zone id for the answer, for example America/New_York.","title":"Timezone"},"min_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Earliest date, YYYY-MM-DD (ignored when month is set).","title":"Min Date"},"max_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Latest date, YYYY-MM-DD (ignored when month is set).","title":"Max Date"},"include_unavailable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to also list classes that are full or no longer bookable.","title":"Include Unavailable"},"include_private":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to also list classes marked private.","title":"Include Private"}},"title":"list_available_classesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}