MCP tools reference
Setmore MCP tools
15 tools for Setmore on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Setmore account (Free or Pro) in the web app
- Integration page
- Setmore
| Endpoint | Access | Description |
|---|---|---|
| setmore_list_appointments | read | Appointments in a date range with customer, service, team member, time and label. |
| setmore_get_appointment | read | One appointment: customer, service, team member, start and end, label and where it was booked. |
| setmore_list_available_slots | read | Open times for a service on a day, based on working hours and existing bookings. |
| setmore_list_services | read | Services and classes with category, cost, duration and the team members who offer them. |
| setmore_list_staff | read | Team members with the services they offer and their working hours. |
| setmore_find_customer | read | Search customers by name, email or phone. |
| setmore_get_customer | read | Customer profile: contact details, your private notes and past and upcoming appointments. |
| setmore_get_appointment_report | read | Appointment history from Reports, filtered by date range, service, class or team member. |
| setmore_create_appointment | write | Book a service for a customer. Setmore emails the confirmation unless you turned it off. |
| setmore_reschedule_appointment | write | Move an appointment to a new time or team member. The customer is emailed unless you turned it off. |
| setmore_cancel_appointment | write | Delete an appointment from your calendar. The customer is emailed unless you turned it off. |
| setmore_set_appointment_label | write | Track status with a label such as Confirmed or No-Show. Only you and your team see it. |
| setmore_add_customer_note | write | Add a private note to a customer profile. The customer does not see it. |
| setmore_block_time | write | Add an Event to the calendar so customers cannot book that time. |
| setmore_delete_event | write | Delete an Event from the calendar and free the time. |
List appointments
readMCP tool setmore_list_appointments
Returns appointments between two days, in your account time zone, with the customer, service, team member, start and end and the label if you set one. Filter by team member or service. Use appointment_id from each item in get_appointment, reschedule_appointment and cancel_appointment.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First day, in your account time zone. |
| to | date | Last day. Default: same as from. |
| staff_id | string | Only this team member, from list_staff. |
| service_id | string | Only this service, from list_services. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_list_appointments",
"arguments": {
"from": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointments": [
{
"appointment_id": "apt_51d7e2b9",
"service": "Massage, 60 min",
"staff": "Anna",
"customer": "Sam Client",
"start": "2026-10-16T15:00:00-04:00",
"end": "2026-10-16T16:00:00-04:00",
"label": "Confirmed"
},
{
"appointment_id": "apt_62e8f3ca",
"service": "Massage, 60 min",
"staff": "Anna",
"customer": "Lee Customer",
"start": "2026-10-16T17:00:00-04:00",
"end": "2026-10-16T18:00:00-04:00",
"label": null
}
]
},
"isError": false
} Get appointment
readMCP tool setmore_get_appointment
Returns one appointment with the customer, service, team member, start and end, and its label. Booked via is the source Setmore assigns when the appointment is created, such as the web app, your website or Instagram. It is read only and cannot be edited.
Parameters
| Name | Type | Description |
|---|---|---|
| appointment_id required | string | Appointment ID from list_appointments. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_get_appointment",
"arguments": {
"appointment_id": "appointment_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "apt_51d7e2b9",
"service": "Massage, 60 min",
"staff": "Anna",
"customer": {
"customer_id": "cus_7c04a1",
"name": "Sam Client"
},
"start": "2026-10-16T15:00:00-04:00",
"end": "2026-10-16T16:00:00-04:00",
"label": "Confirmed",
"booked_via": "Booked from website"
},
"isError": false
} List available slots
readMCP tool setmore_list_available_slots
Returns open start times for one service on one day. A team member's open times follow their working hours, not your business hours, and exclude their appointments and events. Pass a start from this list to create_appointment or reschedule_appointment.
Parameters
| Name | Type | Description |
|---|---|---|
| service_id required | string | Service from list_services. |
| date required | date | Day to check. |
| staff_id | string | Only this team member. Default: everyone who offers the service. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_list_available_slots",
"arguments": {
"service_id": "service_8c41d2",
"date": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"service": "Massage, 60 min",
"date": "2026-10-16",
"slots": [
{
"staff_id": "stf_3a90de",
"staff": "Anna",
"start": "2026-10-16T09:00:00-04:00"
},
{
"staff_id": "stf_3a90de",
"staff": "Anna",
"start": "2026-10-16T13:00:00-04:00"
},
{
"staff_id": "stf_5b12c7",
"staff": "Ben",
"start": "2026-10-16T10:00:00-04:00"
}
]
},
"isError": false
} List services
readMCP tool setmore_list_services
Lists the services and classes set up in your account, grouped by the categories you use on your Booking Page. Use service_id from each item in list_available_slots, create_appointment and get_appointment_report.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_list_services",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"services": [
{
"service_id": "svc_8f21c4",
"name": "Massage, 60 min",
"category": "Massage",
"duration_minutes": 60,
"cost": 80,
"staff": [
"Anna",
"Ben"
]
},
{
"service_id": "svc_a19d03",
"name": "Consultation, 30 min",
"category": "Consultations",
"duration_minutes": 30,
"cost": 0,
"staff": [
"Anna"
]
}
]
},
"isError": false
} List staff
readMCP tool setmore_list_staff
Lists the team members in your account with the services each one offers and their working days and hours. Working hours decide a team member's open times. Use staff_id from each item in the other tools.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_list_staff",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"staff": [
{
"staff_id": "stf_3a90de",
"name": "Anna",
"services": [
"Massage, 60 min",
"Consultation, 30 min"
],
"working_hours": "Mon-Fri 09:00-17:00"
},
{
"staff_id": "stf_5b12c7",
"name": "Ben",
"services": [
"Massage, 60 min"
],
"working_hours": "Tue-Sat 10:00-18:00"
}
]
},
"isError": false
} Find customer
readMCP tool setmore_find_customer
Searches your customer list and returns matches with contact details. Use customer_id from each item in get_customer, add_customer_note and create_appointment.
Parameters
| Name | Type | Description |
|---|---|---|
| query required | string | Name, email or phone number. |
| limit | integer | 1 to 50. Default: 10. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_find_customer",
"arguments": {
"query": "query"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"customers": [
{
"customer_id": "cus_7c04a1",
"name": "Sam Client",
"email": "client@example.com",
"phone": "+1 555 0100"
}
]
},
"isError": false
} Get customer
readMCP tool setmore_get_customer
Returns one customer with their contact details, your private notes and their past, present and future appointments, as in the Customers tab. Notes are for your reference and the customer does not see them.
Parameters
| Name | Type | Description |
|---|---|---|
| customer_id required | string | Customer ID from find_customer. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_get_customer",
"arguments": {
"customer_id": "customer_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"customer_id": "cus_7c04a1",
"name": "Sam Client",
"email": "client@example.com",
"phone": "+1 555 0100",
"notes": "Prefers afternoon slots.",
"appointments": [
{
"appointment_id": "apt_51d7e2b9",
"service": "Massage, 60 min",
"start": "2026-10-16T15:00:00-04:00"
}
]
},
"isError": false
} MCP tool setmore_get_appointment_report
Returns the appointment history that Settings > Booking Page > Reports shows in the web app, with counts per team member for the filter you set. Setmore recommends ranges of no more than 3 months for best results. It reads only; nothing is exported to a file.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | Start date. Up to 3 months per call for best results. |
| to required | date | End date. |
| service_id | string | Only this service or class. |
| staff_id | string | Only this team member. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_get_appointment_report",
"arguments": {
"from": "2026-09-01",
"to": "2026-09-30",
"service_id": "svc_8f21c4"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"from": "2026-09-01",
"to": "2026-09-30",
"service": "Massage, 60 min",
"total_appointments": 42,
"by_staff": [
{
"staff": "Anna",
"appointments": 25
},
{
"staff": "Ben",
"appointments": 17
}
]
},
"isError": false
} MCP tool setmore_create_appointment
Books one service with a team member at a start time, for an existing customer or a new one. Setmore sends a booking confirmation email to the provider and the customer unless you turned it off in Settings > Notifications. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| service_id required | string | Service from list_services. |
| start required | datetime | ISO 8601 with time zone. |
| customer_id | string | Existing customer from find_customer. Or pass customer. |
| customer | object | New customer: name, email, phone. Add an email so the customer gets confirmations. |
| staff_id | string | Team member from list_staff. Default: first one free. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_create_appointment",
"arguments": {
"service_id": "svc_8f21c4",
"start": "2026-10-16T15:00:00-04:00",
"customer": {
"name": "Sam Client",
"email": "client@example.com"
},
"staff_id": "stf_3a90de"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "apt_51d7e2b9",
"status": "booked",
"service": "Massage, 60 min",
"staff": "Anna",
"start": "2026-10-16T15:00:00-04:00",
"end": "2026-10-16T16:00:00-04:00",
"customer_id": "cus_7c04a1",
"confirmation_email": "sent"
},
"isError": false
} MCP tool setmore_reschedule_appointment
Changes the start time, the team member, or both for one appointment. Setmore emails the provider and the customer about the change unless rescheduled-appointment emails are off in Settings > Notifications. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| appointment_id required | string | Appointment ID from list_appointments. |
| start required | datetime | New start, ISO 8601 with time zone. |
| staff_id | string | Assign a different team member. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_reschedule_appointment",
"arguments": {
"appointment_id": "apt_51d7e2b9",
"start": "2026-10-19T10:00:00-04:00",
"staff_id": "stf_5b12c7"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "apt_51d7e2b9",
"status": "rescheduled",
"staff": "Anna",
"start": "2026-10-20T15:00:00-04:00",
"end": "2026-10-20T16:00:00-04:00",
"customer_email": "sent"
},
"isError": false
} MCP tool setmore_cancel_appointment
Deletes one appointment from the calendar, as Delete does in the app. Setmore notifies the provider and the customer by email unless canceled-appointment emails are off in Settings > Notifications. It cannot be undone with one call; book again with create_appointment. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| appointment_id required | string | Appointment ID from list_appointments. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_cancel_appointment",
"arguments": {
"appointment_id": "appointment_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "apt_62e8f3ca",
"status": "canceled",
"customer_email": "sent"
},
"isError": false
} Set appointment label
writeMCP tool setmore_set_appointment_label
Sets the label on one appointment, like the Label dropdown in the web app. Customers never see labels, and nothing is sent to anyone. It runs without asking first because one call sets the label back.
Parameters
| Name | Type | Description |
|---|---|---|
| appointment_id required | string | Appointment ID from list_appointments. |
| label required | string | Pending, Confirmed, Done, No-Show, Paid, Running Late or one of your custom labels. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_set_appointment_label",
"arguments": {
"appointment_id": "apt_51d7e2b9",
"label": "No-Show"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "apt_51d7e2b9",
"label": "No-Show",
"previous_label": "Confirmed"
},
"isError": false
} Add customer note
writeMCP tool setmore_add_customer_note
Writes to the Notes tab of the customer profile, which is for your reference only. Nothing is sent to anyone, so it runs without asking first. A note the customer can see is an appointment comment, which this tool does not write.
Parameters
| Name | Type | Description |
|---|---|---|
| customer_id required | string | Customer ID from find_customer. |
| note required | string | Note text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_add_customer_note",
"arguments": {
"customer_id": "customer_8c41d2",
"note": "note"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"customer_id": "cus_7c04a1",
"status": "saved",
"note": "No-show on 16 Oct 2026."
},
"isError": false
} Block time
writeMCP tool setmore_block_time
Creates a Setmore Event with no guests. Customers cannot book that time on your Booking Page. Events suit blocks within a day; longer absences are Time Off under Settings > Your team, which this tool does not change. It adds no guests, so nobody is emailed and it runs without asking first; delete_event removes it.
Parameters
| Name | Type | Description |
|---|---|---|
| start required | datetime | ISO 8601 with time zone. |
| duration_minutes required | integer | Length of the block, within one day. |
| staff_id | string | Whose calendar, from list_staff. Default: yours. |
| notes | string | Shown on the event, for example "Lunch". |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_block_time",
"arguments": {
"start": "2026-10-01T09:00:00Z",
"duration_minutes": 1
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_3d51a8",
"status": "created",
"staff": "Anna",
"start": "2026-10-19T12:00:00-04:00",
"end": "2026-10-19T13:00:00-04:00",
"notes": "Lunch"
},
"isError": false
} MCP tool setmore_delete_event
Deletes one Event, as Delete does in the app. If the event has guests, Setmore notifies them of the change. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from block_time. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "setmore_delete_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_3d51a8",
"status": "deleted"
},
"isError": false
}