Read appointments, types, calendars and availability; create, cancel or reschedule bookings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List group class time slots (for class-type appointment types) in a month. Acuity REST: GET /availability/classes.
Month to check, formatted YYYY-MM, e.g. '2026-08'.
Class appointment type id (required).
IANA timezone for the returned times, e.g. 'America/New_York'.
If true, also include full/unavailable class times.
List group class time slots (for class-type appointment types) in a month. Acuity REST: GET /availability/classes.
| Argument | Type | Description |
|---|---|---|
| month* | string | Month to check, formatted YYYY-MM, e.g. '2026-08'. |
| timezone | string | IANA timezone for the returned times, e.g. 'America/New_York'. |
| appointmentTypeID* | integer | Class appointment type id (required). |
| includeUnavailable | boolean | If true, also include full/unavailable class times. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"appointmentTypeID",
"month"
],
"properties": {
"month": {
"type": "string",
"description": "Month to check, formatted YYYY-MM, e.g. '2026-08'."
},
"timezone": {
"type": "string",
"description": "IANA timezone for the returned times, e.g. 'America/New_York'."
},
"appointmentTypeID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Class appointment type id (required)."
},
"includeUnavailable": {
"type": "boolean",
"description": "If true, also include full/unavailable class times."
}
}
}List dates in a month that have availability for an appointment type. Acuity REST: GET /availability/dates.
| Argument | Type | Description |
|---|---|---|
| month* | 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. |
| appointmentTypeID* | integer | Appointment type id to check availability for (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"appointmentTypeID",
"month"
],
"properties": {
"month": {
"type": "string",
"description": "Month to check, formatted YYYY-MM, e.g. '2026-08'."
},
"timezone": {
"type": "string",
"description": "IANA timezone for the returned dates, e.g. 'America/New_York'."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Restrict to a specific calendar id."
},
"appointmentTypeID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment type id to check availability for (required)."
}
}
}List available time slots on a given date for an appointment type. Acuity REST: GET /availability/times.
| Argument | Type | Description |
|---|---|---|
| date* | 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. |
| appointmentTypeID* | integer | Appointment type id to check availability for (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"appointmentTypeID",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "Date to check, formatted YYYY-MM-DD, e.g. '2026-08-15'."
},
"timezone": {
"type": "string",
"description": "IANA timezone for the returned times, e.g. 'America/New_York'."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Restrict to a specific calendar id."
},
"appointmentTypeID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment type id to check availability for (required)."
}
}
}CANCELS an existing appointment. This MODIFIES the calendar and, unless suppressed, may send cancellation emails. Acuity REST: PUT /appointments/{id}/cancel.
| Argument | Type | Description |
|---|---|---|
| id* | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment id to cancel (required)."
},
"admin": {
"type": "boolean",
"description": "If true, cancel as admin (bypasses client cancellation restrictions)."
},
"noEmail": {
"type": "boolean",
"description": "If true, suppress cancellation emails."
},
"cancelNote": {
"type": "string",
"description": "Optional note explaining the cancellation."
}
}
}CREATES 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.
| Argument | Type | Description |
|---|---|---|
| admin | boolean | If true, book as admin — bypasses availability checks and required-form enforcement. Default false. |
| email* | string | Client email (required). |
| 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. |
| datetime* | string | Start time in ISO 8601 with offset, e.g. '2026-08-15T14:00:00-0400' (required). |
| lastName* | string | Client last name (required). |
| timezone |
CREATES a new client record in the account's client list. This ADDS data to the account. Acuity REST: POST /clients.
| Argument | Type | Description |
|---|---|---|
| string | Client email. | |
| notes | string | Notes about the client. |
| phone | string | Client phone number. |
| lastName* | string | Client last name (required). |
| firstName* | string | Client first name (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"firstName",
"lastName"
],
"properties": {
"email": {
"type": "string",
"description": "Client email."
},
"notes": {
"type": "string",
"description": "Notes about the client."
},
"phone": {
"type": "string",
"description": "Client phone number."
},
"lastName": {
"type": "string",
"description": "Client last name (required)."
},
"firstName": {
"type": "string",
"description": "Client first name (required)."
}
}
}Get a single appointment by its id. Acuity REST: GET /appointments/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Appointment id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment id."
}
}
}Get the authenticated Acuity account's profile (name, email, timezone, plan, currency). Acuity REST: GET /me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the account's appointment types (services and classes), including price, duration and calendars. Acuity REST: GET /appointment-types.
| Argument | Type | Description |
|---|---|---|
| includeDeleted | boolean | If true, also include deleted/inactive appointment types. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"includeDeleted": {
"type": "boolean",
"description": "If true, also include deleted/inactive appointment types."
}
}
}List appointments scheduled on the account, with optional filters. Acuity REST: GET /appointments.
| Argument | Type | Description |
|---|---|---|
| max | integer | Max appointments to return. |
| 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. |
List blocked-off (unavailable) time ranges on the account's calendars. Acuity REST: GET /blocks.
| Argument | Type | Description |
|---|---|---|
| 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"max": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max blocks to return."
},
"maxDate": {
"type": "string",
"description": "Only blocks on/before this date (YYYY-MM-DD or ISO datetime)."
},
"minDate": {
"type": "string",
"description": "Only blocks on/after this date (YYYY-MM-DD or ISO datetime)."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter to a specific calendar id."
}
}
}List the account's calendars (staff/resources appointments can be booked on). Acuity REST: GET /calendars.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List clients on the account, optionally filtered by a search string (name/email/phone). Acuity REST: GET /clients.
| Argument | Type | Description |
|---|---|---|
| search | string | Optional search string to match client name, email, or phone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"search": {
"type": "string",
"description": "Optional search string to match client name, email, or phone."
}
}
}List the account's custom intake forms and their fields. Acuity REST: GET /forms.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the appointment labels (colored tags) defined on the account. Acuity REST: GET /labels.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List store orders (product / package / gift-certificate purchases). Acuity REST: GET /orders.
| Argument | Type | Description |
|---|---|---|
| max | integer | Max orders to return. |
| string | Filter orders by buyer email. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"max": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max orders to return."
},
"email": {
"type": "string",
"description": "Filter orders by buyer email."
}
}
}List the account's products / packages / gift certificates for sale. Acuity REST: GET /products.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}RESCHEDULES 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.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Appointment id to reschedule (required). |
| admin | boolean | If true, reschedule as admin (bypasses availability checks). |
| noEmail | boolean | If true, suppress reschedule emails. |
| datetime* | string | New start time in ISO 8601 with offset, e.g. '2026-08-16T10:00:00-0400' (required). |
| calendarID | integer | Move the appointment to this calendar id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"datetime"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment id to reschedule (required)."
},
"admin": {
"type": "boolean",
"description": "If true, reschedule as admin (bypasses availability checks)."
},
"noEmail": {
"type": "boolean",
"description": "If true, suppress reschedule emails."
},
"datetime": {
"type": "string",
"description": "New start time in ISO 8601 with offset, e.g. '2026-08-16T10:00:00-0400' (required)."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Move the appointment to this calendar id."
}
}
}| string |
| IANA timezone for the datetime, e.g. 'America/New_York'. |
| firstName* | string | Client first name (required). |
| calendarID | integer | Calendar id to book on (defaults to an available one). |
| appointmentTypeID* | integer | Appointment type id to book (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"appointmentTypeID",
"datetime",
"firstName",
"lastName",
"email"
],
"properties": {
"admin": {
"type": "boolean",
"description": "If true, book as admin — bypasses availability checks and required-form enforcement. Default false."
},
"email": {
"type": "string",
"description": "Client email (required)."
},
"notes": {
"type": "string",
"description": "Notes to attach to the appointment."
},
"phone": {
"type": "string",
"description": "Client phone number."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"value"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Intake form field id."
},
"value": {
"type": "string",
"description": "Field value."
}
}
},
"description": "Intake form field answers, each { id, value }."
},
"noEmail": {
"type": "boolean",
"description": "If true, suppress client/owner confirmation emails."
},
"datetime": {
"type": "string",
"description": "Start time in ISO 8601 with offset, e.g. '2026-08-15T14:00:00-0400' (required)."
},
"lastName": {
"type": "string",
"description": "Client last name (required)."
},
"timezone": {
"type": "string",
"description": "IANA timezone for the datetime, e.g. 'America/New_York'."
},
"firstName": {
"type": "string",
"description": "Client first name (required)."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Calendar id to book on (defaults to an available one)."
},
"appointmentTypeID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Appointment type id to book (required)."
}
}
}| appointmentTypeID |
| integer |
| Filter to a specific appointment type id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"max": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max appointments to return."
},
"email": {
"type": "string",
"description": "Filter by client email."
},
"maxDate": {
"type": "string",
"description": "Only appointments on/before this date (YYYY-MM-DD or ISO datetime)."
},
"minDate": {
"type": "string",
"description": "Only appointments on/after this date (YYYY-MM-DD or ISO datetime)."
},
"canceled": {
"type": "boolean",
"description": "If true, return canceled appointments (default false)."
},
"lastName": {
"type": "string",
"description": "Filter by client last name."
},
"direction": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort order by datetime. ASC (default) or DESC."
},
"firstName": {
"type": "string",
"description": "Filter by client first name."
},
"calendarID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter to a specific calendar id."
},
"appointmentTypeID": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter to a specific appointment type id."
}
}
}