Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent books appointments from emails and messages, approves pending requests, moves a day when staff are out and tells you who is on tomorrow. Sign in to Appointy once in your own Cloud Browser. No Enterprise plan needed.
9 tools Read and write
Appointy has no MCP server and no ChatGPT or Claude app. Its private API is listed only on the top Enterprise plan, and its Zapier app has a single action, create customer (checked 8 Nov 2026). Cotlet runs 9 Appointy tools hosted, over MCP for agents and REST for scripts, in your own Appointy login on any plan.
| What you need | Appointy API | Zapier app | Cotlet |
|---|---|---|---|
| Read appointments | Enterprise only | Triggers on changes | Yes |
| Book or move an appointment | Enterprise only | No | Yes, after your OK |
| Approve pending requests | Enterprise only | No | Yes, after your OK |
| Add a customer | Enterprise only | Yes | Yes |
| Appointy plan needed | Enterprise | Any | Any |
Checked 8 Nov 2026. Sources: Appointy pricing · Zapier: Appointy integrations · Appointy home
Once, in a browser we host for you.
One address in its settings.
It drafts the work, you OK what customers get.
We never keep your Appointy password, and no booking, approval, move or cancellation goes through until you approve it. Who can see your session
Sign in to Appointy in a Cloud Browser. Create a Cotlet account, open Appointy in its Cloud Browser, sign in with your admin login and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
Appointy shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Appointy on after connecting? Refresh the connector and the 9 tools appear.
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" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: appointy_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: appointy_write Free slots come from your working hours and bookings. Booking, approving, moving and cancelling wait for your OK; your notification settings decide what the customer hears.
Returns appointments with customer, service, staff member, start time, status and payment status.
MCP callappointy_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/appointy/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string | string | ISO date. Default: date_from. |
| staff string | string | Staff member name. |
| status string | string | pending, confirmed or cancelled. |
| page integer | integer | Page number. Default: 1. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "AP-662019",
"customer": "Olivia Grant",
"service": "60 min massage",
"staff": "Rachel",
"start": "2026-11-12T15:00",
"status": "Confirmed"
}
],
"page": 1
} Returns start times where the service fits, per staff member, using your working hours and existing bookings.
MCP callappointy_read → find_free_slots
REST endpointGET https://cotlet.dev/api/v1/appointy/free-slots/find
| Name | Type | Description |
|---|---|---|
| service string required | string | Service name. |
| date string required | string | ISO date. |
| staff string | string | Staff member name. |
{
"service": "service",
"date": "date"
} {
"service": "60 min massage",
"slots": [
{
"staff": "Rachel",
"start": "2026-11-13T10:00"
},
{
"staff": "Tom",
"start": "2026-11-13T13:30"
}
]
} Creates the appointment. Your Appointy notification settings decide whether the customer gets a confirmation and reminders. By default you confirm each call; you can switch that off for this tool.
MCP callappointy_write → book_appointment
REST endpointPOST https://cotlet.dev/api/v1/appointy/customers/{customer_id}/appointments
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| service string required | string | Service name. |
| staff string required | string | Staff member name. |
| start string required | string | ISO date and time from find_free_slots. |
| note string | string | Booking note. |
{
"customer_id": "CU-31890",
"service": "60 min massage",
"staff": "Rachel",
"start": "2026-11-13T10:00"
} {
"appointment_id": "AP-662140",
"customer": "Olivia Grant",
"service": "60 min massage",
"staff": "Rachel",
"start": "2026-11-13T10:00",
"status": "Confirmed"
} Confirms a pending appointment when your booking page asks for approval. The customer gets your confirmation message. By default you confirm each call; you can switch that off for this tool.
MCP callappointy_write → approve_appointment
REST endpointPOST https://cotlet.dev/api/v1/appointy/appointments/{appointment_id}/approve
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
{
"appointment_id": "appointment_8c41d2"
} {
"appointment_id": "AP-662201",
"status": "Confirmed"
} Moves the appointment. Your notification settings decide whether the customer hears about it. By default you confirm each call; you can switch that off for this tool.
MCP callappointy_write → reschedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/appointy/appointments/{appointment_id}/reschedule
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
| start string required | string | New ISO date and time. |
| staff string | string | New staff member. Default: unchanged. |
{
"appointment_id": "appointment_8c41d2",
"start": "start"
} {
"appointment_id": "AP-662019",
"start": "2026-11-14T11:00",
"staff": "Tom",
"status": "Confirmed"
} Cancels the appointment and frees the slot. Refunds, if any, stay in Appointy. By default you confirm each call; you can switch that off for this tool.
MCP callappointy_write → cancel_appointment
REST endpointPOST https://cotlet.dev/api/v1/appointy/appointments/{appointment_id}/cancel
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
| reason string | string | Cancellation reason. |
{
"appointment_id": "appointment_8c41d2"
} {
"appointment_id": "AP-662019",
"status": "Cancelled"
} Search matches name, email and phone, so a returning customer is found before a duplicate is made.
Returns customers with ID, contact details and the number of bookings.
MCP callappointy_read → list_customers
REST endpointGET https://cotlet.dev/api/v1/appointy/customers
| Name | Type | Description |
|---|---|---|
| query string | string | Name, email or phone. |
| page integer | integer | Page number. Default: 1. |
{
"customers": [
{
"customer_id": "CU-31890",
"name": "Olivia Grant",
"email": "olivia@example.com",
"phone": "555-0118",
"bookings": 7
}
],
"page": 1
} Returns contact details, notes, past appointments with service and staff, and upcoming bookings.
MCP callappointy_read → get_customer
REST endpointGET https://cotlet.dev/api/v1/appointy/customers/{customer_id}
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
{
"customer_id": "customer_8c41d2"
} {
"customer_id": "CU-31890",
"name": "Olivia Grant",
"past": [
{
"service": "60 min massage",
"staff": "Rachel",
"date": "2026-10-15"
}
],
"upcoming": [
{
"appointment_id": "AP-662019",
"start": "2026-11-12T15:00"
}
]
} Creates the customer. Search list_customers first so a returning customer does not become a duplicate. Reaches no one, so it runs at once.
MCP callappointy_write → create_customer
REST endpointPOST https://cotlet.dev/api/v1/appointy/customers
| Name | Type | Description |
|---|---|---|
| name string required | string | Full name. |
| email string | string | Email. |
| phone string | string | Phone number. |
{
"name": "Jane Doe"
} {
"customer_id": "CU-32004",
"name": "Ben Carter",
"email": "ben@example.com"
} Your signed-in Appointy profile, AES-256-GCM encrypted, in Finland. No password.
The 9 Appointy tools, never the session cookie.
What your login sees: calendar, customers, services, staff.
Payments and refunds, booking page design, plan, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your Appointy password.
Cotlet never types your password: you sign in yourself, and the agent only uses the session. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
When Appointy moves a button on the calendar or renames an appointment status, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Book an appointment | Yes, cancel it |
| Approve a request | Cancel it; the confirmation stays sent |
| Move an appointment | Move it back; a message already sent stays sent |
| Cancel an appointment | Book it again |
| Add a customer | Yes, edit it in Appointy |
4 of 9 tools ask first: book_appointment, reschedule_appointment, cancel_appointment, approve_appointment. A new customer reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.
{
"name": "book_appointment",
"arguments": {
"customer_id": "CU-31890",
"service": "60 min massage",
"staff": "Rachel",
"start": "2026-11-13T10:00"
}
} curl -X POST https://cotlet.dev/api/v1/appointy/customers/CU-31890/appointments \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"60 min massage","staff":"Rachel","start":"2026-11-13T10:00"}' {
"appointment_id": "AP-662140",
"customer": "Olivia Grant",
"service": "60 min massage",
"staff": "Rachel",
"start": "2026-11-13T10:00",
"status": "Confirmed"
} A cron job or n8n flow can call the same tools over REST at /api/v1/appointy with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $35 a monthfor a massage studio with 3 therapists, 6,100 credits. Your Appointy plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Booking from a message | 3 × 90 | 2,700 |
| Pending requests approved | 4 × 26 | 1,040 |
| Appointment moved | 3 × 20 | 600 |
| Tomorrow's schedule checked | 1 × 26 | 260 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 6,100 |
Appointy publishes no booking counts, so the month is our example. Dollars at the $29 pack rate.
| 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.
| Option | What it does | Where it stops |
|---|---|---|
| Zapier: Appointy | Starts workflows on new, updated or cancelled appointments; creates customers. | Cannot book, move, approve or cancel. |
| Appointy private API | Full access for your own developer. | Enterprise plan only; you build and host the code. |
| By hand | Every screen of Appointy, one booking at a time. | Your front desk's time. |
If you only need to copy new bookings into another app, the Zapier triggers do it. To book, approve and reschedule by asking in ChatGPT or Claude, Cotlet works in the Appointy account you already have.
Prefer code? Our public repo has a ready Appointy MCP config for Claude Code, ChatGPT and Cursor, an agent skill and a small command-line tool. Add your Cotlet API key and your agent works in your own Appointy account.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), in business since 2019, led by its founders Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Appointy tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Appointy under Integrations in the console and sign in to Appointy in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Appointy once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Appointy account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Appointy: book appointments from emails and messages; approve pending booking requests; reschedule when staff are out. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Appointy has no ChatGPT or Claude connector of its own and Appointy has no official MCP server (checked 8 Nov 2026). Cotlet is an independent one that works in ChatGPT, Claude, Cursor and any MCP client, on your signed-in account.
Yes, with Cotlet. ChatGPT finds the customer, checks free slots for the service and books it with the staff member you name, after your OK.
Yes, with Cotlet. ChatGPT moves appointments to another time or staff member, for example when someone is out. Each move waits for your OK by default.
Yes, with Cotlet. ChatGPT reads pending requests, checks them against the calendar and confirms the ones you OK.
No. Cotlet works through your own Appointy sign-in, so it needs no private API, which Appointy lists only on Enterprise. It can do what your plan and login can do.
Appointy sends its own confirmations and reminders by your settings. A booking the agent makes is a normal Appointy booking, so the same reminders go out.
Only in how it is called. Both carry the same 9 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Appointy.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy