MCP tools reference
Mangomint MCP tools
13 tools for Mangomint on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Mangomint account (admin, or staff with the permission for the task: reports and waitlist have their own)
- Integration page
- Mangomint
| Endpoint | Access | Description |
|---|---|---|
| mangomint_list_locations | read | Your business locations with address and time zone. |
| mangomint_list_services | read | Service menu of a location with duration, price and the staff who perform each service. |
| mangomint_list_appointments | read | Appointments on the calendar in a date range with client, services, staff member and notes. |
| mangomint_find_client | read | Search clients by name, email or phone; returns contact details, tags and client notes. |
| mangomint_get_client_timeline | read | A client's timeline: past and upcoming appointments, sales, timeline notes and form submissions. |
| mangomint_list_waitlist | read | Intelligent Waitlist entries for a day, with the openings Mangomint found for each. |
| mangomint_get_report | read | One of the built-in reports for a date range, as rows. |
| mangomint_export_clients | read | The client list as a CSV download link, with the same filters as the Clients app. |
| mangomint_add_client_note | write | Add an internal note to a client: a client note shown at booking and checkout, or a dated timeline note. |
| mangomint_book_appointment | write | Book one or more services for a client with a staff member. |
| mangomint_reschedule_appointment | write | Move an appointment to a new time, day or staff member. |
| mangomint_cancel_appointment | write | Cancel an appointment as a normal cancellation, late cancellation or no show. |
| mangomint_book_from_waitlist | write | Accept an opening Mangomint found for a waitlist entry and book it. |
List locations
readMCP tool mangomint_list_locations
Returns every location in your Mangomint account. Use the location_id from each item in the other tools. Most single-location businesses have one item.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_list_locations",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"locations": [
{
"location_id": "loc_1",
"name": "Downtown",
"address": "412 Alder St, Portland, OR",
"time_zone": "America/Los_Angeles"
}
]
},
"isError": false
} List services
readMCP tool mangomint_list_services
Returns the services you can book at a location, grouped by category, with duration, price and the staff members who perform each one. Use the service_id values in book_appointment.
Parameters
| Name | Type | Description |
|---|---|---|
| location_id | string | Location ID from list_locations. Default: your main location. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_list_services",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"services": [
{
"service_id": "svc_signature_facial",
"name": "Signature Facial",
"category": "Facials",
"duration_minutes": 60,
"price": {
"amount": 120,
"currency": "USD"
},
"staff": [
{
"staff_id": "st_207",
"name": "Alex"
}
]
},
{
"service_id": "svc_brow_shape",
"name": "Brow Shaping",
"category": "Brows",
"duration_minutes": 30,
"price": {
"amount": 45,
"currency": "USD"
},
"staff": [
{
"staff_id": "st_207",
"name": "Alex"
},
{
"staff_id": "st_311",
"name": "Sam"
}
]
}
]
},
"isError": false
} List appointments
readMCP tool mangomint_list_appointments
Returns appointments in a date range in start order, each with client, services, staff member, start, end and appointment note. Filter by staff member to read one calendar. Canceled appointments are left out unless include_canceled is true.
Parameters
| Name | Type | Description |
|---|---|---|
| location_id | string | Location ID from list_locations. Default: your main location. |
| from required | date | First day, inclusive. |
| to | date | Last day, inclusive. Default: same as from. |
| staff_id | string | Only this staff member. |
| include_canceled | boolean | Also return canceled and no-show appointments. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_list_appointments",
"arguments": {
"from": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointments": [
{
"appointment_id": "ap_903114",
"client": {
"client_id": "cl_48213",
"name": "Jamie Doe"
},
"services": [
{
"service_id": "svc_signature_facial",
"name": "Signature Facial"
}
],
"staff": {
"staff_id": "st_207",
"name": "Alex"
},
"start": "2026-10-12T14:00:00-07:00",
"end": "2026-10-12T15:00:00-07:00",
"status": "booked",
"note": null
}
]
},
"isError": false
} Find client
readMCP tool mangomint_find_client
Searches your client list and returns every match with contact details, tags and client notes. Client notes are the internal notes Mangomint shows when you book or check out that client. Pass client_id to the other client tools.
Parameters
| Name | Type | Description |
|---|---|---|
| query required | string | Name, email or phone number. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_find_client",
"arguments": {
"query": "query"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"clients": [
{
"client_id": "cl_48213",
"name": "Jamie Doe",
"email": "client@example.com",
"phone": "+15035550142",
"tags": [
"VIP"
],
"client_notes": [
"Prefers fragrance-free products"
]
}
]
},
"isError": false
} Get client timeline
readMCP tool mangomint_get_client_timeline
Returns entries from one client's timeline, newest first: appointments, sales, timeline notes and submitted forms. Use limit to read the latest few visits before a booking.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from find_client. |
| limit | integer | 1 to 100 entries, newest first. Default: 25. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_get_client_timeline",
"arguments": {
"client_id": "client_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "cl_48213",
"entries": [
{
"type": "appointment",
"date": "2026-09-14T14:00:00-07:00",
"summary": "Signature Facial with Alex"
},
{
"type": "sale",
"date": "2026-09-14T15:05:00-07:00",
"summary": "Checkout, 1 service, 1 product"
},
{
"type": "timeline_note",
"date": "2026-09-14T15:10:00-07:00",
"summary": "Skin was dry; added hydrating serum"
}
]
},
"isError": false
} List waitlist
readMCP tool mangomint_list_waitlist
Returns the waitlist entries for one day with the openings Mangomint found for each. Needs the Intelligent Waitlist app enabled and an Admin user or the Can manage waitlist permission. Pass entry_id and opening_id to book_from_waitlist.
Parameters
| Name | Type | Description |
|---|---|---|
| location_id | string | Location ID from list_locations. Default: your main location. |
| date required | date | Calendar day to read. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_list_waitlist",
"arguments": {
"date": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"entries": [
{
"entry_id": "wl_2207",
"client": {
"client_id": "cl_51007",
"name": "Priya Shah"
},
"service": "Signature Facial",
"openings": [
{
"opening_id": "op_88a1",
"staff": "Alex",
"start": "2026-10-13T11:00:00-07:00"
}
]
}
]
},
"isError": false
} Get report
readMCP tool mangomint_get_report
Returns one of the reports from the Reports app as rows. Sales Summary gives service and product quantities and sales totals for each day; Client Retention gives how many clients from the period visited again within 90 or 180 days. Needs an Admin user or the Can access company reports permission.
Parameters
| Name | Type | Description |
|---|---|---|
| report required | enum | sales_summary, service_sales, product_sales, sales_by_time_period, sales_by_staff, canceled_appointments or client_retention. |
| from required | date | First day, inclusive. |
| to required | date | Last day, inclusive. |
| location_ids | string[] | Locations to include. Default: all. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_get_report",
"arguments": {
"report": "sales_summary",
"from": "2026-10-05",
"to": "2026-10-11"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"report": "sales_summary",
"from": "2026-10-05",
"to": "2026-10-11",
"currency": "USD",
"rows": [
{
"date": "2026-10-05",
"services_qty": 31,
"services_total": 3120,
"products_qty": 6,
"products_total": 214,
"total": 3334
},
{
"date": "2026-10-06",
"services_qty": 28,
"services_total": 2870,
"products_qty": 4,
"products_total": 148,
"total": 3018
},
{
"date": "2026-10-07",
"services_qty": 35,
"services_total": 3540,
"products_qty": 9,
"products_total": 302,
"total": 3842
},
{
"date": "2026-10-08",
"services_qty": 33,
"services_total": 3315,
"products_qty": 5,
"products_total": 176,
"total": 3491
},
{
"date": "2026-10-09",
"services_qty": 41,
"services_total": 4210,
"products_qty": 12,
"products_total": 388,
"total": 4598
},
{
"date": "2026-10-10",
"services_qty": 47,
"services_total": 4760,
"products_qty": 10,
"products_total": 341,
"total": 5101
},
{
"date": "2026-10-11",
"services_qty": 12,
"services_total": 1180,
"products_qty": 2,
"products_total": 64,
"total": 1244
}
],
"totals": {
"services_qty": 227,
"services_total": 22995,
"products_qty": 48,
"products_total": 1633,
"total": 24628
}
},
"isError": false
} Export clients
readMCP tool mangomint_export_clients
Applies the filters you give, as the Clients app does, and returns a link to the CSV file. Combine last_visit_days_ago and has_future_appointment to find clients who have not come back. The file has contact details, so open the link yourself.
Parameters
| Name | Type | Description |
|---|---|---|
| last_visit_days_ago | integer | Only clients whose last appointment was more than this many days ago. |
| has_future_appointment | boolean | Only clients with (true) or without (false) a future appointment. |
| tag | string | Only clients with this tag. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_export_clients",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"status": "ready",
"filters": {
"last_visit_days_ago": 90,
"has_future_appointment": false
},
"row_count": 42,
"download_url": "https://files.cotlet.example/exports/mangomint-clients-2026-10-11.csv",
"expires_at": "2026-10-11T22:00:00+02:00"
},
"isError": false
} Add client note
writeMCP tool mangomint_add_client_note
Adds an internal note to a client profile. A client note shows whenever staff book, view or check out that client; a timeline note is a dated entry on the client timeline. Notes are never shown to the client and reach no one, so add_client_note runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from find_client. |
| text required | string | Note text. Internal, never shown to the client. |
| kind | enum | client or timeline. Default: timeline. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_add_client_note",
"arguments": {
"client_id": "client_8c41d2",
"text": "text"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "cl_48213",
"kind": "client",
"status": "added",
"text": "Allergic to lavender oil"
},
"isError": false
} MCP tool mangomint_book_appointment
Books the services in the order given, back to back, for one client with one staff member at the start time. The staff member must be on the schedule and free for the full length. Returns the appointment with start and end. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from find_client. |
| location_id | string | Location ID from list_locations. Default: your main location. |
| service_ids required | string[] | Service IDs from list_services, in order. |
| staff_id required | string | Staff member performing the services. |
| start required | datetime | ISO 8601 with time zone. |
| note | string | Appointment note. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_book_appointment",
"arguments": {
"client_id": "cl_48213",
"location_id": "loc_1",
"service_ids": [
"svc_signature_facial"
],
"staff_id": "st_207",
"start": "2026-10-16T14:00:00-07:00"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "ap_903114",
"status": "booked",
"client": {
"client_id": "cl_48213",
"name": "Jamie Doe"
},
"services": [
{
"service_id": "svc_signature_facial",
"name": "Signature Facial",
"duration_minutes": 60
}
],
"staff": {
"staff_id": "st_207",
"name": "Alex"
},
"start": "2026-10-16T14:00:00-07:00",
"end": "2026-10-16T15:00:00-07:00"
},
"isError": false
} MCP tool mangomint_reschedule_appointment
Moves one appointment to a new start and, if you pass staff_id, to another staff member, as dragging it on the calendar does. Mangomint sends its automated reschedule message only for changes clients make in the client portal, so set notify_client to true to tell the client about this one. 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 | New staff member. Default: unchanged. |
| notify_client | boolean | Send the client a notification about the change. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_reschedule_appointment",
"arguments": {
"appointment_id": "ap_903114",
"start": "2026-10-13T11:00:00-07:00",
"staff_id": "st_311",
"notify_client": true
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "ap_903114",
"status": "rescheduled",
"staff": {
"staff_id": "st_207",
"name": "Alex"
},
"start": "2026-10-13T11:00:00-07:00",
"end": "2026-10-13T12:00:00-07:00",
"client_notified": true
},
"isError": false
} MCP tool mangomint_cancel_appointment
Cancels one appointment with the cancellation type you choose: normal (the client canceled within the cancellation period), late (after it) or no_show. The client is notified if cancellation notifications are on in Mangomint. A late cancellation or no show does not charge a fee by itself; the fee is added at checkout. 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. |
| type required | enum | normal, late or no_show. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_cancel_appointment",
"arguments": {
"appointment_id": "appointment_8c41d2",
"type": "normal"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "ap_903210",
"status": "canceled",
"type": "late"
},
"isError": false
} MCP tool mangomint_book_from_waitlist
Accepts one opening for one waitlist entry, the same as Book on the calendar notification, and puts the client on the calendar. Needs an Admin user or the Can manage waitlist permission. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| entry_id required | string | Waitlist entry ID from list_waitlist. |
| opening_id required | string | Opening ID from the same entry. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mangomint_book_from_waitlist",
"arguments": {
"entry_id": "wl_2207",
"opening_id": "op_88a1"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"entry_id": "wl_2207",
"status": "booked",
"appointment_id": "ap_903377",
"client": {
"client_id": "cl_51007",
"name": "Priya Shah"
},
"staff": {
"staff_id": "st_207",
"name": "Alex"
},
"start": "2026-10-13T11:00:00-07:00"
},
"isError": false
}