Acuity Scheduling MCP by usefulapi
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read appointments, types, calendars and availability; create, cancel or reschedule bookings.
| Author | io.usefulapi |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 364 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Acuity Scheduling MCP by usefulapi": {
"url": "https://acuity-scheduling.usefulapi.io/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (18)
acuity_list_appointmentsread-onlyList appointments scheduled on the account, with optional filters. Acuity REST: GET /appointments.
Parameters:
max— integer — Max appointments to return.email— string — Filter by client email.maxDate— string — Only appointments on/before this date (YYYY-MM-DD or ISO datetime).minDate— string — Only appointments on/after this date (YYYY-MM-DD or ISO datetime).canceled— boolean — If true, return canceled appointments (default false).lastName— string — Filter by client last name.direction— string — Sort order by datetime. ASC (default) or DESC.firstName— string — Filter by client first name.calendarID— integer — Filter to a specific calendar id.appointmentTypeID— integer — Filter to a specific appointment type id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_get_appointmentread-onlyGet a single appointment by its id. Acuity REST: GET /appointments/{id}.
Parameters:
id(required) — integer — Appointment id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_appointment_typesread-onlyList the account's appointment types (services and classes), including price, duration and calendars. Acuity REST: GET /appointment-types.
Parameters:
includeDeleted— boolean — If true, also include deleted/inactive appointment types.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_calendarsread-onlyList the account's calendars (staff/resources appointments can be booked on). Acuity REST: GET /calendars.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_availability_datesread-onlyList dates in a month that have availability for an appointment type. Acuity REST: GET /availability/dates.
Parameters:
appointmentTypeID(required) — integer — Appointment type id to check availability for (required).month(required) — string — Month to check, formatted YYYY-MM, e.g. '2026-08'.timezone— string — IANA timezone for the returned dates, e.g. 'America/New_York'.calendarID— integer — Restrict to a specific calendar id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_availability_timesread-onlyList available time slots on a given date for an appointment type. Acuity REST: GET /availability/times.
Parameters:
appointmentTypeID(required) — integer — Appointment type id to check availability for (required).date(required) — string — Date to check, formatted YYYY-MM-DD, e.g. '2026-08-15'.timezone— string — IANA timezone for the returned times, e.g. 'America/New_York'.calendarID— integer — Restrict to a specific calendar id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_availability_classesread-onlyList group class time slots (for class-type appointment types) in a month. Acuity REST: GET /availability/classes.
Parameters:
appointmentTypeID(required) — integer — Class appointment type id (required).month(required) — string — Month to check, formatted YYYY-MM, e.g. '2026-08'.timezone— string — IANA timezone for the returned times, e.g. 'America/New_York'.includeUnavailable— boolean — If true, also include full/unavailable class times.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_clientsread-onlyList clients on the account, optionally filtered by a search string (name/email/phone). Acuity REST: GET /clients.
Parameters:
search— string — Optional search string to match client name, email, or phone.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_formsread-onlyList the account's custom intake forms and their fields. Acuity REST: GET /forms.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_productsread-onlyList the account's products / packages / gift certificates for sale. Acuity REST: GET /products.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_ordersread-onlyList store orders (product / package / gift-certificate purchases). Acuity REST: GET /orders.
Parameters:
max— integer — Max orders to return.email— string — Filter orders by buyer email.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_blocksread-onlyList blocked-off (unavailable) time ranges on the account's calendars. Acuity REST: GET /blocks.
Parameters:
max— integer — Max blocks to return.maxDate— string — Only blocks on/before this date (YYYY-MM-DD or ISO datetime).minDate— string — Only blocks on/after this date (YYYY-MM-DD or ISO datetime).calendarID— integer — Filter to a specific calendar id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_list_labelsread-onlyList the appointment labels (colored tags) defined on the account. Acuity REST: GET /labels.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_get_meread-onlyGet the authenticated Acuity account's profile (name, email, timezone, plan, currency). Acuity REST: GET /me.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
acuity_create_appointmentdestructiveCREATES a new appointment (books a client into a time slot). This MODIFIES the calendar and, unless suppressed, may send confirmation emails. Acuity REST: POST /appointments.
Parameters:
appointmentTypeID(required) — integer — Appointment type id to book (required).datetime(required) — string — Start time in ISO 8601 with offset, e.g. '2026-08-15T14:00:00-0400' (required).firstName(required) — string — Client first name (required).lastName(required) — string — Client last name (required).email(required) — string — Client email (required).admin— boolean — If true, book as admin — bypasses availability checks and required-form enforcement. Default false.notes— string — Notes to attach to the appointment.phone— string — Client phone number.fields— array — Intake form field answers, each { id, value }.noEmail— boolean — If true, suppress client/owner confirmation emails.timezone— string — IANA timezone for the datetime, e.g. 'America/New_York'.calendarID— integer — Calendar id to book on (defaults to an available one).
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
acuity_cancel_appointmentdestructiveCANCELS an existing appointment. This MODIFIES the calendar and, unless suppressed, may send cancellation emails. Acuity REST: PUT /appointments/{id}/cancel.
Parameters:
id(required) — integer — Appointment id to cancel (required).admin— boolean — If true, cancel as admin (bypasses client cancellation restrictions).noEmail— boolean — If true, suppress cancellation emails.cancelNote— string — Optional note explaining the cancellation.
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
acuity_reschedule_appointmentdestructiveRESCHEDULES an existing appointment to a new time (and optionally a new calendar). This MODIFIES the calendar and, unless suppressed, may send update emails. Acuity REST: PUT /appointments/{id}/reschedule.
Parameters:
id(required) — integer — Appointment id to reschedule (required).datetime(required) — string — New start time in ISO 8601 with offset, e.g. '2026-08-16T10:00:00-0400' (required).admin— boolean — If true, reschedule as admin (bypasses availability checks).noEmail— boolean — If true, suppress reschedule emails.calendarID— integer — Move the appointment to this calendar id.
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
acuity_create_clientdestructiveCREATES a new client record in the account's client list. This ADDS data to the account. Acuity REST: POST /clients.
Parameters:
firstName(required) — string — Client first name (required).lastName(required) — string — Client last name (required).email— string — Client email.notes— string — Notes about the client.phone— string — Client phone number.
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.