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

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

MCP 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

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

MCP 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

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

MCP 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

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

MCP 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

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

MCP 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

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

read

MCP 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

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

MCP 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

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

MCP 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

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

Book appointment

write Confirm

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

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

Reschedule appointment

write Confirm

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

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

Cancel appointment

write Confirm

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

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

Book from waitlist

write Confirm

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

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