# GlossGenius MCP tools

> Every GlossGenius MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/glossgenius

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

14 tools for GlossGenius on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your GlossGenius account (Account Owner, or a team member with calendar, client and reports permissions)
- Integration page: https://cotlet.dev/integrations/glossgenius-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `glossgenius_list_appointments` | read | Appointments in a date range with client, services, provider, deposit and confirmation. |
| `glossgenius_get_appointment` | read | Full appointment: services, duration, address, notes, deposit requirement and confirmation. |
| `glossgenius_list_services` | read | Your service menu with duration, price, and the team members who offer each service. |
| `glossgenius_find_open_slots` | read | Open times for a service on your calendar, after working hours, personal blocks and gap time. |
| `glossgenius_find_client` | read | Search clients by name, email or phone. |
| `glossgenius_get_client` | read | Client profile: contact details, birthday, notes and appointment history. |
| `glossgenius_list_waitlist` | read | Active waitlist entries with client, service and the time they asked for. |
| `glossgenius_get_sales_summary` | read | Sales Report totals: services, retail, gratuity, cash and check, taxes, refunds and card fees. |
| `glossgenius_book_appointment` | write | Book a client into a time on your calendar. GlossGenius notifies the client if you ask it to. |
| `glossgenius_reschedule_appointment` | write | Move an appointment to a new time or provider. |
| `glossgenius_cancel_appointment` | write | Cancel one appointment, or this and all future appointments if it repeats. |
| `glossgenius_add_client` | write | Create a client profile. Nothing is sent to the client. |
| `glossgenius_add_client_note` | write | Save a note or formula to a client profile. Notes are private to your business. |
| `glossgenius_block_time` | write | Add a personal time block so clients cannot book you then. |

## List appointments

MCP tool: `glossgenius_list_appointments`

Access: read.

Returns the appointments on your GlossGenius calendar in start order, past and future. Cancelled appointments are removed from the calendar, so they are not returned. Another team member's calendar needs the calendar permission for that person.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First day, inclusive. |
| `to` | date | no | Last day, inclusive. Default: same as from. |
| `provider_id` | string | no | Team member ID from list_services. Default: you. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_list_appointments",
    "arguments": {
      "from": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "appointments": [
      {
        "appointment_id": "ap_771920",
        "start": "2026-10-12T11:00:00-04:00",
        "end": "2026-10-12T12:00:00-04:00",
        "client": {
          "client_id": "cl_50377",
          "name": "Jess T."
        },
        "services": [
          "Root Touch-up"
        ],
        "provider": "Sam",
        "deposit_required": false,
        "confirmed": true
      },
      {
        "appointment_id": "ap_771935",
        "start": "2026-10-13T14:00:00-04:00",
        "end": "2026-10-13T14:45:00-04:00",
        "client": {
          "client_id": "cl_48213",
          "name": "Maya R."
        },
        "services": [
          "Gel Manicure"
        ],
        "provider": "Sam",
        "deposit_required": true,
        "confirmed": false
      }
    ]
  },
  "isError": false
}
```

## Get appointment

MCP tool: `glossgenius_get_appointment`

Access: read.

Returns one appointment with the fields GlossGenius lets you edit on it: provider, date and time, service duration, services, address, notes, deposit requirement and appointment confirmation. The price shown is the service price; adjustments are made at checkout.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `appointment_id` | string | yes | Appointment ID from list_appointments. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_get_appointment",
    "arguments": {
      "appointment_id": "appointment_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "appointment_id": "ap_771935",
    "start": "2026-10-13T14:00:00-04:00",
    "end": "2026-10-13T14:45:00-04:00",
    "client": {
      "client_id": "cl_48213",
      "name": "Maya R."
    },
    "services": [
      {
        "name": "Gel Manicure",
        "duration_minutes": 45,
        "price": 55
      }
    ],
    "provider": "Sam",
    "address": "Studio, 12 Example St",
    "notes": "Prefers short nails.",
    "deposit_required": true,
    "confirmed": false
  },
  "isError": false
}
```

## List services

MCP tool: `glossgenius_list_services`

Access: read.

Returns every service on your menu with its ID, duration and price, plus the team members who offer it. Use the IDs in find_open_slots and book_appointment. Team member IDs from here go into every provider_id parameter.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_list_services",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "services": [
      {
        "service_id": "sv_1092",
        "name": "Gel Manicure",
        "duration_minutes": 60,
        "price": 55,
        "providers": [
          {
            "provider_id": "tm_207",
            "name": "Sam"
          }
        ]
      },
      {
        "service_id": "sv_1104",
        "name": "Root Touch-up",
        "duration_minutes": 60,
        "price": 85,
        "providers": [
          {
            "provider_id": "tm_207",
            "name": "Sam"
          },
          {
            "provider_id": "tm_311",
            "name": "Ria"
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## Find open slots

MCP tool: `glossgenius_find_open_slots`

Access: read.

Returns start times in your working hours that are free for the combined length of the services, in start order. Appointments, personal time blocks and gap time are taken out. GlossGenius can still book outside these times, so this tool only suggests them.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `service_ids` | string[] | yes | One or more service IDs from list_services. |
| `from` | date | yes | First day to search. |
| `to` | date | no | Last day to search. Default: same as from. |
| `provider_id` | string | no | Team member ID from list_services. Default: you. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_find_open_slots",
    "arguments": {
      "service_ids": [
        "service ids"
      ],
      "from": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "slots": [
      {
        "start": "2026-10-15T15:30:00-04:00",
        "end": "2026-10-15T16:30:00-04:00",
        "provider_id": "tm_207"
      },
      {
        "start": "2026-10-15T16:30:00-04:00",
        "end": "2026-10-15T17:30:00-04:00",
        "provider_id": "tm_207"
      }
    ]
  },
  "isError": false
}
```

## Find client

MCP tool: `glossgenius_find_client`

Access: read.

Returns matching client profiles with ID, name, email and phone. Client profiles are private to your business. A team member without client permission gets a permission error.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `query` | string | yes | Name, email or phone. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_find_client",
    "arguments": {
      "query": "query"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "clients": [
      {
        "client_id": "cl_48213",
        "name": "Maya R.",
        "email": "maya@example.com",
        "phone": "+1 555 0100"
      }
    ]
  },
  "isError": false
}
```

## Get client

MCP tool: `glossgenius_get_client`

Access: read.

Returns the client profile with contact details, birthday, saved notes and past and upcoming appointments. Notes include the ones you added under Notes and Forms. Whether the client is banned from online booking is included.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from find_client. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_get_client",
    "arguments": {
      "client_id": "client_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "client_id": "cl_50377",
    "name": "Jess T.",
    "email": "jess@example.com",
    "phone": "+1 555 0101",
    "birthday": "1990-03-14",
    "banned_from_online_booking": false,
    "notes": [
      {
        "note_id": "nt_9001",
        "text": "Prefers a cooler tone.",
        "created": "2026-09-02"
      }
    ],
    "appointments": [
      {
        "appointment_id": "ap_771920",
        "start": "2026-10-12T11:00:00-04:00",
        "services": [
          "Root Touch-up"
        ]
      }
    ]
  },
  "isError": false
}
```

## List waitlist

MCP tool: `glossgenius_list_waitlist`

Access: read.

Returns the active waitlist entries from the Calendar, in the order GlossGenius lists them, each with the client, service, requested time and note. Expired entries are not shown, because GlossGenius does not show them in the app. A client can join the waitlist for any day and time.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `provider_id` | string | no | Team member ID from list_services. Default: you. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_list_waitlist",
    "arguments": {
      "provider_id": "tm_207"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "entries": [
      {
        "entry_id": "wl_3302",
        "client": {
          "client_id": "cl_48213",
          "name": "Maya R."
        },
        "service": "Gel Manicure",
        "requested_start": "2026-10-16T14:00:00-04:00",
        "requested_end": "2026-10-16T17:00:00-04:00",
        "note": "Any time after 2pm works."
      },
      {
        "entry_id": "wl_3318",
        "client": {
          "client_id": "cl_50377",
          "name": "Jess T."
        },
        "service": "Root Touch-up",
        "requested_start": "2026-10-16T10:00:00-04:00",
        "requested_end": "2026-10-16T12:00:00-04:00",
        "note": ""
      }
    ]
  },
  "isError": false
}
```

## Get sales summary

MCP tool: `glossgenius_get_sales_summary`

Access: read.

Returns the figures of the Sales Report for the period: service and retail sales, gratuity collected, cash and check amounts, taxes paid, refunds given and card transaction fees. It needs the View Reports permission. It returns nothing while the account is paused, cancelled or disabled.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First day, inclusive. |
| `to` | date | yes | Last day, inclusive. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_get_sales_summary",
    "arguments": {
      "from": "2026-10-06",
      "to": "2026-10-12"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "from": "2026-10-05",
    "to": "2026-10-11",
    "services_sales": 4120,
    "retail_sales": 310,
    "total_sales": 4430,
    "gratuity": 655,
    "cash_and_check": 420,
    "taxes": 24.8,
    "refunds": 55,
    "card_fees": 128.45
  },
  "isError": false
}
```

## Book appointment

MCP tool: `glossgenius_book_appointment`

Access: write. Confirm: waits for the user's OK before it runs.

Creates one appointment and returns its ID, time and services. GlossGenius allows booking any day and time, even outside working hours, so call find_open_slots first. It books one appointment, not a repeating series. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from find_client. |
| `service_ids` | string[] | yes | Service IDs from list_services. |
| `start` | datetime | yes | ISO 8601 with time zone. |
| `provider_id` | string | no | Team member ID from list_services. Default: you. |
| `notes` | string | no | Appointment notes. |
| `notify_client` | boolean | no | Notify the client of the booking. Default: true. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_book_appointment",
    "arguments": {
      "client_id": "cl_48213",
      "service_ids": [
        "sv_1092"
      ],
      "start": "2026-10-15T15:30:00-04:00",
      "provider_id": "tm_207",
      "notify_client": true
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "appointment_id": "ap_771904",
    "status": "booked",
    "start": "2026-10-15T15:30:00-04:00",
    "end": "2026-10-15T16:30:00-04:00",
    "services": [
      {
        "name": "Gel Manicure",
        "price": 55
      }
    ],
    "provider": "Sam",
    "deposit_required": false,
    "client_notified": true
  },
  "isError": false
}
```

## Reschedule appointment

MCP tool: `glossgenius_reschedule_appointment`

Access: write. Confirm: waits for the user's OK before it runs.

Changes the date, time and optionally the provider of one appointment, and returns the old and new time. It does not change the price; GlossGenius adjusts prices at checkout. Moving to another team member needs calendar access to that person. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `appointment_id` | string | yes | Appointment ID from list_appointments. |
| `start` | datetime | yes | New start, ISO 8601 with time zone. |
| `provider_id` | string | no | Team member ID from list_services. Default: you. |
| `notify_client` | boolean | no | Notify the client by email and text. Default: true. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_reschedule_appointment",
    "arguments": {
      "appointment_id": "ap_771920",
      "start": "2026-10-20T09:00:00-04:00",
      "notify_client": true
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "appointment_id": "ap_771920",
    "status": "rescheduled",
    "previous_start": "2026-10-12T11:00:00-04:00",
    "start": "2026-10-20T11:00:00-04:00",
    "end": "2026-10-20T12:00:00-04:00",
    "provider": "Sam",
    "client_notified": true
  },
  "isError": false
}
```

## Cancel appointment

MCP tool: `glossgenius_cancel_appointment`

Access: write. Confirm: waits for the user's OK before it runs.

Cancels the appointment and removes it from your calendar, or the whole repeating series with whole_series. With notify_client on, GlossGenius emails and texts the client about the cancellation. Cancelling cannot be undone with Cotlet; book the client again with book_appointment. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `appointment_id` | string | yes | Appointment ID from list_appointments. |
| `scope` | enum | no | this_one or whole_series. Default: this_one. |
| `notify_client` | boolean | no | Notify the client by email and text. Default: true. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_cancel_appointment",
    "arguments": {
      "appointment_id": "appointment_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "appointment_id": "ap_771935",
    "status": "cancelled",
    "scope": "this_one",
    "client_notified": true
  },
  "isError": false
}
```

## Add client

MCP tool: `glossgenius_add_client`

Access: write.

Creates a profile and returns its client ID. It reaches no one: GlossGenius sends client notifications only for bookings and changes, to the contact details on the profile, so check that they are right. This call does not ask for your OK; delete the profile in GlossGenius to undo it.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `name` | string | yes | First and last name. |
| `email` | string | no | Client email. Email or phone is required. |
| `phone` | string | no | Client mobile number that can receive texts. Email or phone is required. |
| `birthday` | date | no | Client birthday. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_add_client",
    "arguments": {
      "name": "Jane Doe"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "client_id": "cl_50412",
    "name": "Dana K.",
    "email": "dana@example.com",
    "phone": null
  },
  "isError": false
}
```

## Add client note

MCP tool: `glossgenius_add_client_note`

Access: write.

Adds a blank note under Notes and Forms on the client profile and returns its ID. It reaches no one, because client profiles are private to your business, so it does not ask for your OK. Delete the note in the client profile to undo it.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from find_client. |
| `text` | string | yes | Note text. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_add_client_note",
    "arguments": {
      "client_id": "client_8c41d2",
      "text": "text"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "note_id": "nt_9014",
    "client_id": "cl_50377",
    "saved": true
  },
  "isError": false
}
```

## Block time

MCP tool: `glossgenius_block_time`

Access: write. Confirm: waits for the user's OK before it runs.

Adds one personal block to the calendar, so clients cannot book you online during it. It does not touch appointments already on the calendar; run list_appointments for the same range first. It adds one block, not a repeating one. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `start` | datetime | yes | ISO 8601 with time zone. |
| `end` | datetime | yes | ISO 8601 with time zone. |
| `description` | string | no | For example "Vacation" or "Lunch break". Clients do not see it. |
| `provider_id` | string | no | Team member ID from list_services. Default: you. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "glossgenius_block_time",
    "arguments": {
      "start": "2026-10-01T09:00:00Z",
      "end": "2026-10-01T09:00:00Z"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "block_id": "bl_6120",
    "start": "2026-10-16T09:00:00-04:00",
    "end": "2026-10-16T18:00:00-04:00",
    "description": "Day off",
    "provider": "Sam"
  },
  "isError": false
}
```
