Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent books one-off and recurring cleans, covers a sick cleaner, invoices finished jobs and chases what is unpaid. Sign in to Klean CRM once in your own Cloud Browser. No API, no Zapier.
7 tools Read and write
Klean CRM has no MCP server, no ChatGPT or Claude app, no public API and no Zapier app (checked 9 Nov 2026). Cotlet runs 7 Klean CRM tools hosted, over MCP for agents and REST for scripts, in your own Klean CRM login.
| What you need | Klean CRM API | By hand | Cotlet |
|---|---|---|---|
| Book cleans | No API | Yes, one by one | Yes, after your OK |
| Reassign cleaners | No API | Yes, one by one | Yes |
| Invoices and what is unpaid | No API | Yes | Yes, after your OK |
| Ask in ChatGPT or Claude | No | No | Yes |
| Zapier app | None | None | Not needed |
Checked 8 Nov 2026. Sources: Klean CRM web app · Klean CRM pricing (archived 2026) · Klean CRM getting started (archived 2026)
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 Klean CRM password, and no booking or invoice reaches a customer until you approve it. Who can see your session
Sign in to Klean CRM in a Cloud Browser. Create a Cotlet account, open Klean CRM in its Cloud Browser, sign in with your Klean CRM 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.
Klean CRM shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Klean CRM on after connecting? Refresh the connector and the 7 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: klean_crm_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: klean_crm_write Search by name, phone and street. New customers reach no one, so they run at once.
Returns customers with ID, address, next appointment and unpaid balance.
MCP callklean_crm_read → list_customers
REST endpointGET https://cotlet.dev/api/v1/klean-crm/customers
| Name | Type | Description |
|---|---|---|
| query string | string | Name, phone or street. |
| page integer | integer | Page number. Default: 1. |
{
"customers": [
{
"customer_id": "KC-3310",
"name": "Maria Johnson",
"address": "2210 S Lamar Blvd, Austin, TX",
"next": "2026-11-12",
"unpaid": "0.00"
}
],
"page": 1
} Creates the customer. Reaches no one, so it runs at once.
MCP callklean_crm_write → add_customer
REST endpointPOST https://cotlet.dev/api/v1/klean-crm/customers
| Name | Type | Description |
|---|---|---|
| name string required | string | Customer name. |
| address string required | string | Service address. |
| phone string | string | Phone. |
| email string | string | Email. |
{
"name": "Jane Doe",
"address": "address"
} {
"customer_id": "KC-3377",
"name": "Tom Alvarez"
} New bookings wait for your OK because reminders go out. Reassigning a cleaner reaches only your team, so it runs at once.
Returns appointments with customer, address, cleaner, time and price.
MCP callklean_crm_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/klean-crm/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string | string | ISO date. Default: date_from. |
| cleaner string | string | Cleaner name. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "A-8812",
"customer": "Maria Johnson",
"cleaner": "Rosa",
"start": "2026-11-12T09:00",
"price": "160.00"
}
]
} Creates the appointment with service, price and cleaner. Your Klean CRM text reminders then apply. By default you confirm each call; you can switch that off for this tool.
MCP callklean_crm_write → book_appointment
REST endpointPOST https://cotlet.dev/api/v1/klean-crm/customers/{customer_id}/appointments
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| start string required | string | ISO date and time. |
| service string | string | Service name. |
| price number | number | Price. |
| cleaner string | string | Cleaner name. |
| repeat string | string | Weekly, Every 2 weeks, Monthly or empty. |
{
"customer_id": "customer_8c41d2",
"start": "start"
} {
"appointment_id": "A-8840",
"customer": "Tom Alvarez",
"cleaner": "Rosa",
"start": "2026-11-13T10:00",
"repeat": "Every 2 weeks"
} Puts the cleaner on the job. Reaches only your team, so it runs at once.
MCP callklean_crm_write → assign_cleaner
REST endpointPOST https://cotlet.dev/api/v1/klean-crm/appointments/{appointment_id}/cleaner/assign
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID. |
| cleaner string required | string | Cleaner name. |
{
"appointment_id": "A-8812",
"cleaner": "Lupe"
} {
"appointment_id": "A-8812",
"cleaner": "Lupe"
} Sending an invoice waits for your OK.
Invoices the appointment and sends it to the customer the way Klean CRM does. By default you confirm each call; you can switch that off for this tool.
MCP callklean_crm_write → send_invoice
REST endpointPOST https://cotlet.dev/api/v1/klean-crm/appointments/{appointment_id}/invoices
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID. |
{
"appointment_id": "appointment_8c41d2"
} {
"invoice_id": "INV-2209",
"customer": "Maria Johnson",
"total": "160.00",
"status": "Sent"
} Returns unpaid invoices with customer, total and days since sent.
MCP callklean_crm_read → list_unpaid_invoices
REST endpointGET https://cotlet.dev/api/v1/klean-crm/unpaid-invoices
| Name | Type | Description |
|---|---|---|
| min_days integer | integer | Only invoices sent at least this many days ago. |
{
"invoices": [
{
"invoice_id": "INV-2150",
"customer": "Priya Shah",
"total": "340.00",
"days": 18
}
]
} Your signed-in Klean CRM profile, AES-256-GCM encrypted, in Finland. No password.
The 7 Klean CRM tools, never the session cookie.
What your login sees: customers, calendar, cleaners, invoices.
Payments, financials, SMS settings, staff pay, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your Klean CRM 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 Klean CRM moves a button or renames a page, 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 |
|---|---|
| Add a customer or reassign a cleaner | Yes, change it in Klean CRM |
| Book a clean | Yes, cancel it; a reminder already sent stays sent |
| Send an invoice | No, the customer has it; void it in Klean CRM |
2 of 7 tools ask first: book_appointment, send_invoice. New customers and cleaner changes reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.
{
"name": "assign_cleaner",
"arguments": {
"appointment_id": "A-8812",
"cleaner": "Lupe"
}
} curl -X POST https://cotlet.dev/api/v1/klean-crm/appointments/A-8812/cleaner/assign \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cleaner":"Lupe"}' {
"appointment_id": "A-8812",
"cleaner": "Lupe"
} A cron job or n8n flow can call the same tools over REST at /api/v1/klean-crm with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $23 a monthfor a cleaning company with 5 cleaners, 3,980 credits. Your Klean CRM plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Clean booked from a text | 2 × 30 | 600 |
| Cleaner reassigned | 2 × 15 | 300 |
| Invoices for the day | 6 × 22 | 1,320 |
| Unpaid invoices, weekly | 1 × 4 | 40 |
| Tomorrow planned | 1 × 22 | 220 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,980 |
Klean CRM publishes no job 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 |
|---|---|---|
| Klean CRM reminders | Automatic texts for upcoming cleans and payments. | Fixed messages; nothing you can ask. |
| Customer import | Bring customers in from a file. | One way and by hand. |
| By hand | Every screen of Klean CRM, one job at a time. | Your evenings. |
Klean CRM has no API or Zapier app, so there is nothing to connect a script to. To book, reassign and invoice from ChatGPT or Claude this week, Cotlet works in the Klean CRM account you already have.
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 Klean CRM tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Klean CRM under Integrations in the console and sign in to Klean CRM in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Klean CRM 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 Klean CRM account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Klean CRM: book cleans from texts; cover a sick cleaner; invoice the day. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Klean CRM has no ChatGPT or Claude connector of its own and Klean CRM has no official MCP server (checked 9 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 adds the customer and books one-off or recurring cleans with the cleaner you name, after your OK.
Yes, with Cotlet. ChatGPT moves a sick cleaner's jobs to someone else on the team.
Yes, with Cotlet. ChatGPT invoices finished cleans after your OK and lists what is still unpaid.
Only in how it is called. Both carry the same 7 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Klean CRM.
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