MCP App Store
by KeenEthics
Sales-And-Marketing
Calendesk - Appointment scheduling software icon

Calendesk - Appointment scheduling software

by Calendesk

Overview

Calendesk is a booking and client-management platform for service businesses: salons, clinics, consultants, trainers, tutors. This connector turns Claude into your front desk. Ask what's on today's calendar, find a free slot next Monday, book a client, or pull this month's revenue - without opening the admin panel. What you can do: - List bookings for any day or range and check their details - Find open slots for a service, then create, reschedule, or cancel appointments - Search customers, review their booking history, add or update client records - Block time off for an employee (vacations, meetings, sick days) - Send email or SMS notifications to clients - Pull revenue, booking volume, cancellations, and other KPIs with prior-period comparisons The connector exposes 32 tools over the Model Context Protocol. Every tool carries read-only or destructive annotations, so Claude runs safe reads freely and asks before anything that writes. You sign in with your regular Calendesk login over OAuth 2.0 - no API keys to copy. Access follows your Calendesk role: an employee connecting their account sees exactly what they'd see in the panel, nothing more. If your email belongs to several companies, you pick which one to connect during sign-in. Works with every Calendesk plan, including the 14-day trial.

Tools

check_event_overlaps

ChatGPT
Conflict pre-check for booking writes. Returns bookings overlapping a specific employee+time window. Use ONLY immediately before create_booking or update_booking when scheduling a new/changed time. DO NOT call this for listing, viewing, searching, availability, services, customers, or stats queries — those are unrelated and have their own tools (list_events, get_available_slots, list_services, etc.).

create_booking

ChatGPT
Create a NEW booking/appointment. ONLY call this when the user explicitly asks to BOOK, SCHEDULE, MAKE, or RESERVE an appointment with concrete employee/service/customer/time details. NEVER call for read-only queries like 'show services', 'list bookings', 'show stats', 'what services do I offer' — those have dedicated tools (list_services, list_events, get_stats). Do not invent missing parameters. REQUIRES user confirmation before calling. Conflict detection runs automatically — if the time overlaps an existing booking the call fails with a OVERLAP_DETECTED warning.

create_unavailable_slot

ChatGPT
Create an unavailable booking slot (block/vacation). REQUIRES user confirmation.

create_user

ChatGPT
Create a customer. REQUIRES user confirmation before calling.

delete_booking

ChatGPT
Permanently delete a booking. REQUIRES user confirmation. Irreversible. To cancel instead, use update_booking with status='cancelled'.

delete_employee

ChatGPT
Permanently delete an employee. REQUIRES user confirmation. Irreversible.

delete_unavailable_slot

ChatGPT
Delete an unavailable booking slot. REQUIRES user confirmation. Irreversible.

delete_user

ChatGPT
Permanently delete a customer. REQUIRES user confirmation. Irreversible.

get_availability

ChatGPT
Get a specific availability schedule by ID.

get_available_slots

ChatGPT
Get available appointment time slots for a Calendesk service on a given date. Use this for ANY 'what time slots are available', 'when is X available to book', 'show me free times', 'what times can I book' query. Returns free slots considering existing bookings and employee schedules.

get_booking

ChatGPT
Get booking details by ID.

get_employee

ChatGPT
Get employee details by ID.

get_group_booking

ChatGPT
Get group booking details (multiple slots).

get_me

ChatGPT
Get the authenticated caller's identity: user.id, employee record (if staff with employee.id), timezone, locale, permissions. ALWAYS call this FIRST when the user says 'my', 'me', 'I', 'my events', 'my bookings', 'my schedule', 'my customers' — you need the returned ids to filter list_events/list_users/list_availability/etc. Returns {user:{id,name,...}, employee:{id,...} or null, permissions:[...]}. Cache the result for the rest of the conversation; you only need to call it once.

get_service

ChatGPT
Get service details (duration, price, locations).

get_settings

ChatGPT
Get detailed business settings (working hours, full configuration). Basic settings (company name, currency) and your profile (name, timezone, language, phone, email) are already in your context — do NOT call this tool for those.

get_stats

