cliniko
What this MCP does
Manages Cliniko patients, practitioners, practices, appointments, availability, treatment notes, products, and invoices.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['patient_id', 'practitioner_id', 'business_id', 'appointment_type_id', 'starts_at'], 'properties': {'notes': {'type': 'string', 'description': 'Appointment notes.'}, 'ends_at': {'type': 'string', 'description': 'End time, ISO 8601. Defaults from the appointment type if omitted.'}, 'starts_at': {'type': 'string', 'minLength': 1, 'description': 'Start time, ISO 8601 e.g. 2026-07-20T09:00:00Z (required).'}, 'patient_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Patient id (required).'}, 'business_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Business id (required).'}, 'practitioner_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Practitioner id (required).'}, 'appointment_type_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Appointment type id (required).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['first_name', 'last_name'], 'properties': {'city': {'type': 'string', 'description': 'City.'}, 'email': {'type': 'string', 'description': 'Email address.'}, 'notes': {'type': 'string', 'description': 'Free-text notes.'}, 'state': {'type': 'string', 'description': 'State / region.'}, 'address_1': {'type': 'string', 'description': 'Street address line 1.'}, 'last_name': {'type': 'string', 'minLength': 1, 'description': 'Patient last name (required).'}, 'post_code': {'type': 'string', 'description': 'Post / ZIP code.'}, 'first_name': {'type': 'string', 'minLength': 1, 'description': 'Patient first name (required).'}, 'country_code': {'type': 'string', 'description': 'ISO country code, e.g. AU.'}, 'phone_number': {'type': 'string', 'description': 'A phone number (stored as a Mobile phone number).'}, 'date_of_birth': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date of birth yyyy-mm-dd.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Individual appointment id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Invoice id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Patient id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Treatment note id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'sort': {'type': 'string', 'description': 'Field to sort by, e.g. created_at.'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction. asc | desc.'}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}, 'starts_to': {'type': 'string', 'description': 'Only appointments starting before this ISO 8601 time (q[]=starts_at:<).'}, 'patient_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by patient id (q[]=patient_id:=).'}, 'business_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by business id.'}, 'starts_from': {'type': 'string', 'description': 'Only appointments starting at/after this ISO 8601 time (q[]=starts_at:>).'}, 'practitioner_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by practitioner id.'}, 'appointment_type_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by appointment type id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['business_id', 'practitioner_id', 'appointment_type_id', 'from', 'to'], 'properties': {'to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Range end yyyy-mm-dd (cannot be more than 7 days after `from`).'}, 'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Range start yyyy-mm-dd (cannot be more than 7 days before `to`).'}, 'business_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Business id (path).'}, 'practitioner_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Practitioner id (path).'}, 'appointment_type_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Appointment type id (path).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'sort': {'type': 'string', 'description': 'Field to sort by, e.g. created_at.'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction. asc | desc.'}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}, 'patient_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by patient id (q[]=patient_id:=).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'sort': {'type': 'string', 'description': 'Field to sort by, e.g. created_at.'}, 'email': {'type': 'string', 'description': 'Filter by email (contains match).'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction. asc | desc.'}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}, 'last_name': {'type': 'string', 'description': 'Filter by last name (contains match).'}, 'first_name': {'type': 'string', 'description': 'Filter by first name (contains match).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (1-based). Default 1.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 100, 'description': 'Results per page (max 100). Default 50.', 'exclusiveMinimum': 0}, 'patient_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Filter by patient id (q[]=patient_id:=).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['business_id', 'practitioner_id', 'appointment_type_id'], 'properties': {'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional earliest date yyyy-mm-dd to search from.'}, 'business_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Business id (path).'}, 'practitioner_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Practitioner id (path).'}, 'appointment_type_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'string', 'minLength': 1}], 'description': 'Appointment type id (path).'}}}
Recent tool changes
Similar MCP servers
Feegow Clinic
Manages clinic patients, providers, appointments, schedules, benefit plans, insurance billing, financial records, units, employee…
WebDiet
Manages dietitian workflows including patients, anamnesis, anthropometry, nutrition calculations, meal data, prescriptions, appoi…
MFIT Personal
Supports personal trainers with student management, workout and evaluation records, retention analytics, check-ins, files, invoic…
DietBox
Enables dietitians to manage patients, health histories, measurements, meal plans, food diaries, appointments, messaging, goals, …
intakeq
Manages healthcare practice clients, appointments, intake questionnaires, treatment notes, diagnoses, invoices and practitioner s…
Tabflows
Provides direct primary care practice listings, business calculators, pricing, integrations, workflows, documentation, and demo b…
DoctoFam Medical Clinic
Provides read-only clinic availability, providers, rooms, procedure catalogs, calendar blocks, and aggregate administrative sched…
Veterical Vet Clinic
Provides read-only veterinary clinic capacity, schedules, providers, procedure catalog data, payment aggregates, and subscription…