Cliniko MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.37.3Updated Nov 8, 2026

Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableProductivity & WorkflowFinanceBusiness & Commerce

Overview

AI-generated overview

Hosted Cliniko MCP server that lets an assistant look up patients, appointments, availability, invoices and treatment notes, and create or archive records.

What you can do
  • Read account details and list or fetch patients, practitioners, businesses and appointment types
  • List and fetch individual appointments, filtered by patient, practitioner, business, type or time window
  • Find bookable slots and the next available time for a business, practitioner and appointment type
  • List and fetch invoices and billable products
  • List and fetch treatment notes (read-only)
  • Create patients, appointments and unavailable blocks, and archive unavailable blocks
When to use it
Useful for clinic staff or assistants working with a Cliniko practice who want to answer questions about the day's schedule, find open slots, review invoices, or book and block diary time through chat instead of the Cliniko UI.
Requirements
Remote MCP endpoint; no local install. Connect with the server URL only and sign in through OAuth, pasting a Cliniko API key on first connect. A free plan allows 50 tool calls per month; paid plans are billed through a Stripe checkout link.
Before you install
The server holds a Cliniko API key and acts on live practice data. Write tools create real patients, appointments and diary blocks and archive blocks, so confirm before running them. Treatment notes are protected health information and patient and invoice data is sensitive. Paid plans cost money and cancellation gives no refund for the current period.

Installation

In SourceWeft

  1. Open Cliniko MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fcliniko/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "cliniko-by-usefulapi": {
      "type": "http",
      "url": "https://cliniko.usefulapi.io/mcp"
    }
  }
}

README

Cliniko MCP by usefulapi

Manage your Cliniko practice — patients, appointments, availability, invoices and treatment notes — from Claude, Cursor, or any MCP client. Hosted, no local install — connect with your Cliniko API key.

Live endpoint: https://cliniko.usefulapi.io/mcp · Homepage: https://usefulapi.io/cliniko

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://cliniko.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http cliniko https://cliniko.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "cliniko": {      "url": "https://cliniko.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Cliniko credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/cliniko/

On first connect you'll paste your Cliniko API key. It's validated, stored per-user, and scoped to you.

Tools

ToolTypeWhat it does
cliniko_get_accountreadGet account details
cliniko_list_patientsreadList patients
cliniko_get_patientreadGet a patient
cliniko_list_appointmentsreadList appointments
cliniko_get_appointmentreadGet an appointment
cliniko_list_practitionersreadList practitioners
cliniko_list_businessesreadList businesses
cliniko_list_appointment_typesreadList appointment types
cliniko_list_productsreadList products
cliniko_list_invoicesreadList invoices
cliniko_get_invoicereadGet an invoice
cliniko_list_treatment_notesreadList treatment notes
cliniko_get_treatment_notereadGet a treatment note
cliniko_list_available_timesreadList available times
cliniko_next_available_timereadNext available time
cliniko_create_patientwriteCreate a patient
cliniko_create_appointmentwriteCreate an appointment
cliniko_list_unavailable_block_typesreadList unavailable block types
cliniko_list_unavailable_blocksreadList unavailable blocks
cliniko_create_unavailable_blockwriteCreate an unavailable block
cliniko_archive_unavailable_blockwriteArchive an unavailable block
cliniko_usage_statusmetaUsage status (free-tier meter)
cliniko_request_featuremetaRequest a missing feature
cliniko_upgrademetaUpgrade to Pro or Pro+
cliniko_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with cliniko_upgrade (it returns a Stripe Checkout link). Cancel any time with cliniko_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running cliniko_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT — see LICENSE. Documentation only; the server is hosted.

Source: servers/cliniko/README.md at commit 2450437

Tools

21

cliniko_get_account

Get account details

Get the Cliniko account and subscription details for the authenticated API key. A good first call to sanity-check auth, shard, and User-Agent. GET /account.

Takes no parameters.

cliniko_list_patients

List patients

Search/list patients. Name/email filters use Cliniko 'contains' matching (q[]=field:~value). GET /patients.

Parameterspagesortemailorderper_pagelast_namefirst_name

cliniko_get_patient

Get a patient

Fetch a single patient by id. GET /patients/{id}.

Parametersidrequired

cliniko_list_appointments

List appointments

List individual appointments, optionally filtered by patient/practitioner/business/type and a starts_at window (starts_from / starts_to: ISO 8601 with Z or an offset, or YYYY-MM-DD = 00:00 UTC; sent to Cliniko in UTC). GET /individual_appointments.

Parameterspagesortorderper_pagestarts_topatient_idbusiness_idstarts_frompractitioner_idappointment_type_id

cliniko_get_appointment

Get an appointment

Fetch a single individual appointment by id. GET /individual_appointments/{id}.

Parametersidrequired

cliniko_list_practitioners

List practitioners

List practitioners in the account. GET /practitioners.

Parameterspageper_page

cliniko_list_businesses

List businesses

List businesses (practice locations) in the account. GET /businesses.

Parameterspageper_page

cliniko_list_appointment_types

List appointment types

List appointment types (service definitions). GET /appointment_types.

Parameterspageper_page

cliniko_list_products

List products

List billable products/items. GET /products.