ChatGPT
Calendesk business analytics, dashboard, KPIs, statistics, metrics, reports. Use this for ANY question about how the business is doing, dashboard, stats, analytics, revenue, totals, performance — e.g. 'show me my dashboard', 'how am I doing this month', 'business stats', 'show stats', 'show analytics', 'show metrics', 'show KPIs', 'monthly summary'. Default to type=dashboard for general queries. Use 'type' to select the report: dashboard (KPIs, revenue, bookings, cancellations), revenue (breakdown by source), bookings (counts by status, trends), employees (staff performance, utilization), services (popularity, revenue per service), customers (segments, top spenders, LTV), patterns (peak hours, busiest days), payments (transactions, providers), subscriptions (active count, renewal rate), locations (delivery type breakdown), products (sales analytics), forecast (revenue projections).

get_unavailable_slot

ChatGPT
Get details of a single unavailable booking slot (block/vacation) by ID.

get_user

ChatGPT
Get customer details by ID.

list_availability

ChatGPT
Canonical tool for 'who works on day X', 'working hours', 'on shift', 'available today/now', 'kto pracuje dziś', 'dostępni dziś' — returns each employee's work-schedule rules (weekdays + hours). Use this (NOT list_employees, which is the unfiltered roster) for any day-based availability question. For 'my schedule', 'my hours' queries first call get_me, then pass employee_ids=<your employee.id>. For actual free booking slots, use get_available_slots.

list_employees

ChatGPT
Full staff roster only — no date/schedule/availability filter applied. FORBIDDEN for 'who is working/available today/now', 'on shift', 'kto pracuje dziś', 'dostępni dziś' questions: use list_availability (work-schedule rules) for those. For vacation/blocked days use list_events(event_types="unavailable_booking_slot"). For free booking slots use get_available_slots.

list_events

ChatGPT
List Calendesk calendar events for the authenticated tenant: bookings, unavailable slots (blocks/vacation), and group bookings. Use this for ANY 'show/list/what events|bookings|appointments|schedule|today's calendar|this week's calendar' query — e.g. 'show me all events for today', 'list bookings this week', 'what's on the calendar tomorrow'. Defaults to all events for the tenant; pass event_date_from/event_date_to to filter by date and event_types to filter by type.

list_products

ChatGPT
List products available for sale. Paginated.

list_service_types

ChatGPT
List service categories.

list_services

ChatGPT
List the catalog of services offered by the business (name, price, duration, locations, variants). Use this for ANY question that asks what services exist, what the business offers, or to enumerate services — e.g. 'what services do I offer', 'what do you offer', 'list services', 'show services', 'show me my services'. Returns the full service catalog.

list_tags

ChatGPT
List all tags for customers and bookings.

list_user_groups

ChatGPT
List all customer groups.

list_users

ChatGPT
List customers with optional filters. Paginated with total count in meta.

search_users

ChatGPT
Search Calendesk customers by name, email, or phone. Use this for ANY 'find/search/look up customers|clients|users' query — e.g. 'find customers named Jan', 'search for customer John Smith', 'look up clients with this email'. Returns matching customer records with IDs, names, emails, phones. Use only when user_id is unknown; otherwise use get_user.

send_notification

ChatGPT
Send email/SMS/push to employees or customers. REQUIRES: 1) identify recipient, 2) draft message, 3) wait for explicit user confirmation, 4) then call. For self, use get_me first for employee_id.

update_booking

ChatGPT
Update a booking. REQUIRES user confirmation. Conflict detection runs automatically when the time changes — if the new slot overlaps another booking the call fails with a OVERLAP_DETECTED warning.

update_unavailable_slot

ChatGPT
Update an unavailable booking slot. REQUIRES user confirmation.

update_user

ChatGPT
Update customer info. REQUIRES user confirmation before calling.

check_event_overlaps

Claude

create_booking

Claude

create_unavailable_slot

Claude

create_user

Claude

delete_booking

Claude

delete_employee

Claude

delete_unavailable_slot

Claude

delete_user

Claude

get_availability

Claude

get_available_slots

Claude

get_booking

Claude

get_employee

Claude

get_group_booking

Claude

get_me

Claude

get_service

Claude

get_settings

Claude

get_stats

Claude

get_unavailable_slot

Claude

get_user

Claude

list_availability

Claude

list_employees

Claude

list_events

Claude

list_products

Claude

list_service_types

Claude

list_services

Claude

list_subscription_payments

Claude

list_tags

Claude

list_user_subscriptions

Claude

list_users

Claude

search_users

Claude

send_notification

Claude

update_booking

Claude

update_unavailable_slot

Claude

update_user

Claude

App Stats

67

Tools

1

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily