Skip to main content
Glama
andymillar84-cyber

mcp-cliniko

MCP Cliniko Server

A Model Context Protocol (MCP) server that provides integration with the Cliniko API for healthcare practice management.

Features

Tools (Actions)

  • Patient Management

    • list_patients - Search and list patients

    • get_patient - Get patient by ID

    • create_patient - Create new patient

    • update_patient - Update patient details

    • delete_patient - Archive patient

  • Appointment Management

    • list_appointments - Search and list appointments

    • get_appointment - Get appointment by ID

    • create_appointment - Book new appointment

    • update_appointment - Modify appointment

    • cancel_appointment - Cancel appointment

    • delete_appointment - Delete appointment

    • get_available_times - Get practitioner availability

  • Invoice Management

    • list_invoices - List and filter invoices

    • get_invoice - Get invoice details

    • create_invoice - Create new invoice

    • update_invoice - Update invoice status or details

    • delete_invoice - Delete draft invoice

  • Invoice Items

    • list_invoice_items - List items on an invoice

    • add_invoice_item - Add item to invoice

    • update_invoice_item - Modify invoice item

    • delete_invoice_item - Remove item from invoice

  • Payment Processing

    • list_payments - List payments with filtering

    • create_payment - Record a payment

    • delete_payment - Delete payment record

  • Products & Services

    • list_products - List billable products/services

    • get_product - Get product details

    • create_product - Create new product/service

  • Tax Configuration

    • list_taxes - List available tax rates

    • get_tax - Get tax details

  • Complex Workflows

    • create_invoice_from_appointments - Generate invoices from appointments

    • bulk_invoice_generation - Bulk create invoices for date range

    • list_patient_cases - List patient cases

    • list_invoices_for_case - Get invoices for a case

  • Supporting Tools

    • list_practitioners - List all practitioners

    • list_appointment_types - List appointment types

    • list_businesses - List businesses

  • Test Data

    • generate_test_data - Generate synthetic Australian healthcare data

    • cleanup_test_data - Remove test patients

Resources (Data Access)

  • patient://{id} - Individual patient data

  • patients://list - All patients

  • appointment://{id} - Individual appointment

  • appointments://list - All appointments

  • appointments://today - Today's appointments

  • practitioners://list - All practitioners

  • businesses://list - All businesses

  • appointment-types://list - All appointment types

  • openapi://spec - Cliniko API OpenAPI specification (YAML format)

Related MCP server: Cliniko MCP Server

Installation

  1. Clone the repository:

git clone https://github.com/yourusername/mcp-cliniko.git
cd mcp-cliniko
  1. Install dependencies:

npm install
  1. Set up your Cliniko API key:

cp .env.example .env
# Edit .env and add your Cliniko API key
  1. Build the project:

npm run build

Configuration

Environment Variables

  • CLINIKO_API_KEY - Your Cliniko API key (required)

Getting a Cliniko API Key

  1. Log into your Cliniko account

  2. Go to Settings → Integrations → API Keys

  3. Create a new API key

  4. Copy the key to your .env file

Usage

Development Mode

npm run dev

Production Mode

npm start

Testing with MCP Inspector

npm run inspect

Integration with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "cliniko": {
      "command": "node",
      "args": ["/path/to/mcp-cliniko/dist/index.js"],
      "env": {
        "CLINIKO_API_KEY": "your-api-key-here"
      }
    }
  }
}

Examples

Using Tools

List Patients:

{
  "tool": "list_patients",
  "arguments": {
    "q": "Smith",
    "per_page": 10
  }
}

Create Patient:

{
  "tool": "create_patient",
  "arguments": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone_number": "0412345678",
    "date_of_birth": "1980-01-15",
    "medicare_number": "1234567890"
  }
}

Book Appointment:

{
  "tool": "create_appointment",
  "arguments": {
    "starts_at": "2024-01-20T10:00:00Z",
    "patient_id": 123,
    "practitioner_id": 456,
    "appointment_type_id": 789,
    "business_id": 101
  }
}

Generate Test Data:

{
  "tool": "generate_test_data",
  "arguments": {
    "num_patients": 5,
    "num_appointments": 10,
    "days_ahead": 7
  }
}

Using Resources

Resources provide read-only access to Cliniko data:

  • patient://123 - Get patient with ID 123

  • patients://list - List all patients

  • appointments://today - Get today's appointments

API Rate Limits

Cliniko API has a rate limit of 200 requests per minute. The server does not implement rate limiting internally, so be mindful of this limit when making bulk operations.

Error Handling

The server uses standard HTTP error conventions:

  • 400 - Bad Request

  • 401 - Unauthorized (check API key)

  • 404 - Resource not found

  • 429 - Rate limit exceeded

  • 500 - Internal server error

Development

Project Structure

mcp-cliniko/
├── src/
│   ├── index.ts              # Main server
│   ├── cliniko-client.ts     # API client
│   ├── types.ts              # TypeScript types
│   ├── tools/                # MCP tools
│   │   ├── patients.ts
│   │   ├── appointments.ts
│   │   └── synthetic-data.ts
│   └── resources/            # MCP resources
│       └── index.ts
├── dist/                     # Compiled JavaScript
├── package.json
├── tsconfig.json
└── .env

Building

npm run build

Type Checking

npx tsc --noEmit

License

MIT

Support

For Cliniko API documentation, visit: https://docs.api.cliniko.com/

For MCP documentation, visit: https://modelcontextprotocol.io/# mcp-cliniko

Available Tools

27 tools
cancel_appointmentC

Cancel an appointment

ParametersJSON Schema
NameRequiredDescriptionDefault
appointment_idYesAppointment ID
cancellation_reasonNoReason for cancellation

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose behavioral traits such as whether cancellation is reversible, what side effects occur, or required permissions. For a mutation tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but omits important details that could be included without substantial length. It is minimally adequate but not optimized for value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description fails to provide sufficient context about the tool's effect, prerequisites, or post-conditions. For a cancellation tool, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides clear descriptions for both parameters (appointment_id and cancellation_reason), achieving 100% coverage. The tool description adds no additional meaning beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'cancel' and resource 'appointment', but does not differentiate from sibling tool 'delete_appointment', which likely has different semantics. This ambiguity lowers clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use cancel vs. other appointment management tools (e.g., delete_appointment). The description lacks context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cleanup_comprehensive_test_dataC

Clean up all test data with granular control and dry-run option

ParametersJSON Schema
NameRequiredDescriptionDefault
delete_patientsNo
delete_appointmentsNo
delete_invoicesNo
delete_productsNo
delete_all_test_dataNo
test_domainNotest.cliniko.com
dry_runNoPreview what would be deleted without actually deleting

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the dry-run capability and implies destructiveness through 'clean up,' but it fails to mention that deletion is irreversible (unless dry-run), required permissions, or the test_domain scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (11 words) and front-loads the action, but it omits important details that could be added without significant verbosity, such as the list of deletable entities.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no output schema, and no annotations, the description does not explain return behavior, the effect of 'delete_all_test_data,' or the test_domain parameter, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14% (only dry_run has a description). The description adds 'granular control' and 'dry-run' but does not explain the individual boolean toggles or the test_domain parameter, leaving most parameters underdocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('clean up all test data') with modifiers ('granular control and dry-run option'), but it does not explicitly differentiate from the sibling tool 'cleanup_test_data' or specify what 'all test data' entails beyond the schema parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs alternatives like 'cleanup_test_data' or other test data tools, nor does it mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cleanup_test_dataA

Delete all test patients (patients with emails ending in @gmail.com, @outlook.com, etc)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits like irreversibility, permissions, or logging. It only states the deletion criteria, missing important safety context for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (12 words) that is front-loaded and efficient. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no parameters or output schema, the description lacks completeness for a destructive tool. It does not explain what 'test patients' fully entails, whether the operation is reversible, or what the outcome is. More context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is 100%. Per scoring rules, zero parameters baseline is 4. The description adds no param info, which is acceptable because none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete), resource (test patients), and selection criteria (emails ending in @gmail.com, @outlook.com, etc). It distinguishes from the sibling 'cleanup_comprehensive_test_data' by being more specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for cleaning up test patients but does not explicitly state when to use this tool versus the sibling 'cleanup_comprehensive_test_data' or provide exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_appointmentC

Create a new appointment

ParametersJSON Schema
NameRequiredDescriptionDefault
starts_atYesAppointment start time (ISO 8601)
patient_idNoPatient ID (optional for walk-ins)
practitioner_idYesPractitioner ID
appointment_type_idYesAppointment type ID
business_idYesBusiness ID
notesNoAppointment notes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description fully bears the burden of behavioral disclosure. It only states 'Create', implying a write operation, but does not mention any side effects, required permissions, or error conditions. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core purpose. It is front-loaded and wastes no words, though it could be slightly more informative without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters (4 required) and no output schema, the description is overly minimal. It does not explain what the tool returns, any constraints on inputs, or how it behaves under failure. A more complete description would include return value or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the structured schema already documents all parameters. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new appointment' clearly states the action and resource, but does not distinguish this tool from siblings like 'update_appointment' or 'delete_appointment'. It is concise and direct, earning a 4 for clear purpose without differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'cancel_appointment' or 'get_appointment'. The description lacks any context about prerequisites or use cases, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_patientC

Create a new patient

ParametersJSON Schema
NameRequiredDescriptionDefault
first_nameYesPatient first name
last_nameYesPatient last name
titleNoTitle (Mr, Ms, Dr, etc)
preferred_nameNoPreferred name
date_of_birthNoDate of birth (YYYY-MM-DD)
sexNoBiological sex
emailNoEmail address
phone_numberNoPrimary phone number
address_line_1NoAddress line 1
address_line_2NoAddress line 2
suburbNoSuburb/City
postcodeNoPostcode
stateNoState/Province
countryNoCountry
medicare_numberNoMedicare number
medicare_reference_numberNoMedicare reference number

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description fails to disclose behavioral traits like success response, error conditions, or side effects beyond the bare action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise (one sentence) but too terse; lacks essential information for a tool with 16 parameters and no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 16 parameters, no output schema, and no annotations, the description is severely incomplete, omitting return values, prerequisites, and behavioral details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters; description adds no extra meaning, defaulting to baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Create a new patient', with a specific verb and resource, differentiating from siblings like update_patient or delete_patient.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as update_patient or create_appointment; lacks context for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_appointmentC

Delete an appointment completely

ParametersJSON Schema
NameRequiredDescriptionDefault
appointment_idYesAppointment ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits such as irreversibility, required permissions, or side effects. 'Delete an appointment completely' only implies deletion but provides no further context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence. It is front-loaded and wastes no words, but could be slightly more structured with additional context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 parameter, no output schema), the description is minimally adequate but lacks behavioral context (e.g., whether deletion is permanent). It does not fully compensate for missing annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (appointment_id is described). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete' and resource 'appointment', making the purpose unambiguous. However, it does not distinguish from the sibling tool 'cancel_appointment', which might have a similar effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'cancel_appointment'. No conditions or exclusions are mentioned, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_patientA

Delete (archive) a patient

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idYesPatient ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates that the deletion is actually an archival action ('archive'), which is a behavioral trait. However, it does not disclose side effects, permissions needed, or impact on related data. Without annotations, more transparency would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, front-loaded, and contains no unnecessary words. Every part earns its place for a simple delete operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description provides essential information about the action. It could mention permanence or reversibility, but overall it is adequately complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the only parameter (patient_id) with a description 'Patient ID'. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Delete' and resource 'patient', with the parenthetical '(archive)' adding nuance. It distinctively identifies the tool among siblings as the only patient deletion tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like update_patient or delete_appointment. There is no mention of prerequisites, when not to use, or context such as irreversible actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_invoice_generationA

Demo: Generate test patients and appointments, then show how to create invoices. NOTE: Cliniko API is READ-ONLY for invoices - they must be created via the web interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_dateNoTarget date for appointments (YYYY-MM-DD format). Defaults to today
num_patientsNoNumber of test patients to generate (max 10 for rate limits)
num_appointmentsNoNumber of appointments to generate (max 20 for rate limits)
clear_existingNoClear existing test data before generating new data
display_formatNoHow to display the resultsdetailed

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose all behaviors. It mentions generating test data and the invoice limitation, but fails to state that clear_existing defaults to true, which could delete existing data. The demo nature is implicit, but side effects are not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences, no filler, and front-loads the purpose. Every part is necessary and immediately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a demo tool with no output schema and no annotations, the description covers the core purpose and key limitation. It lacks detail on return value format or expected output, but the demo context makes this acceptable. It is sufficiently complete for its intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no parameter-specific meaning beyond the schema. It repeats the general demo context but does not elaborate on how parameters affect the outcome.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates test patients/appointments and demonstrates invoice creation, noting the API's read-only limitation. This distinguishes it as a demo tool, but its purpose overlaps with sibling generate_test_data tools, lacking explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates it's a demo for invoice generation, but provides no guidance on when to use this tool vs. alternatives like generate_test_data or how_to_create_invoices. Context from sibling tools suggests overlap, but no exclusions or recommendations are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

display_invoices_for_dateB

Display all existing invoices for a specific date (READ-ONLY). Invoices must be created manually in Cliniko.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_dateYesDate to display invoices for (YYYY-MM-DD format)
display_formatNoHow to display the invoicesdetailed

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Declares the tool as READ-ONLY, providing clarity on its safety profile. Also mentions that invoices must be created manually, implying it does not create them. However, no annotations exist, so the description carries the full burden; it lacks details on auth requirements, rate limits, or behavior for missing dates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences with no redundancy. The main action and key constraint are front-loaded. Every sentence adds unique value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters and no output schema, the description covers the core purpose and a prerequisite. However, it does not explain the output format or error handling (e.g., no invoices on that date). Slightly above average due to the READ-ONLY note.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (target_date format and display_format enum). The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it displays invoices for a specific date and is read-only. The description uses specific verb 'display' and resource 'invoices' with a date filter. However, it does not explicitly differentiate from sibling tools like list_invoices or get_invoice, which have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one usage note ('Invoices must be created manually in Cliniko') but offers no guidance on when to use this tool versus alternatives like list_invoices or get_invoice. No when-not-to-use or explicit selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_comprehensive_test_dataB

Generate comprehensive synthetic test data across all Cliniko categories

ParametersJSON Schema
NameRequiredDescriptionDefault
num_patientsNo
num_contactsNo
num_relationshipsNo
num_appointmentsNo
num_past_appointmentsNo
num_group_appointmentsNo
num_treatment_notesNo
num_medical_alertsNo
num_patient_casesNo
num_invoicesNo
num_productsNo
num_paymentsNo
days_aheadNo
days_pastNo
test_domainNotest.cliniko.com

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose side effects (e.g., that it creates real records requiring cleanup), auth needs, or rate limits. Only states it generates test data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence, no wasted words; but lacks crucial details, making it feel under-specified rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 15 parameters, no output schema, and no annotations, description is extremely incomplete. Fails to explain return values, categories covered, side effects, or relationship to cleanup tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description adds no parameter information. Parameter names are self-explanatory, but description should compensate for lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool generates comprehensive synthetic test data across all Cliniko categories, distinguishing it from siblings like generate_test_data which may be less comprehensive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this vs. generate_test_data or other tools. Implies usage for comprehensive test generation but lacks when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_test_dataB

Generate synthetic test data for Cliniko (Australian healthcare data)

ParametersJSON Schema
NameRequiredDescriptionDefault
num_patientsNoNumber of patients to create (max 50)
num_appointmentsNoNumber of appointments to create (max 100)
days_aheadNoDays ahead to schedule appointments

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only mentions 'synthetic test data' and the context, but does not indicate whether the tool is destructive, requires cleanup, or has side effects like creating real records. Given sibling tools like 'cleanup_test_data', this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core purpose. While concise, it could include more details without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description should provide more context about what is actually generated (patients, appointments, etc.), whether it is safe for production use, and potential side effects. The current description is incomplete for a bulk data generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage with clear min/max/default for each parameter. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'generate' and the resource 'synthetic test data' with a specific context (Cliniko, Australian healthcare). It distinguishes itself from sibling tools that create individual entities like patients or appointments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for generating test data but provides no explicit guidance on when to use this tool versus the more comprehensive sibling 'generate_comprehensive_test_data' or individual create tools. The context is implied, not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appointmentC

Get a specific appointment by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
appointment_idYesAppointment ID

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention whether the operation is read-only, if authentication is required, what happens if the ID does not exist (e.g., returns null or error), or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (one sentence), but it sacrifices valuable information. It is not overly verbose, but it could include more context without becoming lengthy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and the lack of output schema, the description should clarify what data is returned (e.g., full appointment details) and any error handling. It fails to provide this, making it incomplete for an agent to understand the full behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single parameter (appointment_id) with 100% coverage, so the baseline is 3. The description only repeats 'by ID', adding no additional meaning or context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'appointment', and the lookup method 'by ID'. It distinguishes from sibling tools like list_appointments (which returns multiple) and create_appointment (which creates). However, it does not specify the scope of data returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as list_appointments (to find an ID) or get_appointment_invoices (for invoices). There is no mention of prerequisites or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appointment_invoicesA

Get invoices for a specific appointment (READ-ONLY)

ParametersJSON Schema
NameRequiredDescriptionDefault
appointment_idYesAppointment ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It correctly states 'READ-ONLY', signaling no mutation. However, it does not disclose whether the tool returns a list or single invoice, pagination behavior, or error handling. The minimal disclosure meets basic needs but lacks completeness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise at 6 words, front-loaded with the key purpose. Every word earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter tool and no output schema, the description is minimally sufficient but does not explain the return value (list of invoices, summary vs full details). The presence of siblings like 'list_invoices' and 'get_invoice' creates a need for slightly more precision, yet the description barely differentiates beyond the appointment scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single parameter 'appointment_id' as 'Appointment ID'. The description adds no extra meaning about format, range, or how to obtain the ID. Per guidelines, with 100% schema coverage, baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get invoices' and the specific resource 'for a specific appointment'. The '(READ-ONLY)' suffix adds behavioral clarity. It distinguishes from siblings like 'list_invoices' (unfiltered) and 'get_patient_invoices' (by patient).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'list_invoices' or 'get_patient_invoices'. The context is implied by the name and description, but explicit when-to-use or when-not-to-use instructions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_available_timesC

Get available appointment times for a practitioner

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idYesBusiness ID
practitioner_idYesPractitioner ID
fromYesStart date for availability check (YYYY-MM-DD)
toYesEnd date for availability check (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description bears full responsibility. It discloses no behavioral traits such as side effects (none expected from a 'get' operation), return format, or any constraints. The single sentence provides minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with no wasted words. It efficiently conveys the core action and resource, appropriate for this simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 4 required parameters, no output schema, and numerous sibling tools, the description is incomplete. It does not explain what the output represents (e.g., list of time slots) or how to interpret results, limiting its standalone usefulness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the foundation is adequate. The description does not add any additional meaning beyond what the schema already provides; thus, it meets the baseline without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('available appointment times'), which is clear. However, it does not differentiate from sibling tools like 'list_appointments' that also deal with appointments, leaving some ambiguity about the distinct purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'list_appointments' for existing appointments, 'create_appointment' after finding times). There are no prerequisites or context cues for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_invoiceA

Get details of a specific invoice (READ-ONLY)

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description solely bears the burden. It notes the tool is READ-ONLY, a key behavioral trait. However, it lacks details on authorization, error conditions, or the scope of 'details' returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 8 words with no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter retrieval tool, the description is adequate but could be improved by indicating what fields are returned (no output schema). It lacks completeness regarding the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the only parameter 'invoice_id' is clearly described in the schema. The description does not add semantics beyond the schema, earning the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get details of a specific invoice (READ-ONLY)', specifying the verb, resource, and read-only nature. It distinguishes from sibling tools like list_invoices (which lists multiple) and get_appointment_invoices (which retrieves invoices by appointment).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites, or context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_patientC

Get a specific patient by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idYesPatient ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states 'Get' implying idempotent read, but does not mention error behavior (e.g., if ID not found), authentication requirements, or whether the response is a full patient object. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words, front-loaded with the verb and resource. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple (single required parameter, no output schema), the description should still specify what is returned (e.g., patient details). It fails to mention the response format, leaving the agent uncertain about the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with description 'Patient ID'. The description echoes 'by ID' but adds no additional meaning beyond the schema. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'specific patient by ID'. It is unambiguous, but does not differentiate from sibling tools like 'get_appointment' or 'get_invoice', which have similar structure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as 'list_patients' or 'create_patient'. No when-not-to-use or preconditions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_patient_invoicesA

Get invoices for a specific patient (READ-ONLY)

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idYesPatient ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explicitly marks the operation as READ-ONLY, which is good for transparency. However, beyond that, it does not disclose any other behavioral traits (e.g., no pagination, ordering, or data format details). For a read-only list tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with five words plus a parenthetical. It is extremely concise with no redundant information, earning its place without wasting tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, read-only), the description is adequate but lacks context on what the returned invoices contain or any filtering capabilities. There is no mention of return format or how it differs from similar siblings like 'get_appointment_invoices' or 'list_invoices', leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% as the input schema documents the only parameter 'patient_id' with a brief description. The tool description does not add any extra meaning or context beyond what the schema already provides (e.g., format or source of patient_id). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get invoices for a specific patient' with a verb ('Get'), resource ('invoices'), and scope ('for a specific patient'). The '(READ-ONLY)' qualifier further clarifies the operation's nature, and it implicitly distinguishes from sibling tools like 'get_appointment_invoices' or 'list_invoices'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly specify when to use this tool over alternatives such as 'get_invoice' (single invoice) or 'list_invoices' (all invoices). While it is implied that this tool filters by patient, no explicit when-to-use or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

how_to_create_invoicesB

Get instructions on how to create invoices in Cliniko (manual process)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It correctly implies a read-only informational operation (manual process), but does not explicitly state side effects or auth requirements. For a help tool, this is acceptable but could be improved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence of 12 words. It is appropriately concise for the tool's simplicity, though it could be slightly more structured (e.g., 'Provides step-by-step instructions on manually creating invoices.').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and is a simple help text function, the description is complete enough. It conveys the purpose and nature (manual process) sufficiently for an AI agent to select it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description does not need to add semantic meaning. Baseline score of 4 is appropriate as the description is not required to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides instructions on creating invoices, distinguishing it from action-oriented siblings. However, the word 'get instructions' is a bit vague; specifying it as a guide would improve clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like demo_invoice_generation or create_appointment. The context implies it's for manual process information, but this is not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_appointmentsC

List or search for appointments

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idNoFilter by patient ID
practitioner_idNoFilter by practitioner ID
business_idNoFilter by business ID
starts_atNoFilter appointments starting from (ISO 8601)
ends_atNoFilter appointments ending before (ISO 8601)
statusNoFilter by status (Active, Cancelled, Did not arrive)
pageNoPage number
per_pageNoResults per page (max 100)

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only says 'list or search,' omitting key traits like read-only nature, pagination behavior, sorting, or rate limits. The description adds minimal behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is minimal and front-loaded, but it is arguably too short. It gets the point across but lacks structure or additional helpful details, failing to earn its place fully.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and many sibling tools, the description is incomplete. It does not explain return values, pagination behavior, or how to perform a broad list vs. filtered search. The schema covers parameters, but overall context is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to add much. It reiterates 'list or search,' which implies parameter combinations (filtered search vs. unfiltered list), but this is a minor semantic addition beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (list/search) and resource (appointments), distinguishing it from siblings like get_appointment (single) or cancel_appointment. However, it lacks specificity about the scope of listings (e.g., all appointments or filtered) and could be more precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives like get_appointment or other list tools. Missing explicit context for when to use list vs search, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_appointment_typesB

List all appointment types

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoResults per page

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states 'List all appointment types' without revealing pagination behavior, default sorting, or other traits like response limits, which are critical for agent usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the key action and object, containing no unnecessary words. It perfectly balances brevity and clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and presence of two pagination parameters, the description is adequate but incomplete. It does not explain the return format or default behavior (e.g., all results vs paginated), which would be helpful without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's definitions for 'page' and 'per_page', remaining neutral.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all appointment types' uses a specific verb and resource, clearly indicating the tool's function. It is distinct from sibling tools like 'list_appointments' which list appointments, not types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent without direction for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_businessesB

List all businesses

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states 'list all businesses' with no disclosure of behavioral traits such as read-only nature, authentication requirements, pagination, or side effects. This is insufficient for safe tool selection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two words. Every word is necessary and the purpose is front-loaded. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list-all tool with no parameters and no output schema, the description is minimally adequate. It lacks any explanation of what a 'business' is or what the return format looks like, but the simplicity reduces the need. Still, it could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description adds no parameter-level information. Per the rubric, 0 parameters yields a baseline of 4. The description does not contradict the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and the resource (businesses). It distinguishes from siblings because each sibling tool targets a different entity type (appointments, patients, etc.). However, it lacks any qualifiers or scope details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or exclusions. The agent must infer usage solely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoice_itemsB

List items in an invoice (READ-ONLY)

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. '(READ-ONLY)' indicates no side effects, but lacks details on pagination, sorting, error handling, or whether it returns all items or a subset.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise—one short phrase. No wasted words, but could be structured as a full sentence to improve readability. Efficient for simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given single parameter, no output schema, and no annotations, the description is minimal but adequate. Lacks details on return value structure, error cases, or usage hints. Could be improved with one or two more sentences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (parameter 'invoice_id' documented). Description adds '(READ-ONLY)' but no additional param meaning. Baseline 3 for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List items in an invoice' with a specific verb and resource, and the '(READ-ONLY)' suffix distinguishes it from mutation tools like create/update/delete. It differentiates from sibling 'list_invoices' by specifying granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Does not mention prerequisites (e.g., must have invoice_id from get_invoice) or context where it is appropriate or not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesB

List invoices with filtering options (READ-ONLY - invoices must be created in Cliniko web interface)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoResults per page
patient_idNoFilter by patient ID
practitioner_idNoFilter by practitioner ID
issued_at_fromNoFilter from date (YYYY-MM-DD)
issued_at_toNoFilter to date (YYYY-MM-DD)
statusNoFilter by status

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Notes READ-ONLY but no annotations provided; description omits pagination behavior, default limits, ordering, or response structure, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with front-loaded purpose. Efficient but could benefit from bullet points or clearer separation of read-only constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description fails to mention return structure, pagination details, or error handling. Incomplete for a list operation with many optional filters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description adds only generic 'filtering options' without enhancing parameter understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists invoices with filtering options and notes read-only nature. However, it does not differentiate from sibling list_invoice_items or display_invoices_for_date.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions invoices must be created elsewhere, implying no create via this tool, but lacks explicit when-to-use vs. other invoice-related tools like get_invoice or get_patient_invoices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_patientsC

List or search for patients

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query (searches name, email, phone)
pageNoPage number
per_pageNoResults per page (max 100)

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It offers no behavioral details such as pagination behavior, default ordering, authentication requirements, or what happens when no query is provided. Only states 'List or search' without elaboration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise at 4 words, but lacks necessary information. While it is brief, it sacrifices completeness. A good concise description would include key details like pagination or search scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list/search tool with 3 parameters and no output schema, the description is incomplete. It does not mention pagination behavior, search field specifics, or any constraints. Sibling tools exist that provide more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so the schema already explains the parameters. The description adds no extra meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List or search for patients' which identifies the action and resource. It implies listing all patients or searching by query, but does not explicitly differentiate from sibling tools like get_patient (single patient) or list_appointments. However, the verb-resource combination is specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_patient, list_invoices). The description does not provide context on optimal use cases or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_practitionersC

List all practitioners

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoResults per page

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as pagination, authentication requirements, or that 'all' may be limited by pagination. Description carries full burden and is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, no superfluous text, but could be improved with a front-loaded structure that includes key details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite simple schema and lack of output schema, the description omits pagination context and return format, leaving the agent uncertain about the full scope of 'all' and the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema describes both parameters (page, per_page) with 100% coverage, so description adds no additional meaning beyond what is already present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all practitioners' clearly states the action and resource, but fails to differentiate from sibling list tools like 'list_patients' or 'list_appointments', which have similar phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; no context about prerequisites or filtering capabilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_appointmentC

Update an existing appointment

ParametersJSON Schema
NameRequiredDescriptionDefault
appointment_idYesAppointment ID
starts_atNoNew start time (ISO 8601)
notesNoUpdated notes
patient_idNoNew patient ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose update behavior (e.g., partial vs full update, validation, return value). It only says 'update', leaving important behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It is appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters (1 required) and no output schema, the description fails to provide essential context about what fields get updated, error handling, or return values. It is insufficient for an AI agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to add param details. It adds no additional meaning beyond what the schema already provides, earning the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing appointment, which distinguishes it from create and delete siblings. However, it doesn't specify which fields can be updated or differentiate from cancel_appointment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like cancel_appointment or create_appointment. No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_patientC

Update an existing patient

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idYesPatient ID
first_nameNoPatient first name
last_nameNoPatient last name
titleNoTitle (Mr, Ms, Dr, etc)
preferred_nameNoPreferred name
date_of_birthNoDate of birth (YYYY-MM-DD)
sexNoBiological sex
emailNoEmail address
phone_numberNoPrimary phone number
address_line_1NoAddress line 1
address_line_2NoAddress line 2
suburbNoSuburb/City
postcodeNoPostcode
stateNoState/Province
countryNoCountry
medicare_numberNoMedicare number
medicare_reference_numberNoMedicare reference number

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description 'update' implies mutation but does not disclose side effects, permissions needed, or whether partial updates are allowed. For a write operation with 17 parameters, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste. It front-loads the core purpose. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 17 parameters, no output schema, and no annotations, the description is too brief. It lacks constraints (e.g., required fields beyond patient_id, validation rules, idempotency). The high parameter count demands more behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 17 parameters have descriptions). The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is clear: 'Update an existing patient' specifies the verb (update) and resource (patient). It distinguishes from sibling tools like create_patient or delete_patient, though it could be more specific about what fields are updatable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like create_patient or list_patients. No exclusions, prerequisites, or context provided. The agent must infer usage from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 27 tool updatesv1.0.0
    • First observedcancel_appointment
    • First observedcleanup_comprehensive_test_data
    • First observedcleanup_test_data
    • First observedcreate_appointment
    • First observedcreate_patient
    • First observeddelete_appointment
    • First observeddelete_patient
    • First observeddemo_invoice_generation
    • First observeddisplay_invoices_for_date
    • First observedgenerate_comprehensive_test_data
    • First observedgenerate_test_data
    • First observedget_appointment
    • First observedget_appointment_invoices
    • First observedget_available_times
    • First observedget_invoice
    • First observedget_patient
    • First observedget_patient_invoices
    • First observedhow_to_create_invoices
    • First observedlist_appointment_types
    • First observedlist_appointments
    • First observedlist_businesses
    • First observedlist_invoice_items
    • First observedlist_invoices
    • First observedlist_patients
    • First observedlist_practitioners
    • First observedupdate_appointment
    • First observedupdate_patient

TDQS

B3.2/5.0
Disambiguation4/5

Most tools target distinct resources (patients, appointments, invoices) with clear purposes. However, cleanup_test_data and cleanup_comprehensive_test_data are very similar, and demo_invoice_generation overlaps with how_to_create_invoices in providing guidance.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_patient, list_appointments, delete_patient). No mixing of styles or ambiguous verbs.

Tool Count3/5

27 tools is slightly high for a healthcare practice server. Multiple test data generation and cleanup tools add redundancy, and several invoice tools are read-only due to API limitations, reducing effective utility. A more streamlined set (around 15-20) would be better.

Completeness4/5

CRUD operations are covered for patients and appointments, along with listings and searches. Invoice operations are read-only but acknowledged. Missing features like appointment notes or patient tags are minor given the domain focus.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Athena Health's API for comprehensive healthcare practice management. Supports appointment scheduling, provider and department management, patient search, and available slot discovery through natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with the Cliniko practice management system through MCP tools and resources. Supports patient management, appointment scheduling, and practice data access through natural language interactions.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Exposes tools from the Ecuro Light API for managing clinical appointments, patient records, and clinic availability. It enables users to perform healthcare management tasks such as scheduling, patient search, and report generation through MCP-compatible clients.
    -
  • F
    license
    B
    quality
    D
    maintenance
    Provides comprehensive integration with the Cliniko API for healthcare practice management, including patient, appointment, and invoice administration. It enables tools for complex clinical workflows and direct access to practice resources through the Model Context Protocol.
    27
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andymillar84-cyber/mcp-cliniko'

If you have feedback or need assistance with the MCP directory API, please join our Discord server