Skip to content

Connectors · Work & projects

Cliniko MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Cliniko and the rest of your systems. It gives your agent 223 Cliniko actions (117 reads, 85 writes and 21 that wait for a confirmation) and holds the Cliniko credential itself, so the agent never does. It paces Cliniko's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "cliniko.patients.list",  intent: "check which Cliniko account is connected"}# List patients · read · 1 upstream call
  • 223actionsin one signed file
  • 117readlook, never change
  • 85writecreate and update
  • 21wait for a yesdestructive, confirmed first

Set up

Connect Cliniko in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Cliniko.

    Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_keyCliniko API key: in Cliniko open My Info (your name, top right) > Manage API keys > Add an API key, and copy it
    • hostWhere your Cliniko lives: your host
    account { op: "connections.requirements", service: "cliniko" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "cliniko.patients.list" }# list patients · read · 1 upstream callcheck { action: "cliniko.patients.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Cliniko at a glance

Sign-in
Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_key
Setup fields
host
Limits we pace to
200 calls a minute, per connection
API covered
Cliniko API v1 (OpenAPI 3.0.3), at your Cliniko instance's API base URL, which you enter when connecting
Built from
Cliniko's documentation, read 22 October 2026docs.api.cliniko.comdocs.api.cliniko.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
116 of 117 reads, for up to 5 minutes; a write clears what it affects
Shared entities
8, so ask can line Cliniko up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Cliniko.

223 actions in 45 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 117readlook, never change
  • 85writecreate and update
  • 21destructivewait for a confirmation
  1. Attendees

    10

    5 read · 3 write · 2 destructive

    List attendees · Get attendee · Update attendee · Create attendee

  2. Patient attachments

    9

    5 read · 3 write · 1 destructive

    List patient attachments · Get patient attachment · Update patient attachment · Archive patient attachment

  3. Individual appointments

    8

    3 read · 3 write · 2 destructive

    List individual appointments · Create individual appointment · Get individual appointment · Update individual appointment

  4. Treatment notes

    8

    3 read · 4 write · 1 destructive

    List treatment notes · Create treatment note · Get treatment note · Update treatment note

  5. Appointment types

    7

    3 read · 3 write · 1 destructive

    Create appointment type · List appointment types · List appointment types for practitioner · Archive appointment type

  6. Businesses

    7

    2 read · 4 write · 1 destructive

    List businesses · Create business · Get business · Update business

  7. Group appointments

    7

    3 read · 3 write · 1 destructive

    Create group appointment · List group appointments · Archive group appointment · Get conflicts for a group appointment

  8. Invoices

    7

    7 read · 0 write · 0 destructive

    List invoices · Get invoice · List invoices for appointment · List invoices for attendee

37 more areas · 160 actions
  • Patients 7
  • Practitioners 7
  • Unavailable blocks 7
  • Billable items 6
  • Contacts 6
  • Medical alerts 6
  • Patient cases 6
  • Patient forms 6
  • Practitioner reference numbers 6
  • Products 6
  • Treatment note templates 6
  • Appointment type billable items 5
  • Appointment type products 5
  • Communications 5
  • Patient form templates 5
  • Product suppliers 5
  • Recall types 5
  • Recalls 5
  • Relationships 5
  • Taxes 5
  • Unavailable block types 5
  • Concession prices 4
  • Concession types 4
  • Daily availabilities 4
  • Availability blocks 3
  • Bookings 3
  • Invoice items 3
  • Referral sources 3
  • Stock adjustments 3
  • Available times 2
  • Body charts 2
  • Referral source types 2
  • Services 2
  • Settings 2
  • Users 2
  • Signatures 1
  • User 1

Top actions

