Zenoti API and MCP server Let your AI agent work the front desk inbox.

Zenoti's API is open only to businesses with the API package, set up through their Customer Success Manager, and there is no Zenoti MCP server (checked 13 Nov 2026). Cotlet runs a hosted Zenoti MCP server with 20 tools that ChatGPT, Claude and your scripts use from your own employee login. Replies, reviews, broadcasts and bookings wait for your OK.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Zenoti
Zenoti logo Zenoti Cloud Browser

20 tools Read and write

Spa and salon front desk

What can your AI agent do in Zenoti? The guest-facing busywork across your centers.

  • Build the call-back list from abandoned bookings

  • Draft replies to the SMS and WhatsApp inbox

  • Reply to new Google and Facebook reviews

  • Tell booked guests about a closure

  • Draft purchase orders for low stock

  • Check commission before payroll

API package, no MCP

Does Zenoti have an MCP server or an API? The official Zenoti routes, checked 13 November 2026.

Zenoti documents a REST API and webhooks at docs.zenoti.com, covering centers, guests, appointments, employees and memberships. To use it, a business asks its Zenoti Customer Success Manager to enable the API package, then creates a backend app with an App ID, App Secret and API Key. No Zenoti MCP server or official ChatGPT or Claude connector was verified.

  • Webhooks notify your own application of events such as a new guest, a membership change or a closed invoice.
  • Zeenie and AI Business Advisor are Zenoti's own AI products; AI Business Advisor is a Marketplace add-on that uses credits.
  • HyperConnect and ezConnect hold calls, guest messages, reviews and their reports inside Zenoti.
The Zenoti API, Zenoti's own AI and Cotlet compared
What you need Zenoti APIZeenie / AI AdvisorCotlet
Ask ChatGPT or Claude to do the work No MCP server verified Zenoti's own assistants Hosted MCP server
Start without the vendor API package through your CSM Activation or add-on Your login, once
Inbox, reviews and HyperConnect reports Not in the API index Answers questions 20 tools, writes after your OK
Run from n8n or a script After setup, your own code Inside Zenoti only REST, same key

Checked 13 Nov 2026. Sources: Zenoti API: custom sources and API Key · Zenoti Webhooks overview · Zenoti API docs index · Help: AI Business Advisor · Help: Zeenie · Help: Appointments · Help: Queue · Help: Fitness · Help: Loyalty · Help: Messaging and Engagement Tools · Help: HyperConnect · Help: Reports in HyperConnect · Help: Guest Summary in HyperConnect · Help: Manage Social Reviews · Help: SmartBot · Help: Marketing · Help: Point of Sale · Help: Inventory · Help: Employee and payroll · Help: Zenoti Driven Growth dashboard · Help: Kiosk

Set up once

How does the Zenoti MCP server work? The Zenoti MCP server by Cotlet: your agent works from your own Zenoti login.

  1. 1Sign in to Zenoti

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the inbox

    It drafts each reply, you approve it.

Your agent works in your own signed-in Cloud Browser. Anything a guest sees, from a text reply to a review response, waits for your OK. Who can see your session

Any MCP client

How to connect Zenoti to your AI agent

  1. 1

    Sign in to Zenoti in a Cloud Browser. Open Zenoti in your Cotlet Cloud Browser and sign in with your own employee login.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.

  3. 3

    Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

Zenoti shares https://cotlet.dev/mcp/v1 with every app you turn on in Cotlet, so one connector reaches all of them. Turned Zenoti on after connecting? A connector refresh brings in its 20 tools.

ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: zenoti_read
6 read, 14 write

All 20 Zenoti MCP tools

One tool per Zenoti Help hub. Read tools run at once. Write tools take an `action`; `list` and `get` only read, the rest change Zenoti and ask first.

Front desk: appointments, queue and classes5

The Appointment Book, walk-ins in the Queue, fitness classes and the kiosk.

  • view_appointment_book Read a center's appointments for a day: guest, service, provider, time and status. read

    The same day the front desk opens in the Appointment Book. Nothing is changed.

    MCP callzenoti_read → view_appointment_book

    REST endpointGET https://cotlet.dev/api/v1/zenoti/appointment-books/view

    Parameters

    Parameters: view_appointment_book
    NameTypeDescription
    center string string Center name. Leave empty for the center your login opens.
    date string required string ISO date.
    employee string string One provider only.

    Example input

    {
      "date": "date"
    }

    Example response

    {
      "center": "Downtown",
      "date": "2026-11-16",
      "appointments": [
        {
          "time": "10:00",
          "guest": "Example Guest",
          "service": "Signature Facial",
          "provider": "Provider A",
          "status": "Confirmed"
        },
        {
          "time": "11:30",
          "guest": "Sample Guest",
          "service": "Gel Manicure",
          "provider": "Provider B",
          "status": "Booked"
        }
      ]
    }
  • manage_appointments Book, reschedule or cancel an appointment in the Appointment Book. writeAsks first

    Guests receive whatever booking and change messages your Zenoti settings send, so each change waits for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_appointments

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/appointments/manage

    Parameters

    Parameters: manage_appointments
    NameTypeDescription
    action string required string One of `book`, `reschedule`, `cancel`. Every action writes.
    center string string Center name. Leave empty for the center your login opens.
    appointment_id string string For `reschedule` and `cancel`.
    guest string string For `book`.
    service string string For `book`.
    employee string string Provider, if the guest asked for one.
    start string string ISO date and time.

    Example input

    {
      "action": "reschedule",
      "center": "Downtown",
      "appointment_id": "apt_88213",
      "start": "2026-11-21T11:00"
    }

    Example response

    {
      "appointment_id": "apt_88213",
      "guest": "Example Guest",
      "service": "Signature Facial",
      "employee": "Provider A",
      "start": "2026-11-18T14:00",
      "status": "Booked"
    }
  • manage_queue Read the Queue, add a walk-in guest, edit a visit, or send a payment link. writeAsks first

    For businesses that run Zenoti's Queue. A payment link lets the guest pay the invoice from their phone. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_queue

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/queue/manage

    Parameters

    Parameters: manage_queue
    NameTypeDescription
    action string required string One of `list`, `add_guest`, `edit_visit`, `send_payment_link`. `list` only reads.
    center string string Center name. Leave empty for the center your login opens.
    guest string string Guest name or phone.
    service string string For `add_guest`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "center": "Downtown",
      "waiting": [
        {
          "guest": "Walk-in A",
          "service": "Haircut",
          "wait_minutes": 15
        }
      ],
      "added": "Walk-in A"
    }
  • manage_classes Read the class schedule and rosters, schedule a class or workshop, or check guests in. writeAsks first

    For fitness businesses: sessions, attendance, rosters and guest passes, also shown on the HyperConnect timeline. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_classes

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/classes/manage

    Parameters

    Parameters: manage_classes
    NameTypeDescription
    action string required string One of `list`, `schedule`, `check_in`. `list` only reads.
    center string string Center name. Leave empty for the center your login opens.
    class string string Class or workshop name.
    start string string ISO date and time.
    guests array array For `check_in`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "center": "Studio North",
      "class": "Morning Pilates",
      "start": "2026-11-17T07:00",
      "booked": 14,
      "capacity": 16
    }
  • configure_kiosk Read or change kiosk settings: guest actions, wait times and display. writeAsks first

    Zenoti runs an existing kiosk, planned for retirement in July 2026, and a new kiosk on ZMA. Changes show on the guest-facing screen. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → configure_kiosk

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/kiosk/configure

    Parameters

    Parameters: configure_kiosk
    NameTypeDescription
    action string required string One of `get`, `update`. `get` only reads.
    center string string Center name. Leave empty for the center your login opens.
    settings object object Guest actions, wait times, display and theme settings.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "center": "Downtown",
      "kiosk": "New Kiosk on ZMA",
      "guest_actions": [
        "Check in",
        "Book"
      ],
      "saved": true
    }

Guests and loyalty3

Guest profiles, HyperConnect guest summaries and loyalty points.

  • get_guest_summary Read a guest's HyperConnect Guest Summary: Insights, Suggestions and Alerts. read

    Insights cover history and engagement, such as a credit balance. Suggestions recommend a next step, such as fixing an invalid email. Alerts list missing details such as birthday or preferred communication method.

    MCP callzenoti_read → get_guest_summary

    REST endpointGET https://cotlet.dev/api/v1/zenoti/guest-summary

    Parameters

    Parameters: get_guest_summary
    NameTypeDescription
    guest string required string Guest name or phone number.

    Example input

    {
      "guest": "guest"
    }

    Example response

    {
      "guest": "Example Guest",
      "insights": [
        "$120 credit balance from a past membership"
      ],
      "suggestions": [
        "Email address is invalid; ask for a new one"
      ],
      "alerts": [
        "Birthday missing"
      ]
    }
  • manage_guests Search guests, add one, update details and labels, or record feedback and issues. writeAsks first

    Communication preferences decide which messages a guest may receive, in line with Zenoti's TCPA and GDPR settings. The agent shows you the change before saving. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_guests

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/guests/manage

    Parameters

    Parameters: manage_guests
    NameTypeDescription
    action string required string One of `get`, `create`, `update`, `add_feedback`, `add_issue`. `list` and `get` only read.
    guest string string Guest name or phone, for `get` and updates.
    fields object object Contact details, labels, communication preferences, referral source.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "guest": "Example Guest",
      "email": "guest@example.com",
      "labels": [
        "VIP"
      ],
      "preferences": {
        "sms": true,
        "email": true
      },
      "saved": true
    }
  • manage_loyalty_points Read a guest's loyalty points and tier, or redeem points. writeAsks first

    Works with regular or tiered loyalty programs as your business set them up. Redeeming spends the guest's points. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_loyalty_points

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/loyalty-points/manage

    Parameters

    Parameters: manage_loyalty_points
    NameTypeDescription
    action string required string One of `get`, `redeem`. `get` only reads.
    guest string required string Guest name or phone.
    points number number For `redeem`.

    Example input

    {
      "action": "action",
      "guest": "guest"
    }

    Example response

    {
      "guest": "Example Guest",
      "points": 1250,
      "tier": "Gold",
      "redeemed": 0
    }

Conversations and reputation4

The ezConnect inbox, SMS broadcasts, Google and Facebook reviews and SmartBot answers. Everything here reaches guests.

  • manage_conversations Read the ezConnect inbox of SMS, WhatsApp, Facebook Messenger and web chat, reply, or add a private note. writeAsks first

    Replies reach the guest on the channel they wrote from, so each one waits for your OK. Private notes stay with your staff. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_conversations

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/conversations/manage

    Parameters

    Parameters: manage_conversations
    NameTypeDescription
    action string required string One of `list`, `get`, `reply`, `add_note`. `list` and `get` only read.
    conversation string string Guest name or number.
    message string string Reply text, or a saved response name.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "conversation": "Sample Guest",
      "channel": "SMS",
      "last_message": "Can I move Friday to Saturday?",
      "unread": 1
    }
  • send_broadcast Send an SMS broadcast to a guest group, for example hour changes or a provider out, and track delivery. writeAsks first

    Broadcasts reach many guests at once and follow Zenoti's rules on forbidden message categories in the US and Canada. The agent shows the audience size first. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → send_broadcast

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/broadcasts

    Parameters

    Parameters: send_broadcast
    NameTypeDescription
    action string required string One of `list`, `send`. `list` only reads.
    audience string string Guests with appointments on a date, or a target segment.
    message string string Text of the broadcast.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "broadcast": "Closed Thanksgiving Day",
      "recipients": 214,
      "delivered": 209
    }
  • manage_reviews Read Google and Facebook reviews in HyperConnect, or post a response. writeAsks first

    A response is public under your business, so the agent shows the text before it posts. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_reviews

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/reviews/manage

    Parameters

    Parameters: manage_reviews
    NameTypeDescription
    action string required string One of `list`, `respond`. `list` only reads.
    review string string For `respond`: the review.
    response string string Your public reply.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "reviews": [
        {
          "source": "Google",
          "rating": 2,
          "text": "Waited 20 minutes past my time.",
          "responded": false
        }
      ]
    }
  • manage_smartbot_faqs List, create, edit or publish the FAQs SmartBot answers guests with. writeAsks first

    Published answers are what SmartBot tells guests, so publishing waits for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_smartbot_faqs

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/smartbot-faqs/manage

    Parameters

    Parameters: manage_smartbot_faqs
    NameTypeDescription
    action string required string One of `list`, `create`, `update`, `publish`. `list` only reads.
    faq object object Question and answer.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "faq": {
        "question": "Do you take walk-ins?",
        "answer": "Yes, at the Downtown center; check the queue wait time online."
      },
      "published": false
    }

Sales, marketing and stock3

