Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Appointments, barbers, clients, waitlist and reports for your barbershop. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
11 tools Read and write
Squire has no MCP server, no public API and no developer docs (checked 28 Oct 2026). Its help center covers Mailchimp, QuickBooks and Google bookings, and has no article for developers. Cotlet runs 11 Squire tools hosted, over MCP for agents and REST for scripts.
| What you need | Commander by hand | Built-in integrations | Cotlet |
|---|---|---|---|
| Read every barber's day | Yes, one barber at a time | No | Any date range, whole shop |
| Book, move and cancel | Yes, by tapping | Clients book via Google | Yes, after your OK |
| Work the waitlist | Yes, by hand | No | Reads it, books the match |
| Revenue by barber | Reports screen | Sales to QuickBooks | By date range |
| Your own AI agent can use it | No | No | Yes, any MCP client |
| What it costs on top | Your time | Included | Credits per call |
Checked 28 Oct 2026. Sources: Squire Help Center · Squire: Mailchimp Integration · Squire: Exporting Client Lists · Squire: Pricing and plans
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Squire password, and no booking, move or cancellation is saved before you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Log in to Commander yourself. Make a Cotlet account, open Squire in its Cloud Browser, log in to Commander with your own shop login, then press Enable for agents.
Add the Cotlet address. Paste https://cotlet.dev/mcp/v1 into your agent as an MCP server or connector.
Approve the connection. Chat apps send you to a Cotlet sign-in. Code editors, n8n and scripts take an API key from the console.
Squire shares one address, https://cotlet.dev/mcp/v1, with every other app on your Cotlet account. If you enable Squire after connecting the agent, refresh the connector so the Squire 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: squire_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: squire_write Create a Cotlet API key with access to Squire and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Squire in Cotlet and enable it for agents. Account access: Your own Squire account (shop owner for shop-wide schedules, clients and reports).
curl https://cotlet.dev/api/v1/squire/barbers \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "squire",
"tool": "list_barbers",
"result": {
"barbers": [
{
"barber_id": "b_1042",
"name": "Marcus Hill"
},
{
"barber_id": "b_1043",
"name": "Luis Ortega"
},
{
"barber_id": "b_1044",
"name": "Dev Patel"
}
]
}
} Returns each barber with id and name. Use the ids in the appointment tools.
Reads the team as your signed-in account sees it in Commander.
Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | List appointments for a day or a date range, optionally for one barber. Use list_appointments in your configured business report. |
| Make | HTTP > Make a request | List clients on the shop's waitlist. Use list_waitlist in your configured business report. |
| Python or Node.js | REST API | Read revenue and client retention from the Reporting Dashboard for a date range. Use get_revenue_report in your configured business report. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Squire; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Barber and service ids feed every booking tool. A barber who offers only part of the menu gets only those services.
Returns each barber with id and name. Use the ids in the appointment tools. Reads the team as your signed-in account sees it in Commander.
MCP callsquire_read → list_barbers
REST endpointGET https://cotlet.dev/api/v1/squire/barbers
No parameters.
{
"barbers": [
{
"barber_id": "b_1042",
"name": "Marcus Hill"
},
{
"barber_id": "b_1043",
"name": "Luis Ortega"
},
{
"barber_id": "b_1044",
"name": "Dev Patel"
}
]
} Returns each service with id, name, duration in minutes and price as shown in Squire, in menu order. Use the service ids when you book.
MCP callsquire_read → list_services
REST endpointGET https://cotlet.dev/api/v1/squire/services
| Name | Type | Description |
|---|---|---|
| barber_id string | string | Only services this barber offers. |
{
"services": [
{
"service_id": "s_201",
"name": "Haircut",
"duration_minutes": 30,
"price": 35
},
{
"service_id": "s_202",
"name": "Beard trim",
"duration_minutes": 15,
"price": 20
}
]
} Times are in the shop's time zone. A slot that is booked or blocked fails with SLOT_TAKEN and nothing changes.
Returns appointments in time order with client name, barber, services, start and end. Follow next_cursor until it is null. Blocked time is listed with type blocked so you can tell it from a booking.
MCP callsquire_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/squire/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | First day, YYYY-MM-DD. |
| date_to string | string | Last day, YYYY-MM-DD. Defaults to date_from. |
| barber_id string | string | Only this barber. Omit for the whole shop. |
| cursor string | string | next_cursor from the previous page. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "a_90011",
"type": "booking",
"start": "2026-10-29T10:00:00",
"end": "2026-10-29T10:30:00",
"barber": "Marcus Hill",
"client": "Jon Reyes",
"services": [
"Haircut"
]
},
{
"appointment_id": "a_90012",
"type": "booking",
"start": "2026-10-29T10:30:00",
"end": "2026-10-29T11:15:00",
"barber": "Marcus Hill",
"client": "Sam Okafor",
"services": [
"Haircut",
"Beard trim"
]
}
],
"next_cursor": null
} Books the slot and returns the appointment. It fails with SLOT_TAKEN if the barber is booked or blocked then, and nothing is created. The client is a person who will show up, so it waits for your OK. Payments are not part of this call. By default you confirm each call; you can switch that off for this tool.
MCP callsquire_write → create_appointment
REST endpointPOST https://cotlet.dev/api/v1/squire/clients/{client_id}/appointments
| Name | Type | Description |
|---|---|---|
| client_id string required | string | Client id from list_clients. |
| barber_id string required | string | Barber id from list_barbers. |
| service_ids array required | array | Service ids from list_services. |
| start string required | string | Start time, YYYY-MM-DDTHH:MM:SS in the shop's time zone. |
{
"client_id": "client_8c41d2",
"barber_id": "barber_8c41d2",
"service_ids": "service ids",
"start": "start"
} {
"appointment_id": "a_90031",
"status": "booked",
"start": "2026-10-29T14:00:00",
"end": "2026-10-29T14:30:00",
"barber": "Dev Patel",
"client": "Ana Lopez",
"services": [
"Haircut"
]
} Moves the booking and returns it with the new times. It fails with SLOT_TAKEN when the new slot is not free, and the original stays. The client's plans change, so it waits for your OK. By default you confirm each call; you can switch that off for this tool.
MCP callsquire_write → reschedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/squire/appointments/{appointment_id}/reschedule
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment id from list_appointments. |
| start string required | string | New start time, YYYY-MM-DDTHH:MM:SS. |
| barber_id string | string | New barber. Omit to keep the same one. |
{
"appointment_id": "appointment_8c41d2",
"start": "start"
} {
"appointment_id": "a_90011",
"status": "booked",
"start": "2026-10-29T11:30:00",
"end": "2026-10-29T12:00:00",
"barber": "Luis Ortega",
"client": "Jon Reyes"
} Cancels the booking and returns its new status. It cancels someone's booking, so it waits for your OK. Cotlet takes no payment and issues no refund. By default you confirm each call; you can switch that off for this tool.
MCP callsquire_write → cancel_appointment
REST endpointPOST https://cotlet.dev/api/v1/squire/appointments/{appointment_id}/cancel
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment id from list_appointments. |
| reason string | string | Short note kept with the cancellation. |
{
"appointment_id": "appointment_8c41d2"
} {
"appointment_id": "a_90012",
"status": "cancelled",
"client": "Sam Okafor",
"start": "2026-10-29T10:30:00"
} A block keeps clients from booking the window but leaves bookings already in it alone.
Blocks the window so no one can book it and returns the block. It does not touch existing bookings: check list_appointments first. It reaches no client and is undone with remove_block, so it does not wait for your OK.
MCP callsquire_write → block_time
REST endpointPOST https://cotlet.dev/api/v1/squire/barbers/{barber_id}/time/block
| Name | Type | Description |
|---|---|---|
| barber_id string required | string | Barber id from list_barbers. |
| start string required | string | Start, YYYY-MM-DDTHH:MM:SS. |
| end string required | string | End, YYYY-MM-DDTHH:MM:SS. |
{
"barber_id": "b_1044",
"start": "2026-11-06T13:00:00",
"end": "2026-11-06T17:00:00"
} {
"block_id": "k_771",
"barber": "Dev Patel",
"start": "2026-11-06T13:00:00",
"end": "2026-11-06T17:00:00"
} Reopens the window for booking. It reaches no client and the block can be set again with block_time, so it does not wait for your OK.
MCP callsquire_write → remove_block
REST endpointDELETE https://cotlet.dev/api/v1/squire/blocks/{block_id}
| Name | Type | Description |
|---|---|---|
| block_id string required | string | Block id from block_time or list_appointments. |
{
"block_id": "block_8c41d2"
} {
"block_id": "k_771",
"status": "removed"
} Squire lists the Wait List under its PRO plan; on other plans the list comes back empty. Squire tells the waiting client about an opening itself.
Returns each waiting client with the barber and the day they asked for, in the order Squire shows them. Squire notifies the waiting client itself when a slot opens. The waitlist needs a Squire plan that includes it; on others the call returns an empty list.
MCP callsquire_read → list_waitlist
REST endpointGET https://cotlet.dev/api/v1/squire/waitlists
| Name | Type | Description |
|---|---|---|
| barber_id string | string | Only clients waiting for this barber. |
{
"waitlist": [
{
"waitlist_id": "w_330",
"client": "Ana Lopez",
"barber": "Dev Patel",
"date": "2026-10-29"
}
]
} Phone and email come back only when you ask for them. Revenue is in the shop's currency.
Returns clients with id, name, phone, email and last visit date, as Squire shows them. Phone and email are personal data: the agent returns them only when you ask for them. Follow next_cursor until it is null.
MCP callsquire_read → list_clients
REST endpointGET https://cotlet.dev/api/v1/squire/clients
| Name | Type | Description |
|---|---|---|
| query string | string | Name, phone or email to search for. |
| cursor string | string | next_cursor from the previous page. |
{
"clients": [
{
"client_id": "c_5530",
"name": "Jon Reyes",
"phone": "+1 555 0100",
"email": "jon@example.com",
"last_visit": "2026-09-02"
}
],
"next_cursor": null
} Returns the totals Squire's reporting shows for the range: revenue and returning clients, and per barber when group_by is barber. Figures are in the shop's currency. It reads the report only and moves no money.
MCP callsquire_read → get_revenue_report
REST endpointGET https://cotlet.dev/api/v1/squire/revenue-report
| Name | Type | Description |
|---|---|---|
| date_from string required | string | First day, YYYY-MM-DD. |
| date_to string required | string | Last day, YYYY-MM-DD. |
| group_by string | string | Split by barber. Omit for shop totals. |
{
"date_from": "date from",
"date_to": "date to"
} {
"range": {
"from": "2026-10-19",
"to": "2026-10-25"
},
"revenue": 6120,
"returning_clients": 94,
"by_barber": [
{
"barber": "Marcus Hill",
"revenue": 2410
},
{
"barber": "Luis Ortega",
"revenue": 1840
},
{
"barber": "Dev Patel",
"revenue": 1870
}
]
} Your logged-in Commander profile, AES-256-GCM encrypted, in Finland. Never the password.
11 Squire tools. No cookie, no login.
What your Commander login sees: the whole shop for an owner, one chair for a barber.
Checkout, cards on file, tips, deposits, booth rent and payouts.
You type it in yourself. We never do.
Disable for agents, reset the browser or delete the key. The next call fails.
Client phone numbers and emails sit in the same Commander login, so give the agent a Squire user that sees only what it needs. The Cotlet site has A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results); we have no SOC 2 report or third-party pentest yet.
We could not quote Squire's terms: on 28 Oct 2026 getsquire.com, its terms page included, answered our reader with a security check page meant to stop bots. A company that screens bots on its own site may also watch for them in Commander. Open the terms in your own browser and look for rules on bots, automated access and shared logins before you connect. Many booking apps we checked this month ban exactly that, and losing the account would cost you the booking history your shop runs on.
You decide whether that risk is worth it. Cotlet keeps the Squire tools to the work a front desk does by hand.
When a whole day moves, let the agent go one booking at a time, so each client hears about a single change.
Squire keeps moving Commander: a new Commander app for phones, SQUIRE Flex, and dozens of help articles updated on 5 Oct 2026. When a screen moves, we repair the tool and its name stays the same. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Book an appointment | Cancel it; Squire may already have sent the confirmation |
| Reschedule an appointment | Move it back; the client may hear about both changes |
| Cancel an appointment | Book it again; a no-show or late fee is never charged by a tool |
| Block time | Remove the block |
| Remove a block | Block the window again |
3 of the 5 write tools ask first. block_time and remove_block run at once, because a block reaches no client and undoes in one call. Reads run at once too. For a scheduled run you can switch the wait off per tool.
A block does not clear the bookings already in its window. Ask the agent to list them first.
{
"name": "block_time",
"arguments": {
"barber_id": "b_1044",
"start": "2026-11-06T13:00:00",
"end": "2026-11-06T17:00:00"
}
} curl -X POST https://cotlet.dev/api/v1/squire/barbers/b_1044/time/block \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-11-06T13:00:00","end":"2026-11-06T17:00:00"}' {
"block_id": "k_771",
"barber": "Dev Patel",
"start": "2026-11-06T13:00:00",
"end": "2026-11-06T17:00:00"
} A shop script, a sheet or a nightly job can call the same tools over REST at /api/v1/squire, with one key and one price. A barber login that cannot open reports gets an error from get_revenue_report, and a failed call costs nothing. Each tool row above shows its REST path.
About $18 a monthfor one shop with 4 barbers, 3,080 credits. Your Squire plan is billed by Squire as before.
| Job | Calls | Credits |
|---|---|---|
| Morning brief, every barber's day | 2 × 26 | 520 |
| Waitlist clients into open slots | 3 × 20 | 600 |
| A barber out sick, 8 clients moved | 10 × 2 | 200 |
| Time off blocked on the calendar | 2 × 6 | 120 |
| Monday revenue by barber | 1 × 4 | 40 |
| Clients gone 60 days, a few pages | 5 × 2 | 100 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,080 |
The month is our example: 4 barbers, 26 open days, a brief each morning, 20 waitlist days, two sick days and four Monday reports. A full-time barber cuts 8 to 12 heads a day, so the shop sees about 1,000 bookings a month; credits count calls, not bookings. 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 |
|---|---|---|
| GitHub | No server for Squire barbershops. Repos named squire-mcp are coding tools of the same name, with 0 stars. | Nothing to install. |
| Zapier, n8n, Pipedream | No Squire app on any of the three. | No trigger or action to build on. |
| Google bookings in Squire | Clients book your barbers from Google search and Maps. | Client side only; your agent cannot use it. |
| Exporting client lists | A client file from Commander, by hand. | A snapshot; no booking, no schedule. |
If clients only need to find you, Google bookings and the Book Now buttons are free in Squire. If your own agent should read the chairs, work the waitlist, move bookings and send the revenue, Cotlet does that hosted.
Cotlet belongs to Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and working since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Squire tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Squire under Integrations in the console and log in to Commander in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Squire 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 Squire account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Squire: morning schedule brief; move a barber\; block time off for a barber. You ask in plain words, and anything that reaches other people waits for your OK first.
Cotlet works in your own Squire account, so it can only do what your plan shows in Commander. Squire's pricing page lists the waitlist and multiple barber accounts under its PRO plan and the Reporting Dashboard from the first plan (checked 28 Oct 2026). Prices differ by region.
No. Payments, payouts, rent collection and card processing stay in Squire. The tools book, move and cancel appointments and read reports.
Yes. Squire has accounts for independent barbers, and the tools then see your own chair: your bookings, blocks, clients and revenue.
Only the way in differs. Both carry the same 11 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and sheets use REST.
No. Cotlet is independent and not affiliated with Squire.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
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