The Cliniko API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 75 of Cliniko's 75 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
cliniko.patients.listList patientsList patients.readcrm.contact.list177 connectors
cliniko.businesses.listList businessesList businesses.readcrm.location.list48 connectors
cliniko.users.listList usersList users.readidentity.user.list474 connectors
cliniko.patients.createCreate patientCreate patient.writecrm.contact.create161 connectors
cliniko.invoices.listList invoicesList invoices.readfinance.invoice.list101 connectors
cliniko.patients.updateUpdate patientUpdate patient.writecrm.contact.update159 connectors
cliniko.user.getGet authenticated userGet authenticated user.readidentity.current_user.get307 connectors
cliniko.products.listList productsList products.readcommerce.product.list112 connectors
cliniko.businesses.createCreate businessCreate business.writecrm.location.create41 connectors
cliniko.billable_items.listList billable itemsList billable items.readfinance.billing_item.list24 connectors
cliniko.individual_appointments.listList individual appointmentsList individual appointments.readcomm.event.list61 connectors
cliniko.businesses.deleteArchive businessArchive business.destructivecrm.location.delete31 connectors

Try it

Prompts to paste into Claude.

Each one names the Cliniko actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Cliniko invoices are more than 30 days overdue? Group them by customer with the total owed.

    callscliniko.invoices.list

  2. Writewrite

    Create patient in Cliniko. Show me exactly what you will send before you save it.

    callscliniko.patients.create

  3. Across systemsread

    Which contacts are in both Cliniko and HaloPSA, and how many are in only one of them?

    callscliniko.patients.listhalopsa.users.list

Across your systems

Cliniko, joined to the rest of your business.

One ask fetches from Cliniko and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

  • Which contacts are in both Cliniko and HaloPSA, and how many are in only one of them?

    cliniko.patients.list + halopsa.users.list, on crm.contact · HaloPSA

  • Which contacts are in both Cliniko and NetSuite, and how many are in only one of them?

    cliniko.patients.list + netsuite.views.contacts, on crm.contact · NetSuite