POS invoices, campaigns and discounts, purchase orders and transfers.

  • make_sale Create a POS invoice for services or products, or sell a membership, package, gift card or prepaid card. writeAsks first

    The tool opens an invoice with the items and their owner; taking a card payment stays at your terminal. Returns, refunds and price overrides follow your POS rules and are not part of this tool. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → make_sale

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/sale/make

    Parameters

    Parameters: make_sale
    NameTypeDescription
    guest string required string Guest name or phone.
    items array required array Services, products, membership, package, gift card or prepaid card.
    center string string Center name. Leave empty for the center your login opens.

    Example input

    {
      "guest": "guest",
      "items": "items"
    }

    Example response

    {
      "invoice": "INV-30412",
      "guest": "Example Guest",
      "items": [
        "Gift card $100"
      ],
      "total": 100,
      "status": "Open"
    }
  • manage_marketing List or create discounts, campaigns and coupons, target segments, and gift card or loyalty points promotions. writeAsks first

    Campaigns bundle an offer with a target segment and a channel. Launching one reaches guests, so the agent shows the offer and audience first. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_marketing

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/marketing/manage

    Parameters

    Parameters: manage_marketing
    NameTypeDescription
    action string required string One of `list`, `create_discount`, `create_campaign`, `create_segment`. `list` only reads.
    details object object Name, offer, eligible services or products, dates, segment and channel (email, SMS or WhatsApp).

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "campaign": "Winter facial week",
      "discount": "15% off facials",
      "segment": "No visit in 90 days",
      "channel": "Email",
      "status": "Draft"
    }
  • manage_inventory List or create purchase orders and transfer orders, or record a stock adjustment. writeAsks first

    A purchase order commits money to a supplier and a transfer moves stock between centers, so both wait for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_inventory

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/inventory/manage

    Parameters

    Parameters: manage_inventory
    NameTypeDescription
    action string required string One of `list`, `create_purchase_order`, `create_transfer`, `adjust_stock`. `list` only reads.
    center string string Center name. Leave empty for the center your login opens.
    items array array Product and quantity.
    vendor string string For a purchase order.
    reason string string For `adjust_stock`: one of your adjustment reasons.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "center": "Downtown",
      "purchase_order": "PO-1188",
      "vendor": "Example Beauty Supply",
      "lines": 6,
      "total": 1460,
      "status": "Draft"
    }

Staff and reporting5

Schedules and block-out time, reports, HyperConnect analytics and the growth and fitness dashboards.

  • manage_employee_schedule Read or change employee schedules, attendance, leave and block-out time. writeAsks first

    Schedule changes shape which slots guests can book, so the agent tells you which appointments a change touches. By default you confirm each call; you can switch that off for this tool.

    MCP callzenoti_write → manage_employee_schedule

    REST endpointPOST https://cotlet.dev/api/v1/zenoti/employee-schedule/manage

    Parameters

    Parameters: manage_employee_schedule
    NameTypeDescription
    action string required string One of `list`, `update_schedule`, `add_block_out`, `record_attendance`. `list` only reads.
    center string string Center name. Leave empty for the center your login opens.
    employee string string Employee name.
    date string string ISO date.
    hours object object Start and end, or the block-out reason.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "center": "Downtown",
      "employee": "Provider A",
      "date": "2026-11-20",
      "block_out": "13:00-14:00 Training",
      "saved": true
    }
  • run_report Run a Zenoti report by name for a center and date range, such as payroll, commission or loyalty points. read

    Returns the rows your role may see. Nothing is changed and no payroll is run.

    MCP callzenoti_read → run_report

    REST endpointGET https://cotlet.dev/api/v1/zenoti/reports/run

    Parameters

    Parameters: run_report
    NameTypeDescription
    report string required string Report name as Zenoti lists it, for example Employee Payroll Summary v2, Employee Hourly Pay/Service Commission or Loyalty points report.
    center string string Center name. Leave empty for the center your login opens.
    from string string ISO date.
    to string string ISO date.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "report": "Employee Hourly Pay/Service Commission",
      "center": "Downtown",
      "rows": [
        {
          "employee": "Provider A",
          "service_commission": 1240
        },
        {
          "employee": "Provider B",
          "service_commission": 980
        }
      ]
    }
  • view_hyperconnect_reports Read a HyperConnect report or the analytics dashboard for a date range. read

    Abandoned appointments are bookings guests started and did not finish; flagged calls are marked by AI for signs such as negative sentiment. Use them to decide who to call back.

    MCP callzenoti_read → view_hyperconnect_reports

    REST endpointGET https://cotlet.dev/api/v1/zenoti/hyperconnect-reports/view

    Parameters

    Parameters: view_hyperconnect_reports
    NameTypeDescription
    report string required string `analytics`, `abandoned_appointments`, `agent_metrics`, `flagged_calls`, `call_volume`, `missed_calls`, `spam_blocked` or `call_transfer`.
    from string string ISO date.
    to string string ISO date.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "report": "abandoned_appointments",
      "from": "2026-11-09",
      "to": "2026-11-15",
      "rows": [
        {
          "guest": "Sample Guest",
          "service": "Deep Tissue Massage",
          "date": "2026-11-14"
        }
      ]
    }
  • view_growth_dashboard Read the Zenoti Driven Growth dashboard: capacity, utilization and realization metrics. read

    The dashboard tracks the impact of Zenoti's growth features. It is off by default; your CSM or Zenoti representative enables it and you assign permissions.

    MCP callzenoti_read → view_growth_dashboard

    REST endpointGET https://cotlet.dev/api/v1/zenoti/growth-dashboards/view

    Parameters

    Parameters: view_growth_dashboard
    NameTypeDescription
    center string string Center name. Leave empty for the center your login opens.
    from string string ISO date.
    to string string ISO date.

    Example response

    {
      "center": "Downtown",
      "capacity": "Open slots filled 64%",
      "utilization": "Provider hours booked 78%",
      "realization": "Price realized 93%"
    }
  • view_fitness_dashboard Read the Fitness Dashboard: total sales, membership sales, attendance and new memberships. read

    For gyms and studios on Zenoti's fitness module. Nothing is changed.

    MCP callzenoti_read → view_fitness_dashboard

    REST endpointGET https://cotlet.dev/api/v1/zenoti/fitness-dashboards/view

    Parameters

    Parameters: view_fitness_dashboard
    NameTypeDescription
    center string string Center name. Leave empty for the center your login opens.
    from string string ISO date.
    to string string ISO date.

    Example response

    {
      "center": "Studio North",
      "total_sales": 42800,
      "membership_sales": 61,
      "attendance": 1840,
      "new_membership_sales": 23
    }
Encrypted, revocable

Who can see my Zenoti session, and how do I revoke it?

  • What we store

    Your signed-in Zenoti browser profile, AES-256-GCM encrypted, in Finland. Never your password.

  • What your agent gets

    The 20 Zenoti tools. The session cookie stays in the Cloud Browser.

  • What the session sees

    The centers and screens your employee security role opens, nothing more.

  • What no tool touches

    Security roles, payroll runs and tip payouts, payment terminals, refunds, Marketplace add-ons and organization settings.

  • If Zenoti signs you out

    You sign in again yourself, in the same Cloud Browser.

  • How to cut access

    Disable Zenoti for agents, reset the browser, or change your Zenoti password.

You type your Zenoti password yourself; the agent only uses the session that sign-in leaves behind. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).

We keep it working

What happens when Zenoti changes? The tools use the same Zenoti screens your front desk uses.

Zenoti is replacing screens as it goes: the redesigned Appointment Book, the new kiosk on ZMA before the old kiosk retires in July 2026, and HyperConnect beside ezConnect. Cotlet follows those screens, and your agent keeps the same tool names.

Modules that Zenoti enables per business, such as Queue, fitness, HyperConnect or the growth dashboard, are there for the agent only when your business has them.

If Zenoti signs you out, one click in the Cotlet console reopens the Cloud Browser so you can sign in again.

14 tools ask first

Approvals, undo and mistakes Guests see nothing until you say so.

  1. 01 Read the message manage_conversations opens the thread.
  2. 02 Find the slot view_appointment_book checks the day.
  3. 03 Show you both The move and the reply, side by side.
  4. 04 Act after your OK manage_appointments moves it, then the reply goes.
Fixing a Zenoti write that went wrong
ActionHow to put it right
Appointment moved to the wrong slotReschedule it back with manage_appointments
Guest profile field changedCall manage_guests again with the earlier value
Purchase order draftedStill a draft: change it in Zenoti with your purchasing team
Reply, review response or broadcast sentAlready with the guest or public: follow up yourself

