[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# SimplePractice API and MCP server: Let your AI agent run your practice admin.

> SimplePractice has no public API and no MCP server for practices (checked 27 Oct 2026). Cotlet runs 13 SimplePractice tools hosted, over MCP for agents and REST for scripts, in your own login.

Read SimplePractice schedules and administrative records through MCP or REST. Connect your authorized account to an agent or private reporting workflow.

[MCP setup](https://cotlet.dev/integrations/simplepractice-api-mcp-server.md#connect)
[REST API guide](https://cotlet.dev/integrations/simplepractice-api-mcp-server.md#rest-api)

- Free 7-day trial, no card
- Unofficial, not affiliated with SimplePractice
- Page: https://cotlet.dev/integrations/simplepractice-api-mcp-server

## What can you automate in SimplePractice?

- Triage new appointment requests
- Send intake before a first session
- Book a client's next session
- Mark no-shows and late cancels
- Follow up on denied claims
- Chase overdue client balances

## Does SimplePractice have an MCP server or an API?

- The help center says SimplePractice "doesn't currently offer a public-facing API for integrations with other software or platforms."
- Its only API, launched in 2022 and now called SimpleConnect, lets health plans and EAPs request appointments with in-network clinicians. Practices cannot use it.
- Zapier and n8n list no SimplePractice app, so automations today run on calendar sync, email alerts and report downloads.

| What you need | SimpleConnect | GitHub MCP server | Cotlet |
|---|---|---|---|
| Open to a practice | Health plans and EAPs only | Yes | Yes |
| Clinician side: requests, intake, claims | Appointment requests only | Client Portal view only | Yes |
| Writes: accept, share, message | No | Read-only | Yes, you approve each |
| Works from Claude or ChatGPT | No | Desktop apps only | Yes, hosted |
| Allowed by SimplePractice's terms | Yes, official | Uses the portal | Uses the web app |

Checked 27 Oct 2026. Sources: [SimplePractice Help Center: Comparing features by plan (FAQ on API)](https://support.simplepractice.com/hc/en-us/articles/360034957931-Comparing-SimplePractice-features-by-plan), [SimplePractice Enterprise launches API (press release)](https://www.simplepractice.com/press/simplepractice-enterprise-launches-api/), [Zapier app directory (no SimplePractice app)](https://zapier.com/apps)

## How does Cotlet connect to SimplePractice?

1. **Sign in to SimplePractice.** Use your own account in its Cotlet Cloud Browser.
2. **Choose MCP or REST.** Connect your agent or create a Cotlet API key.
3. **Run your workflow.** Ask your agent or send an HTTP request.

We never keep your SimplePractice password, and no tool reads progress notes.

## Connect SimplePractice to your agent or workflow

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.

1. **Sign in to SimplePractice.** Create a Cotlet account, open SimplePractice in its Cloud Browser, sign in with your two-factor code and press Enable for agents.
2. **Add the server address.** Enter https://cotlet.dev/mcp/v1 where your agent takes an MCP server or a custom connector.
3. **Approve the agent.** Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

The shared address `https://cotlet.dev/mcp/v1` carries SimplePractice next to your other apps. Turned SimplePractice on after connecting? Refresh the connector so its tools appear.

Claude:

```
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-simplepractice \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

ChatGPT:

```
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
```

Cursor:

```
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-simplepractice": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
```

Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet-simplepractice]
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: simplepractice_read
```

Make, Zapier:

```
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: simplepractice_read
```

## How to use the SimplePractice REST API

### Create your Cotlet API key

Create a Cotlet API key with access to SimplePractice and its read operations. Store it as `COTLET_API_KEY` in your environment or automation platform's credential store.

Sign in to SimplePractice in its Cotlet Cloud Browser and enable the app for agents. Your owner or team role must permit the calendar, client or billing records you request.

### Make your first SimplePractice API request

REST:

```
curl "https://cotlet.dev/api/v1/simplepractice/appointments?from=2026-10-28&to=2026-10-28" \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

### Read administrative schedule records

A successful REST call puts the tool output in `result`. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt:

```
{
  "status": "success",
  "app": "simplepractice",
  "tool": "list_appointments",
  "result": {
    "appointments": [
      {
        "appointment_id": "ap_5021",
        "start": "2026-10-28T09:00:00-07:00",
        "duration_minutes": 53,
        "client": "Jordan Avery",
        "client_id": "cl_3104",
        "clinician": "Dr. Sam Lee",
        "service": "90837",
        "location": "Telehealth",
        "status": "Show",
        "first_session": false
      }
    ]
  }
}
```

Replace the dates with your reporting range and read `result.appointments`. This operation has no cursor or page-size input; timestamps keep their offset and duration uses minutes.

Compare appointment times and status as well as IDs. Pending requests are separate and require `list_appointment_requests`.

These reads do not return progress notes or clinical documents. Keep administrative reports in a permitted private destination and retain the access and privacy limits described on this page.

### SimplePractice workflows for agents and automations

| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read appointment records into a permitted private administrative schedule without changing appointments. |
| Make | HTTP > Make a request | Read pending appointment requests into a staff review queue without accepting or rejecting requests. |
| Python or Node.js | REST API | Read claims and claim details into a private denied-or-rejected administration queue without submitting claims. |

Send `Authorization: Bearer <your Cotlet API key>` in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads SimplePractice; 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](https://cotlet.dev/integrations/simplepractice-api-mcp-server.md#tools) lists operations and inputs. The [REST API guide](https://cotlet.dev/docs/api.md) explains authentication, errors and approvals.

## SimplePractice API endpoints and MCP tools

### Calendar and requests

Requests from Therapy Finder and the Optum portal expire after 72 hours. A status change can create an invoice and an AutoPay charge.

- **List appointments** (`list_appointments`, read): Appointments on the calendar in a date range, with client, service and status.
- **List appointment requests** (`list_appointment_requests`, read): Pending requests from the Requests page, with source and requested time.
- **Accept appointment request** (`accept_appointment_request`, write, asks first): Accepts a pending request and sends the client the confirmation email.
- **Decline appointment request** (`decline_appointment_request`, write, asks first): Declines a pending request with a reason and emails the client.
- **Create appointment** (`create_appointment`, write, asks first): Books an appointment for an existing client on the calendar.
- **Set appointment status** (`set_appointment_status`, write, asks first): Sets Show, No show, Canceled, Late canceled or Clinician canceled.

### Clients and the Client Portal

Intake goes from your shareable documents. A Secure Message reaches one client and holds up to 5,000 characters.

- **Find client** (`find_client`, read): Clients and contacts by name, email or phone, with status and portal access.
- **Share intake documents** (`share_intake_documents`, write, asks first): Shares intake forms through the Client Portal and emails the client.
- **Send secure message** (`send_secure_message`, write, asks first): Sends a Secure Message to one client through the Client Portal.

### Billing and insurance claims

Balances by aging bucket and claims by status. A claim without Payment Reports stops at Accepted.

- **List outstanding balances** (`list_outstanding_balances`, read): Clients who owe money, grouped by age as the client invoice aging report shows.
- **Get client billing** (`get_client_billing`, read): A client's balance and unpaid invoices from their Billing page.
- **List claims** (`list_claims`, read): Insurance claims with payer, date of service and claim status.
- **Get claim** (`get_claim`, read): One claim's details, status history and the payer's remarks.

Inputs, REST path and example response of every tool: https://cotlet.dev/integrations/simplepractice-api-mcp-server#tools

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

- **What we store.** Your signed-in SimplePractice profile, AES-256-GCM encrypted, in Finland. Never the password.
- **What your agent gets.** The 13 SimplePractice tools, never the cookie.
- **What the session sees.** Whatever your own login sees, so use a team login with only the access the agent needs.
- **What no tool touches.** Progress notes, treatment plans, diagnoses, payment cards and settings.
- **Two-factor codes.** SimplePractice asks for a code at sign-in. You type it, we never do.
- **How to cut access.** Disable for agents, reset the browser, or sign out in SimplePractice.

SimplePractice's BAA covers data inside SimplePractice. Cotlet signs no BAA and makes no HIPAA claim, so whether client data may pass through an AI agent is your practice's decision. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory ([live results](https://cotlet.dev/security.md)). There is no SOC 2 report or third-party pentest yet.

## Is it against SimplePractice's terms? Account safety

> Launch an automated program or script, including, but not limited to, web spiders, web crawlers, web robots, web ants, web indexers, bots, viruses, Trojan horses, or worms, or any program which may make multiple server requests per second
>
> [SimplePractice Terms of Service, last updated 2 Aug 2023](https://www.simplepractice.com/terms/)

Cotlet works in your SimplePractice web app the way you do, one page at a time, but SimplePractice could still read it as a bot. The same terms bar using the service "for any other purpose intended to benefit a party other than You". We found no public case of a SimplePractice account closed for an AI agent or a script (checked 27 Oct 2026).

How we keep your account looking like you:

- Your own SimplePractice login, signed in by you with your code
- One Cloud Browser with its own IP and cookies, so SimplePractice can remember the device for 30 days
- No tool opens progress notes or clinical documents
- Every message, share, booking and status change waits for your OK
- If SimplePractice objects, we pause the SimplePractice tools for everyone within 24 h

> If losing your SimplePractice account would hurt more than the time saved, do this work by hand.

## What happens when SimplePractice changes?

- **12 h** between tests of the SimplePractice reads
- **$0** for a call to a SimplePractice tool paused for repair

SimplePractice changes under you: two-factor became required for new customers on 1 Oct 2026, and the billing reports article was rewritten on 7 Oct 2026. When a page moves, the fix is ours and your prompts keep working. [status.cotlet.dev](https://status.cotlet.dev) checks the site, console and API every 3 minutes.

## Approvals, undo and mistakes

1. **Reads the request.** Time, service, source, and whether the person is a new client.
2. **Checks your calendar.** The requested slot against what is already booked.
3. **Waits for your OK.** Accept and the intake packet show up in your Cotlet console first.
4. **Reports back.** Appointment ID, start time, documents shared and email sent.

| Action | Undo |
|---|---|
| Accept a request | Cancel the appointment; the confirmation email is already out |
| Decline a request | None: a new client is archived and emailed |
| Set No show or Late canceled | Delete the invoice, then set Canceled; an AutoPay charge needs a refund |
| Share intake documents | None: the email and portal access are out |
| Send a Secure Message | None: the client gets an email at once |

6 of 13 tools ask first: every write, because each one emails a client or can charge one. The 7 reads run at once. Switch the wait off per tool for a scheduled run.

> An insurance client marked No show or Late canceled owes the full fee, and setting Show again does not undo that. Ask the agent to list first and change statuses after you look.

MCP call:

```
{
  "name": "accept_appointment_request",
  "arguments": {
    "request_id": "rq_8810",
    "documents": [
      "Intake packet"
    ],
    "message": "Looking forward to meeting you on Thursday."
  }
}
```

REST:

```
curl -X POST https://cotlet.dev/api/v1/simplepractice/requests/rq_8810/appointment-request/accept \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"documents":["Intake packet"],"message":"Looking forward to meeting you on Thursday."}'
```

Tool output:

```
{
  "request_id": "rq_8810",
  "status": "accepted",
  "appointment_id": "ap_5040",
  "client_id": "cl_3188",
  "start": "2026-10-29T15:00:00-07:00",
  "documents_shared": [
    "Intake packet"
  ],
  "email_sent": true
}
```

Scripts, cron jobs and n8n steps reach the same tools over REST at `/api/v1/simplepractice`, with the same key and price. A login without billing access gets an error on the billing tools, and a failed call is free. The tools table lists each REST path.

## How much does the SimplePractice MCP server cost?

**About $14 a month** for a solo clinician with 20 sessions a week, 2,460 credits. Your SimplePractice plan stays billed by SimplePractice.

| Job | Calls | Credits |
|---|---|---|
| Check the Requests page, daily | 1 × 30 | 300 |
| Accept a request and send intake | 2 × 8 | 160 |
| Review yesterday's sessions, workdays | 1 × 22 | 220 |
| Mark a no-show or late cancel | 1 × 4 | 40 |
| Denied and rejected claims, weekly | 3 × 4 | 120 |
| Overdue balances and reminders, weekly | 3 × 4 | 120 |
| Cloud Browser, 30 days |  | 1,500 |
| Total |  | 2,460 |

- Free 7-day trial, no card
- 10 credits per successful call, MCP or REST
- 50 credits a day for the Cloud Browser
- Works on Starter, Essential and Plus

SimplePractice's own rate guide works with 20 clients a week. The counts of requests and no-shows are our example. Dollars at the $29 pack rate.

## SimplePractice MCP server on GitHub, hosted or by hand: which to use

| Option | What it does | Where it stops |
|---|---|---|
| [chrischall/simplepractice-mcp](https://github.com/chrischall/simplepractice-mcp) | Reads a client's own Client Portal: appointments, billing items, documents. MIT, last push 26 Oct 2026. | Client side only and read-only. Runs on your computer. |
| SimpleConnect | SimplePractice's scheduling API for health plans and EAPs. | Not open to practices. |
| Unified API vendors | Some sell a SimplePractice API built from the web app. | Aimed at software companies, not one practice. |
| Zapier, n8n, Make | No SimplePractice app on Zapier or n8n (checked 27 Oct 2026). | Workflows run on calendar sync and email alerts, not the account. |
| By hand | Requests, Share, Billing and Analytics > Reports in the web app. | Free and within the terms, but it is your evening. |

No free server works on the clinician account today. Cotlet is for a practice owner who wants requests, intake and claim follow-up handled from Claude or ChatGPT with each client-facing step approved. It works in your web login, so it carries the terms risk above.

## Who runs Cotlet

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the SimplePractice tools go to contact@cotlet.dev.

## SimplePractice API and MCP: questions

### Can I use the SimplePractice API without an AI agent?

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.

### How do I get access?

Create a free account at https://cotlet.dev, open SimplePractice under Integrations in the console and sign in to SimplePractice in its Cloud Browser. The trial starts with your first app, no card asked.

### Can the agent read progress notes?

No. No tool reads, exports or writes progress notes or other clinical documents. The tools cover the calendar, requests, intake sharing, billing, claims and Secure Messaging.

### Does SimplePractice two-factor authentication still work?

Yes. SimplePractice requires two-factor authentication for new customers since 1 Oct 2026 (help center, checked 27 Oct 2026). You enter the code yourself when you sign in to your Cloud Browser; Cotlet never bypasses it.

### Is client data covered by my SimplePractice BAA?

SimplePractice's BAA covers data inside SimplePractice. Sending client data to an AI agent or to Cotlet is a separate decision for your practice under HIPAA. Cotlet does not sign a BAA.

### Can a team member's login be used?

Yes. SimplePractice gives each team member their own login and two-factor setup. The agent sees what that login sees, so a login without billing access cannot read balances or claims.

### Can the agent fix and resubmit a denied claim?

No. get_claim returns the payer's remarks; the corrected claim is filed in SimplePractice by you.

### Is the MCP server different from the REST API?

Only the door is different. Both expose the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

### Is Cotlet affiliated with SimplePractice?

No. Cotlet is independent and not affiliated with SimplePractice, LLC.

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