Also mapped by other connectorsidentity.user 517crm.contact 192identity.current_user 142commerce.product 109finance.invoice 91crm.location 49comm.event 47finance.billing_item 14
ask
ask {  intent: "which contacts are in both Cliniko and HaloPSA, and how many are in only one of them",  steps: [    { action: "cliniko.patients.list", as: "people", input: {}, limit: 100, max_pages: 5 },    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },    { join: {        left: "people",        right: "people2",        on: "crm.contact",        group_by: "people.email",        select: ["people.email", "count(people2.id) as in_halopsa"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Cliniko

Destructive actions wait for a yes.

21 Cliniko actions are destructive. These are all of them:

  • Archive businesscliniko.businesses.delete
  • Archive productcliniko.products.delete
  • Archive billable itemcliniko.billable_items.delete
  • Archive individual appointmentcliniko.individual_appointments.delete
  • Archive treatment notecliniko.treatment_notes.delete
  • Delete taxcliniko.taxes.delete
  • Cancel individual appointmentcliniko.individual_appointments.cancel
  • Archive patient attachmentcliniko.patient_attachments.delete
  • Delete product suppliercliniko.product_suppliers.delete
  • Archive contactcliniko.contacts.delete
  • Archive patientcliniko.patients.delete
  • Archive attendeecliniko.attendees.delete
  • Delete medical alertcliniko.medical_alerts.delete
  • Archive appointment typecliniko.appointment_types.delete
  • Archive group appointmentcliniko.group_appointments.delete
  • Archive unavailable blockcliniko.unavailable_blocks.delete
  • Archive treatment note templatecliniko.treatment_note_templates.delete
  • Delete appointment type productcliniko.appointment_type_products.delete
  • Delete practitioner reference numbercliniko.practitioner_reference_numbers.delete
  • Delete appointment type billable itemcliniko.appointment_type_billable_items.delete
  • Cancel attendeecliniko.attendees.cancel

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

docliniko.businesses.deleteconfirm_policy: human

Archive business?

intent: the user asked me to archive business

run suspended · waiting for a named person · key cliniko-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "cliniko-agent",  allowed_actions: ["cliniko.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "cliniko.businesses.delete", approver: "[email protected]" },    { match: "cliniko.products.delete", approver: "[email protected]" },    { match: "cliniko.billable_items.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Cliniko only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Cliniko costs on actionlake.

Every Cliniko action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Cliniko refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 223 Cliniko actions
  • 223actions pageeach page of a long list is one call
  • 116reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Cliniko action.

223 actions by area: the id your agent calls, what it does, and its effect.

Attendees10
  • cliniko.attendees.archiveArchive attendeewrite
  • cliniko.attendees.cancelCancel attendeedestructive
  • cliniko.attendees.createCreate attendeewrite
  • cliniko.attendees.deleteArchive attendeedestructive
  • cliniko.attendees.getGet attendeeread
  • cliniko.attendees.listList attendeesread
  • cliniko.attendees.list_for_group_appointmentList attendees for group appointmentread
  • cliniko.attendees.list_for_individual_appointmentList attendees for individual appointmentread
  • cliniko.attendees.list_for_patient_caseList attendees for patient caseread
  • cliniko.attendees.updateUpdate attendeewrite
Patient attachments9
  • cliniko.patient_attachments.archiveArchive patient attachmentwrite
  • cliniko.patient_attachments.createCreate uploaded patient attachmentwrite
  • cliniko.patient_attachments.deleteArchive patient attachmentdestructive
  • cliniko.patient_attachments.getGet patient attachmentread
  • cliniko.patient_attachments.listList patient attachmentsread
  • cliniko.patient_attachments.list_for_patientList patient attachments for patientread
  • cliniko.patient_attachments.list_for_patient_caseList patient attachments for patient caseread
  • cliniko.patient_attachments.presigned_postGet a presigned URL to upload your file to S3read
  • cliniko.patient_attachments.updateUpdate patient attachmentwrite
Individual appointments8
  • cliniko.individual_appointments.archiveArchive individual appointmentwrite
  • cliniko.individual_appointments.cancelCancel individual appointmentdestructive
  • cliniko.individual_appointments.conflictsGet conflicts for an individual appointmentread
  • cliniko.individual_appointments.createCreate individual appointmentwrite
  • cliniko.individual_appointments.deleteArchive individual appointmentdestructive
  • cliniko.individual_appointments.getGet individual appointmentread
  • cliniko.individual_appointments.listList individual appointmentsread
  • cliniko.individual_appointments.updateUpdate individual appointmentwrite
Treatment notes8
  • cliniko.treatment_notes.archiveArchive treatment notewrite
  • cliniko.treatment_notes.createCreate treatment notewrite
  • cliniko.treatment_notes.deleteArchive treatment notedestructive
  • cliniko.treatment_notes.getGet treatment noteread
  • cliniko.treatment_notes.listList treatment notesread
  • cliniko.treatment_notes.list_for_patientList treatment notes for patientread
  • cliniko.treatment_notes.unarchiveUnarchive treatment notewrite
  • cliniko.treatment_notes.updateUpdate treatment notewrite
Appointment types7
  • cliniko.appointment_types.archiveArchive appointment typewrite
  • cliniko.appointment_types.createCreate appointment typewrite
  • cliniko.appointment_types.deleteArchive appointment typedestructive
  • cliniko.appointment_types.getGet appointment typeread
  • cliniko.appointment_types.listList appointment typesread
  • cliniko.appointment_types.list_for_practitionerList appointment types for practitionerread
  • cliniko.appointment_types.updateUpdate appointment typewrite
Businesses7
  • cliniko.businesses.archiveArchive businesswrite
  • cliniko.businesses.createCreate businesswrite
  • cliniko.businesses.deleteArchive businessdestructive
  • cliniko.businesses.getGet businessread
  • cliniko.businesses.listList businessesread
  • cliniko.businesses.unarchiveUnarchive businesswrite
  • cliniko.businesses.updateUpdate businesswrite
Group appointments7
  • cliniko.group_appointments.archiveArchive group appointmentwrite
  • cliniko.group_appointments.conflictsGet conflicts for a group appointmentread
  • cliniko.group_appointments.createCreate group appointmentwrite
  • cliniko.group_appointments.deleteArchive group appointmentdestructive
  • cliniko.group_appointments.getGet group appointmentread
  • cliniko.group_appointments.listList group appointmentsread
  • cliniko.group_appointments.updateUpdate group appointmentwrite
Invoices7
  • cliniko.invoices.getGet invoiceread
  • cliniko.invoices.listList invoicesread
  • cliniko.invoices.list_for_appointmentList invoices for appointmentread
  • cliniko.invoices.list_for_attendeeList invoices for attendeeread
  • cliniko.invoices.list_for_patientList invoices for patientread
  • cliniko.invoices.list_for_patient_caseList invoices for patient caseread
  • cliniko.invoices.list_for_practitionerList invoices for practitionerread
Patients7
  • cliniko.patients.archiveArchive patientwrite
  • cliniko.patients.createCreate patientwrite
  • cliniko.patients.deleteArchive patientdestructive
  • cliniko.patients.getGet patientread
  • cliniko.patients.listList patientsread
  • cliniko.patients.unarchiveUnarchive patientwrite
  • cliniko.patients.updateUpdate patientwrite
Practitioners7
  • cliniko.practitioners.getGet practitionerread
  • cliniko.practitioners.listList practitionersread
  • cliniko.practitioners.list_for_appointment_typeList practitioners for appointment typeread
  • cliniko.practitioners.list_for_businessList practitioners for businessread
  • cliniko.practitioners.list_inactiveList inactive practitionersread
  • cliniko.practitioners.list_inactive_for_appointment_typeList inactive practitioners for appointment typeread
  • cliniko.practitioners.list_inactive_for_businessList inactive practitioners for businessread
Unavailable blocks7
  • cliniko.unavailable_blocks.archiveArchive unavailable blockwrite
  • cliniko.unavailable_blocks.conflictsGet conflicts for an unavailable blockread
  • cliniko.unavailable_blocks.createCreate unavailable blockwrite
  • cliniko.unavailable_blocks.deleteArchive unavailable blockdestructive
  • cliniko.unavailable_blocks.getGet unavailable blockread
  • cliniko.unavailable_blocks.listList unavailable blocksread
  • cliniko.unavailable_blocks.updateUpdate unavailable blockwrite
Billable items6
  • cliniko.billable_items.archiveArchive billable itemwrite
  • cliniko.billable_items.createCreate billable itemwrite
  • cliniko.billable_items.deleteArchive billable itemdestructive
  • cliniko.billable_items.getGet billable itemread
  • cliniko.billable_items.listList billable itemsread
  • cliniko.billable_items.updateUpdate billable itemwrite
Contacts6
  • cliniko.contacts.archiveArchive contactwrite
  • cliniko.contacts.createCreate contactwrite
  • cliniko.contacts.deleteArchive contactdestructive
  • cliniko.contacts.getGet contactread
  • cliniko.contacts.listList contactsread
  • cliniko.contacts.updateUpdate contactwrite
Medical alerts6
  • cliniko.medical_alerts.createCreate medical alertwrite
  • cliniko.medical_alerts.deleteDelete medical alertdestructive
  • cliniko.medical_alerts.getGet medical alertread
  • cliniko.medical_alerts.listList medical alertsread
  • cliniko.medical_alerts.list_for_patientList medical alerts for patientread
  • cliniko.medical_alerts.updateUpdate medical alertwrite
Patient cases6
  • cliniko.patient_cases.archiveArchive patient casewrite
  • cliniko.patient_cases.createCreate patient casewrite
  • cliniko.patient_cases.getGet patient caseread
  • cliniko.patient_cases.listList patient casesread
  • cliniko.patient_cases.list_activeList active patient casesread
  • cliniko.patient_cases.updateUpdate patient casewrite
Patient forms6
  • cliniko.patient_forms.archiveArchive patient formwrite
  • cliniko.patient_forms.createCreate patient formwrite
  • cliniko.patient_forms.getGet patient formread
  • cliniko.patient_forms.listList patient formsread
  • cliniko.patient_forms.list_for_attendeeList patient forms for attendeeread
  • cliniko.patient_forms.updateUpdate patient formwrite
Practitioner reference numbers6
  • cliniko.practitioner_reference_numbers.createCreate practitioner reference numberwrite
  • cliniko.practitioner_reference_numbers.deleteDelete practitioner reference numberdestructive
  • cliniko.practitioner_reference_numbers.getGet practitioner reference numberread
  • cliniko.practitioner_reference_numbers.listList practitioner reference numbersread
  • cliniko.practitioner_reference_numbers.list_for_practitionerList practitioner reference numbers for practitionerread
  • cliniko.practitioner_reference_numbers.updateUpdate practitioner reference numberwrite
Products6
  • cliniko.products.archiveArchive productwrite
  • cliniko.products.createCreate productwrite
  • cliniko.products.deleteArchive productdestructive
  • cliniko.products.getGet productread
  • cliniko.products.listList productsread
  • cliniko.products.updateUpdate productwrite
Treatment note templates6
  • cliniko.treatment_note_templates.archiveArchive treatment note templatewrite
  • cliniko.treatment_note_templates.createCreate treatment note templatewrite
  • cliniko.treatment_note_templates.deleteArchive treatment note templatedestructive
  • cliniko.treatment_note_templates.getGet treatment note templateread
  • cliniko.treatment_note_templates.listList treatment note templatesread
  • cliniko.treatment_note_templates.updateUpdate treatment note templatewrite
Appointment type billable items5
  • cliniko.appointment_type_billable_items.createCreate appointment type billable itemwrite
  • cliniko.appointment_type_billable_items.deleteDelete appointment type billable itemdestructive
  • cliniko.appointment_type_billable_items.getGet appointment type billable itemread
  • cliniko.appointment_type_billable_items.listList appointment type billable itemsread
  • cliniko.appointment_type_billable_items.updateUpdate appointment type billable itemwrite
Appointment type products5
  • cliniko.appointment_type_products.createCreate appointment type productwrite
  • cliniko.appointment_type_products.deleteDelete appointment type productdestructive
  • cliniko.appointment_type_products.getGet appointment type productread
  • cliniko.appointment_type_products.listList appointment type productsread
  • cliniko.appointment_type_products.updateUpdate appointment type productwrite
Communications5
  • cliniko.communications.archiveArchive memo communicationwrite
  • cliniko.communications.createCreate memo communicationwrite
  • cliniko.communications.getGet communicationread
  • cliniko.communications.listList communicationsread
  • cliniko.communications.updateUpdate memo communicationwrite
Patient form templates5
  • cliniko.patient_form_templates.archiveArchive patient form templatewrite
  • cliniko.patient_form_templates.createCreate patient form templatewrite
  • cliniko.patient_form_templates.getGet patient form templateread
  • cliniko.patient_form_templates.listList patient form templatesread
  • cliniko.patient_form_templates.updateUpdate patient form templatewrite
Product suppliers5
  • cliniko.product_suppliers.createCreate product supplierwrite
  • cliniko.product_suppliers.deleteDelete product supplierdestructive
  • cliniko.product_suppliers.getGet product supplierread
  • cliniko.product_suppliers.listList product suppliersread
  • cliniko.product_suppliers.updateUpdate product supplierwrite
Recall types5
  • cliniko.recall_types.archiveArchive recall typewrite
  • cliniko.recall_types.createCreate recall typewrite
  • cliniko.recall_types.getGet recall typeread
  • cliniko.recall_types.listList recall typesread
  • cliniko.recall_types.updateUpdate recall typewrite
Recalls5
  • cliniko.recalls.archiveArchive recallwrite
  • cliniko.recalls.createCreate recallwrite
  • cliniko.recalls.getGet recallread
  • cliniko.recalls.listList recallsread
  • cliniko.recalls.updateUpdate recallwrite
Relationships5
  • cliniko.relationships.archiveArchive relationshipwrite
  • cliniko.relationships.createCreate relationshipwrite
  • cliniko.relationships.getGet relationshipread
  • cliniko.relationships.listList relationshipsread
  • cliniko.relationships.updateUpdate relationshipwrite
Taxes5
  • cliniko.taxes.createCreate taxwrite
  • cliniko.taxes.deleteDelete taxdestructive
  • cliniko.taxes.getGet taxread
  • cliniko.taxes.listList taxesread
  • cliniko.taxes.updateUpdate taxwrite
Unavailable block types5
  • cliniko.unavailable_block_types.archiveArchive unavailable block typewrite
  • cliniko.unavailable_block_types.createCreate unavailable block typewrite
  • cliniko.unavailable_block_types.getGet unavailable block typeread
  • cliniko.unavailable_block_types.listList unavailable block typesread
  • cliniko.unavailable_block_types.updateUpdate unavailable block typewrite
Concession prices4
  • cliniko.concession_prices.createCreate concession pricewrite
  • cliniko.concession_prices.getGet concession priceread
  • cliniko.concession_prices.listList concession pricesread
  • cliniko.concession_prices.updateUpdate concession pricewrite
Concession types4
  • cliniko.concession_types.createCreate concession typewrite
  • cliniko.concession_types.getGet concession typeread
  • cliniko.concession_types.listList concession typesread
  • cliniko.concession_types.updateUpdate concession typewrite
Daily availabilities4
  • cliniko.daily_availabilities.getGet daily availabilityread
  • cliniko.daily_availabilities.listList daily availabilitiesread
  • cliniko.daily_availabilities.list_for_businessList daily availabilities for businessread
  • cliniko.daily_availabilities.list_for_practitionerList daily availabilities for practitionerread
Availability blocks3
  • cliniko.availability_blocks.createCreate availability blockwrite
  • cliniko.availability_blocks.getGet availability blockread
  • cliniko.availability_blocks.listList availability blocksread
Bookings3
  • cliniko.bookings.getGet bookingread
  • cliniko.bookings.listList bookingsread
  • cliniko.bookings.list_for_patient_caseList bookings for patient caseread
Invoice items3
  • cliniko.invoice_items.getGet invoice itemread
  • cliniko.invoice_items.listList invoice itemsread
  • cliniko.invoice_items.list_for_invoiceList invoice items for invoiceread
Referral sources3
  • cliniko.referral_sources.get_for_patientGet referral sourceread
  • cliniko.referral_sources.listList referral sourcesread
  • cliniko.referral_sources.update_for_patientUpdate referral sourcewrite
Stock adjustments3
  • cliniko.stock_adjustments.createCreate stock adjustmentwrite
  • cliniko.stock_adjustments.getGet stock adjustmentread
  • cliniko.stock_adjustments.listList stock adjustmentsread
Available times2
  • cliniko.available_times.listGet all available timesread
  • cliniko.available_times.nextGet next available timeread
Body charts2
  • cliniko.body_charts.getGet body chartread
  • cliniko.body_charts.listList body chartsread
Referral source types2
  • cliniko.referral_source_types.getGet referral source typeread
  • cliniko.referral_source_types.listList referral source typesread
Services2
  • cliniko.services.listList servicesread
  • cliniko.services.list_for_businessList services for businessread
Settings2
  • cliniko.settings.getGet settingsread
  • cliniko.settings.get_publicGet public settingsread
Users2
  • cliniko.users.getGet userread
  • cliniko.users.listList usersread
Signatures1
  • cliniko.signatures.getGet signatureread
User1
  • cliniko.user.getGet authenticated userread

Questions

The Cliniko MCP server, answered.

Is there a Cliniko MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 223 Cliniko actions across attendees, patient attachments, individual appointments and treatment notes, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Cliniko.

What do I need to connect Cliniko?

Cliniko API key: in Cliniko open My Info (your name, top right) > Manage API keys > Add an API key, and copy it. Plus your host. The free call account { op: "connections.requirements", service: "cliniko" } lists exactly what to paste.

Can an AI agent delete or change things in Cliniko?

Only if its key allows it, and only with an explicit confirmation. 21 Cliniko actions are destructive, including archive business, archive product and archive billable item. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Cliniko API limit?

actionlake paces every call to the limits in the Cliniko service file: 200 calls a minute per connection. Repeated reads are answered from cache (116 Cliniko actions can be), which never reaches Cliniko.

What does a Cliniko action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (223 Cliniko actions page). Cache hits, searches, dry runs and calls Cliniko refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Cliniko API does it cover?

The Cliniko API v1 (OpenAPI 3.0.3) at your Cliniko instance's API base URL, which you enter when connecting. It is built from Cliniko's documentation as read on 22 October 2026. 223 actions in 45 areas, each one in the signed service file (version 1.0.0).

Can I combine Cliniko with my other systems?

Yes. ask joins Cliniko to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. Cliniko maps crm.contact, which 192 other connectors also map.

Does actionlake keep my Cliniko data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Cliniko credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Cliniko today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.