Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent books consults and treatments from messages, moves a provider's day and finds patients due back. Sign in to Portrait once in your own Cloud Browser. Charts stay untouched.
5 tools Read and write
Portrait Care has no MCP server, no ChatGPT or Claude app, no public API and no Zapier app; it is built as a closed all-in-one platform (checked 9 Nov 2026). Cotlet runs 5 Portrait Care tools hosted, over MCP for agents and REST for scripts, in your own Portrait login, for the schedule and patient contact details only.
| What you need | Portrait API | By hand | Cotlet |
|---|---|---|---|
| Schedule and free times | No API | Yes, one by one | Yes |
| Book or move | No API | Yes, one by one | Yes, after your OK |
| Patients due back | No API | Patient by patient | Yes |
| Ask in ChatGPT or Claude | No | No | Yes |
| Charts and notes | No API | Yes | Not touched |
Checked 8 Nov 2026. Sources: Portrait Care site · Portrait vs Mindbody (features, integrations) · Portrait web app login
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 Portrait password, the tools never open charts, and no booking or move goes through until you approve it. Who can see your session
Sign in to Portrait Care in a Cloud Browser. Create a Cotlet account, open Portrait Care in its Cloud Browser, sign in with your Portrait 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.
Portrait Care shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Portrait Care on after connecting? Refresh the connector and the 5 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: portrait_care_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: portrait_care_write Free slots come from the schedule. Bookings and moves wait for your OK; Portrait sends its usual messages.
Returns appointments with patient name, service, provider, start time and status from the schedule.
MCP callportrait_care_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/portrait-care/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string | string | ISO date. Default: date_from. |
| provider string | string | Provider name. |
| page integer | integer | Page number. Default: 1. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "AP-50812",
"patient": "Jessica Moreno",
"service": "Neurotoxin",
"provider": "Dr. Patel",
"start": "2026-11-12T11:00",
"status": "Booked"
}
],
"page": 1
} Reads the schedule and returns start times where the service fits.
MCP callportrait_care_read → find_free_slots
REST endpointGET https://cotlet.dev/api/v1/portrait-care/free-slots/find
| Name | Type | Description |
|---|---|---|
| service string required | string | Service name. |
| date string required | string | ISO date. |
| provider string | string | Provider name. |
{
"service": "service",
"date": "date"
} {
"service": "Dermal filler consult",
"slots": [
{
"provider": "Dr. Patel",
"start": "2026-11-13T14:30"
}
]
} Creates the appointment on the schedule. Portrait sends its usual confirmation and intake forms by your settings. By default you confirm each call; you can switch that off for this tool.
MCP callportrait_care_write → book_appointment
REST endpointPOST https://cotlet.dev/api/v1/portrait-care/patients/{patient_id}/appointments
| Name | Type | Description |
|---|---|---|
| patient_id string required | string | Patient ID from list_patients. |
| service string required | string | Service name. |
| provider string required | string | Provider name. |
| start string required | string | ISO date and time. |
{
"patient_id": "PT-7790",
"service": "Dermal filler consult",
"provider": "Dr. Patel",
"start": "2026-11-13T14:30"
} {
"appointment_id": "AP-50877",
"patient": "Emily Carter",
"service": "Dermal filler consult",
"provider": "Dr. Patel",
"start": "2026-11-13T14:30",
"status": "Booked"
} Moves the appointment on the schedule; your settings decide what the patient hears. By default you confirm each call; you can switch that off for this tool.
MCP callportrait_care_write → reschedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/portrait-care/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. |
| provider string | string | New provider. Default: unchanged. |
{
"appointment_id": "appointment_8c41d2",
"start": "start"
} {
"appointment_id": "AP-50812",
"start": "2026-11-14T10:00",
"provider": "Dr. Patel",
"status": "Booked"
} Contact details, last visit and last service only. No charts or clinical notes.
Returns patient contact details, last visit and last service. No charts or clinical notes.
MCP callportrait_care_read → list_patients
REST endpointGET https://cotlet.dev/api/v1/portrait-care/patients
| Name | Type | Description |
|---|---|---|
| query string | string | Name, phone or email. |
| not_visited_days integer | integer | Only patients with no visit in this many days. |
| page integer | integer | Page number. Default: 1. |
{
"patients": [
{
"patient_id": "PT-7712",
"name": "Danielle Brooks",
"phone": "(512) 555-0188",
"last_visit": "2026-06-18",
"last_service": "Neurotoxin"
}
],
"page": 1
} Your signed-in Portrait Care profile, AES-256-GCM encrypted, in Finland. No password.
The 5 Portrait Care tools, never the session cookie.
What your login sees on the schedule and patient contact details.
Charts, clinical notes, exams, payments, inventory, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your Portrait Care 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 Portrait moves a button on the schedule or renames a patient tab, 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 |
| Move an appointment | Move it back; a message already sent stays sent |
2 of 5 tools ask first: book_appointment, reschedule_appointment. You can turn the wait off per tool once you trust a routine.
{
"name": "book_appointment",
"arguments": {
"patient_id": "PT-7790",
"service": "Dermal filler consult",
"provider": "Dr. Patel",
"start": "2026-11-13T14:30"
}
} curl -X POST https://cotlet.dev/api/v1/portrait-care/patients/PT-7790/appointments \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"Dermal filler consult","provider":"Dr. Patel","start":"2026-11-13T14:30"}' {
"appointment_id": "AP-50877",
"patient": "Emily Carter",
"service": "Dermal filler consult",
"provider": "Dr. Patel",
"start": "2026-11-13T14:30",
"status": "Booked"
} A cron job or n8n flow can call the same tools over REST at /api/v1/portrait-care with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $27 a monthfor a med spa with 2 providers, 4,690 credits. Your Portrait Care plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Booking from a message | 3 × 80 | 2,400 |
| Patients due back, weekly | 2 × 4 | 80 |
| Appointment moved | 3 × 15 | 450 |
| Tomorrow checked, daily | 1 × 26 | 260 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 4,690 |
Portrait 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 |
|---|---|---|
| Portrait online booking | Patients book themselves. | Only the patient books; no moves or lists for you. |
| Portrait CRM | Follow-ups inside Portrait. | Set up in Portrait; nothing you can ask in plain words. |
| By hand | Every screen of Portrait, one booking at a time. | Your front desk's time. |
Portrait Care has no API or Zapier app, so there is nothing to connect a script to. To book, move and bring patients back from ChatGPT or Claude this week, Cotlet works in the Portrait 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 Portrait Care tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Portrait Care under Integrations in the console and sign in to Portrait Care in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Portrait Care 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 Portrait Care account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Portrait Care: book consults from messages; bring patients back; move a provider's day. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Portrait Care has no ChatGPT or Claude connector of its own and Portrait Care 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 finds the patient, checks free slots and books the service with the provider you name. Booking waits for your OK by default.
Yes, with Cotlet. ChatGPT lists patients who have not been back in the time you name, with their last service, so your team can reach out.
No. The Portrait Care tools cover the schedule and patient contact details. Charts, clinical notes and Good Faith Exams are not part of them.
Only in how it is called. Both carry the same 5 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Portrait Care.
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