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
Setmore Endpoints
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.

MCP 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

Parameters: list_appointments
NameTypeDescription
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
}

MCP 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

Parameters: get_appointment
NameTypeDescription
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
}

MCP 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

Parameters: list_available_slots
NameTypeDescription
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
}

MCP 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

read

MCP 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
}

MCP 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

Parameters: find_customer
NameTypeDescription
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
}

MCP 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

Parameters: get_customer
NameTypeDescription
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

Parameters: get_appointment_report
NameTypeDescription
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
}

Create appointment

write Confirm

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

Parameters: create_appointment
NameTypeDescription
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
}

Reschedule appointment

write Confirm

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

Parameters: reschedule_appointment
NameTypeDescription
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
}

Cancel appointment

write Confirm

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

Parameters: cancel_appointment
NameTypeDescription
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
}

MCP 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

Parameters: set_appointment_label
NameTypeDescription
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
}

MCP 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

Parameters: add_customer_note
NameTypeDescription
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

write

MCP 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

Parameters: block_time
NameTypeDescription
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
}

Delete event

write Confirm

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

Parameters: delete_event
NameTypeDescription
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
}