All 14 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 6 read tools, from the Appointment Book to the dashboards, run at once.

MCP call
{
  "name": "manage_appointments",
  "arguments": {
    "action": "reschedule",
    "center": "Downtown",
    "appointment_id": "apt_88213",
    "start": "2026-11-21T11:00"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/zenoti/appointments/manage \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"reschedule","center":"Downtown","appointment_id":"apt_88213","start":"2026-11-21T11:00"}'
Response
{
  "appointment_id": "apt_88213",
  "guest": "Example Guest",
  "service": "Signature Facial",
  "employee": "Provider A",
  "start": "2026-11-21T11:00",
  "status": "Booked"
}

The example moves Example Guest's Signature Facial to Saturday at 11:00 with the same provider. A cron job or n8n flow can make the same call over REST at /api/v1/zenoti with the same key and price, in JSON. Failed calls are free.

Pay per call

How much does the Zenoti MCP server cost?

About $25 a monthfor a day spa with two centers, 4,280 credits. Your Zenoti subscription stays as it is.

Illustrative month, our assumption: successful calls for this workload
JobCallsCredits
Abandoned bookings call list4 × 22880
Guest inbox replies1 × 80800
Reschedules from the inbox1 × 40400
Guest profile updates1 × 30300
Review replies1 × 20200
Weekly commission report, two centers2 × 480
Purchase orders2 × 480
SMS broadcasts2 × 240
Cloud Browser, 30 days1,500
Total278 calls4,280

The smallest pack, 5,000 credits for $29, covers this month. A busier inbox or more centers mean more calls.

  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No API package needed for Cotlet

Credit packs are one-time purchases, not a subscription. The month above is built from our own assumptions, not measured customer usage.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Zenoti MCP server: other ways to connect What each route does for a spa or salon group, and where it stops.

Other ways to work with Zenoti, checked 13 Nov 2026
OptionWhat it doesWhere it stops
Zenoti API and webhooksDocumented REST endpoints and event notifications for your own code.API package through your CSM; your developers build and host it.
ZeenieZenoti's assistant for help articles, insights and front desk support.Inside Zenoti; not a connector for ChatGPT or Claude.
AI Business AdvisorPlain-English KPI answers and dashboards from your Zenoti data.Marketplace add-on with credits; answers, does not act.
By handWork each inbox, report and review in Zenoti.One screen at a time, between guests.

If your business has the API package and developers for the job, use the API: it is Zenoti's own route. Cotlet fits when you want ChatGPT, Claude or a script working in Zenoti today from your login, including the inbox and review screens, with nothing to host.

EU company, since 2019

Who runs Cotlet A company you can look up.

Behind Cotlet is Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), in business since 2019 and led by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Zenoti tools: contact@cotlet.dev.

Zenoti MCP server: questions

How do I get access?

Sign up free at https://cotlet.dev/signup?app=zenoti, turn on Zenoti under Integrations in the console and sign in to Zenoti in your Cloud Browser. Then connect your AI agent and ask it about today's appointment book. The trial needs no card.

Does Zenoti have an API?

Zenoti documents a REST API and webhooks at docs.zenoti.com for centers, guests, appointments, employees and memberships, but a business needs the API package, enabled through its Zenoti Customer Success Manager, plus a backend app with App ID, App Secret and API Key (checked 13 Nov 2026). No Zenoti MCP server or official ChatGPT or Claude connector was verified. Cotlet does not need the API package: it works in your own signed-in Zenoti account.

How is this different from Zeenie or AI Business Advisor?

Zeenie and AI Business Advisor are Zenoti's own AI products inside Zenoti; AI Business Advisor is an add-on from the Zenoti Marketplace that uses credits. Cotlet is separate: it lets ChatGPT, Claude or a script you choose work in Zenoti with the tools on this page.

Which centers can the agent see?

The centers and screens your login's security role opens. A login limited to one center gives the agent one center; an organization-level role gives it more.

Do I need the API package?

Not for Cotlet. The API package is for Zenoti's own API; Cotlet works through your employee login, so the tools reach what your security role reaches.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 20 tools, inputs, answers, API key and price. Agents use MCP; scripts and n8n HTTP steps use REST.

Is Cotlet affiliated with Zenoti?

No. Cotlet is independent and not affiliated with Zenoti.

Let your agent clear the Zenoti inbox.

Free 7-day trial with 2,000 credits, no card needed.