Parameterspageper_page

cliniko_list_invoices

List invoices

List invoices, optionally filtered by patient. GET /invoices.

Parameterspagesortorderper_pagepatient_id

cliniko_get_invoice

Get an invoice

Fetch a single invoice by id. GET /invoices/{id}.

Parametersidrequired

cliniko_list_treatment_notes

List treatment notes

List treatment notes, optionally filtered by patient. NOTE: treatment notes are protected health information (PHI) — handle with care. Read-only. GET /treatment_notes.

Parameterspageper_pagepatient_id

cliniko_get_treatment_note

Get a treatment note

Fetch a single treatment note by id. NOTE: treatment notes are protected health information (PHI). Read-only. GET /treatment_notes/{id}.

Parametersidrequired

cliniko_list_available_times

List available times

List bookable appointment slots for a business + practitioner + appointment type within a date range (from/to, yyyy-mm-dd, span <= 7 days). High-value booking-slot lookup. GET /businesses/{business_id}/practitioners/{practitioner_id}/appointment_types/{appointment_type_id}/available_times.

Parameterstorequiredfromrequiredbusiness_idrequiredpractitioner_idrequiredappointment_type_idrequired

cliniko_next_available_time

Next available time

Get the single next bookable slot for a business + practitioner + appointment type (optionally from a date). GET /businesses/{business_id}/practitioners/{practitioner_id}/appointment_types/{appointment_type_id}/next_available_time.

Parametersfrombusiness_idrequiredpractitioner_idrequiredappointment_type_idrequired

cliniko_create_patient

Create a patient

WRITE — creates a REAL new patient record in the live Cliniko practice. Requires first_name + last_name. POST /patients.

Parameterscityemailnotesstateaddress_1last_namerequiredpost_codefirst_namerequiredcountry_codephone_numberdate_of_birth

cliniko_create_appointment

Create an appointment

WRITE — books a REAL new individual appointment in the live Cliniko practice. Requires patient_id, practitioner_id, business_id, appointment_type_id, and starts_at (ISO 8601 with Z or an offset; sent in UTC). ends_at defaults from the appointment type if omitted. To hold time without a patient (a room block, lunch, leave), use cliniko_create_unavailable_block instead. POST /individual_appointments.

Parametersnotesends_atstarts_atrequiredpatient_idrequiredbusiness_idrequiredpractitioner_idrequiredappointment_type_idrequired

cliniko_list_unavailable_block_types

List unavailable block types

List the practice's unavailable block types (e.g. Room Block, Lunch, Leave) with id, name, colour and default duration. Use the id as unavailable_block_type_id in cliniko_create_unavailable_block. GET /unavailable_block_types.

Parameterspageper_page

cliniko_list_unavailable_blocks

List unavailable blocks

List unavailable blocks (diary time held without a patient: room blocks, lunch, leave), optionally filtered by business, practitioner, block type and a starts_at window (ISO 8601 with Z or an offset, or YYYY-MM-DD = 00:00 UTC). Archived blocks are excluded. GET /unavailable_blocks.

Parameterspagesortorderper_pagestarts_tobusiness_idstarts_frompractitioner_idunavailable_block_type_id

cliniko_create_unavailable_block

Create an unavailable block

WRITE — holds REAL diary time in the live Cliniko practice without a patient: a room block, lunch, leave or meeting. No patient_id. Requires business_id, practitioner_id (the diary column to block), starts_at and ends_at (ISO 8601 with Z or an offset; sent in UTC). Set unavailable_block_type_id (from cliniko_list_unavailable_block_types, e.g. the Room Block type) and put the room or reason in notes. repeat_rule repeats the block. Undo with cliniko_archive_unavailable_block. POST /unavailable_blocks.

Parametersnotesends_atrequiredstarts_atrequiredbusiness_idrequiredrepeat_rulepractitioner_idrequiredunavailable_block_type_id

cliniko_archive_unavailable_block

Archive an unavailable block

WRITE — archives (removes from the diary) one REAL unavailable block in the live Cliniko practice, e.g. to undo a block created by mistake. POST /unavailable_blocks/{id}/archive.

Parametersidrequired

Version history

22
  1. v1.37.3LatestNov 8, 2026
  2. v1.37.2Nov 7, 2026
  3. v1.35.3Nov 5, 2026
  4. v1.35.2Nov 5, 2026
  5. v1.35.1Nov 4, 2026
  6. v1.35.0Nov 3, 2026
  7. v1.34.1Nov 3, 2026
  8. v1.33.0Nov 1, 2026
  9. v1.31.0Oct 31, 2026
  10. v1.30.0Oct 31, 2026
  11. v1.29.2Oct 30, 2026
  12. v1.29.0Oct 30, 2026
  13. v1.24.0Oct 26, 2026
  14. v1.21.3Oct 25, 2026
  15. v1.21.0Oct 25, 2026
  16. v1.20.0Oct 24, 2026
  17. v1.17.0Oct 23, 2026
  18. v1.16.4Oct 22, 2026
  19. v1.16.3Oct 21, 2026
  20. v1.11.1Oct 9, 2026
  21. v1.10.0Oct 9, 2026
  22. v1.0.1Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations