# Halaxy MCP by usefulapi (remote · halaxy.usefulapi.io)

Read Halaxy patients, appointments, slots and invoices; create patients, appointments and notes.

- Trust score: 18/100 (low)
- Change this week: −45
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `halaxy.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy.md), [page](https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy)

## Channel facts

- Endpoint: `https://halaxy.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.11.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Halaxy MCP by usefulapi server?

Halaxy MCP by usefulapi is a hosted endpoint at https://halaxy.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-halaxy 'https://halaxy.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-halaxy": {
      "url": "https://halaxy.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-halaxy": {
      "type": "http",
      "url": "https://halaxy.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-halaxy]
url = "https://halaxy.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-halaxy": {
      "type": "remote",
      "url": "https://halaxy.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-halaxy --url 'https://halaxy.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-halaxy:
    url: "https://halaxy.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-halaxy": {
      "Transport": "http",
      "Url": "https://halaxy.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-halaxy -t streamable-http -u 'https://halaxy.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-halaxy": {
      "type": "http",
      "url": "https://halaxy.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-02 (score 18, −49)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.20 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 67, +4)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “browse_schedules_and_time_slots”
- [functional] New prompt “find_open_appointment_times”
- [functional] New prompt “list_your_appointment_types_and_fees”
- [functional] New prompt “see_your_practitioners_and_clinics”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.7.0 → 1.9.0
- [functional] Server version: 1.6.0 → 1.7.0
- [functional] Server version: 1.5.2 → 1.6.0

### 2026-10-30 (score 63, 0)

- [functional] Server version: 1.5.1 → 1.5.2
- [functional] Server version: 1.5.0 → 1.5.1

### 2026-10-29 (score 63, 0)

- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0

### 2026-10-28 (score 63, +1)

- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-27 (score 62, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-26 (score 62)

First indexed and scored.

## MCP tools (35)

### `halaxy_list_patients` (~365 tokens)

List or search patients

List or search patient records (demographics and contact details; HEALTH DATA). Filters combine with AND. Paged: pass next_page as page. GET /main/Patient.

Input parameters:

- `birthdate` (string): Date of birth (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `count` (integer): Results per page, 1-100 (default 30).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `email` (string): An email address.
- `family` (string): Start of the family name.
- `general_practitioner` (string): A Practitioner/PractitionerRole the patient has records with.
- `given` (string): Start of the given name.
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Patient:general-practitioner.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `name` (string): Search the family, given or preferred name (matches the start of the name).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `phone` (string): A phone number, local or E.164 (+61412345678).
- `sort` (string): Sort order: _lastUpdated, name, created, -_lastUpdated, -name, -created ("-" = descending).
- `status` (string): Patient status, e.g. active.

### `halaxy_list_practitioners` (~252 tokens)

List practitioners

List or search practitioners and administrators of the practice group (ids look like PR-12345). Filters combine with AND. Paged: pass next_page as page. GET /main/Practitioner.

Input parameters:

- `active` (boolean): Only active (true) or inactive (false) practitioners.
- `count` (integer): Results per page, 1-100 (default 30).
- `email` (string): An email address.
- `family` (string): Family name.
- `given` (string): Given name.
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `name` (string): Family, given or preferred name.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `profile` (string): hx-practitioner = staff, hx-external-practitioner = professional contacts.
- `sort` (string): Sort order: name, -name ("-" = descending).

### `halaxy_list_practitioner_roles` (~239 tokens)

List practitioner roles (clinic locations)

List or search practitioner roles: a practitioner's association with one clinic location (the id used when booking and for clinical notes). Filters combine with AND. Paged: pass next_page as page. GET /main/PractitionerRole.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of PractitionerRole:practitioner, PractitionerRole:organization.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `organization` (string): Organization (clinic) id.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `practitioner` (string): Practitioner id, e.g. PR-123.
- `profile` (string): Staff roles or external professional-contact roles.
- `provider_number` (string): Provider number.

### `halaxy_list_organizations` (~178 tokens)

List organizations and clinics

List or search the practice group, its clinic locations, funders and external practices (practice group ids look like PG-12345). Filters combine with AND. Paged: pass next_page as page. GET /main/Organization.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `name` (string): Organization name.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `profile` (string): Only one kind of organization.

### `halaxy_list_appointments` (~349 tokens)

List appointments

List or search appointments (HEALTH DATA: names the patient). Filters combine with AND. Paged: pass next_page as page. GET /main/Appointment.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `date` (string): Appointment date/time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Appointment:patient, Appointment:practitioner-role.
- `include_iterate` (array): Also return resources related to an included one (needs the matching include): any of PractitionerRole:practitioner, PractitionerRole:organization.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `organization` (string): The clinic (Organization) id including its prefix.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `part_status` (string): The patient's participation status, e.g. booked, arrived, cancelled.
- `patient` (string): Patient id.
- `practitioner` (string): Practitioner id, e.g. PR-123.
- `practitioner_role` (string): PractitionerRole id.
- `sort` (string): Sort order: date, -date ("-" = descending).

### `halaxy_list_schedules` (~194 tokens)

List practitioner schedules

List or search schedules: containers of bookable time slots per practitioner. Filters combine with AND. Paged: pass next_page as page. GET /main/Schedule.

Input parameters:

- `active` (boolean): Only active (true) or inactive schedules.
- `actor` (string): The practitioner/role the schedule belongs to.
- `count` (integer): Results per page, 1-100 (default 30).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Schedule:actor.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.

### `halaxy_list_slots` (~289 tokens)

List time slots

List or search time slots of practitioner schedules (free or busy). Filters combine with AND. Paged: pass next_page as page. GET /main/Slot.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `duration` (string): Slot duration in minutes.
- `end` (string): Slot end (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Slot:practitioner, Slot:organization, Slot:practitioner-role.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `organization` (string): Organization (clinic) id.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `practitioner` (string): Practitioner id.
- `practitioner_role` (string): PractitionerRole id.
- `schedule` (string): Schedule id.
- `start` (string): Slot start (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `status` (string): free or busy.

### `halaxy_list_healthcare_services` (~173 tokens)

List appointment types

List or search appointment types used by the practice group, clinics and practitioners. Filters combine with AND. Paged: pass next_page as page. GET /main/HealthcareService.

Input parameters:

- `active` (boolean): Only active (true) or inactive appointment types.
- `count` (integer): Results per page, 1-100 (default 30).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `name` (string): Appointment type name.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.

### `halaxy_list_fees` (~252 tokens)

List fees

List or search fees (ChargeItemDefinition): the services and products a practice charges for. Filters combine with AND. Paged: pass next_page as page. GET /main/ChargeItemDefinition.

Input parameters:

- `code` (string): Fee item number.
- `context_type` (string): Fee type: 0 = appointment, 1 = item, 2 = pro-rata.
- `count` (integer): Results per page, 1-100 (default 30).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `property_group_status` (string): Fee pricing status: 1 = current, 2 = archived.
- `publisher` (string): Funder name.
- `title` (string): Fee name.

### `halaxy_list_coverage` (~291 tokens)

List patient coverage (claim details)

List or search patients' health fund membership and claim details (HEALTH DATA). Filters combine with AND. Paged: pass next_page as page. GET /main/Coverage.

Input parameters:

- `beneficiary` (string): The primary beneficiary (a Patient id).
- `count` (integer): Results per page, 1-100 (default 30).
- `coverage_organization` (string): The coverage organization.
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Coverage:beneficiary, Coverage:subscriber, Coverage:payor.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `payor` (string): The funder.
- `sort` (string): Sort order: _lastUpdated, created, -_lastUpdated, -created ("-" = descending).
- `subscriber` (string): The subscriber to the policy.
- `subscriber_id` (string): Subscriber (membership) number.

### `halaxy_list_invoices` (~329 tokens)

List invoices

List or search invoices of the practice group. Filters combine with AND. Paged: pass next_page as page. GET /main/Invoice.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Invoice:recipient, Invoice:practitioner.
- `include_iterate` (array): Also return resources related to an included one (needs the matching include): any of PractitionerRole:practitioner, PractitionerRole:organization.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `organization` (string): The clinic the invoice was created at.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `practitioner` (string): Practitioner id.
- `practitioner_role` (string): PractitionerRole id.
- `recipient` (string): The invoice recipient (a Patient or Organization id).
- `status` (string): Invoice status.
- `total_balance` (string): Balance owing, optionally with a prefix such as gt0 (finds unpaid invoices).
- `total_paid` (string): Total paid amount, optionally with a prefix such as gt0.

### `halaxy_list_invoice_lines` (~288 tokens)

List invoice lines

List or search invoice lines: single fees on invoices. Filters combine with AND. Paged: pass next_page as page. GET /main/InvoiceLine.

Input parameters:

- `amount` (string): The line amount, optionally with a prefix such as gt100.
- `count` (integer): Results per page, 1-100 (default 30).
- `coverage` (string): The coverage (claim details).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `funder` (string): The funder.
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of InvoiceLine:subject, InvoiceLine:performer, InvoiceLine:invoice.
- `invoice` (string): The invoice the line belongs to.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `performer` (string): The performer of the service.
- `referral` (string): The referral.
- `subject` (string): The patient the line is for.

### `halaxy_list_payment_transactions` (~165 tokens)

List payment transactions

List or search payment transactions recorded on invoices. Filters combine with AND. Paged: pass next_page as page. GET /main/PaymentTransaction.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.

### `halaxy_list_referrals` (~250 tokens)

List referrals

List or search referrals from one healthcare provider to another (HEALTH DATA). Filters combine with AND. Paged: pass next_page as page. GET /main/Referral.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `coverage` (string): The coverage (claim details) of the referral.
- `created` (string): Created (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `include` (array): Also return related resources in "included": any of Referral:subject, Referral:coverage.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `sort` (string): Sort order: _lastUpdated, created, -_lastUpdated, -created ("-" = descending).
- `subject` (string): The patient the referral is for.

### `halaxy_list_referral_definitions` (~154 tokens)

List referral templates

List or search referral templates with preset properties. Filters combine with AND. Paged: pass next_page as page. GET /main/ReferralDefinition.

Input parameters:

- `count` (integer): Results per page, 1-100 (default 30).
- `funding_organization` (string): The funder.
- `id` (string): One id or several separated by commas, for example 1,2,3.
- `last_updated` (string): Only records last updated at this time (ISO date or date-time, optional prefix eq/ne/gt/lt/ge/le).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.

### `halaxy_get_patient` (~46 tokens)

Get a patient

Fetch a patient record (HEALTH DATA) by id. GET /main/Patient/{id}.

Input parameters:

- `id` (string, required): The Patient id (from the matching list tool).

### `halaxy_get_practitioner` (~45 tokens)

Get a practitioner

Fetch a practitioner or administrator by id. GET /main/Practitioner/{id}.

Input parameters:

- `id` (string, required): The Practitioner id (from the matching list tool).

### `halaxy_get_practitioner_role` (~51 tokens)

Get a practitioner role

Fetch a practitioner role at a clinic location by id. GET /main/PractitionerRole/{id}.

Input parameters:

- `id` (string, required): The PractitionerRole id (from the matching list tool).

### `halaxy_get_organization` (~50 tokens)

Get an organization

Fetch a practice group, clinic, funder or external practice by id. GET /main/Organization/{id}.

Input parameters:

- `id` (string, required): The Organization id (from the matching list tool).

### `halaxy_get_appointment` (~51 tokens)

Get an appointment

Fetch an appointment with its participants and statuses (HEALTH DATA) by id. GET /main/Appointment/{id}.

Input parameters:

- `id` (string, required): The Appointment id (from the matching list tool).

### `halaxy_get_schedule` (~41 tokens)

Get a schedule

Fetch a practitioner schedule by id. GET /main/Schedule/{id}.

Input parameters:

- `id` (string, required): The Schedule id (from the matching list tool).

### `halaxy_get_slot` (~41 tokens)

Get a time slot

Fetch a time slot by id. GET /main/Slot/{id}.

Input parameters:

- `id` (string, required): The Slot id (from the matching list tool).

### `halaxy_get_healthcare_service` (~45 tokens)

Get an appointment type

Fetch an appointment type by id. GET /main/HealthcareService/{id}.

Input parameters:

- `id` (string, required): The HealthcareService id (from the matching list tool).

### `halaxy_get_fee` (~49 tokens)

Get a fee

Fetch a fee (ChargeItemDefinition) by id. GET /main/ChargeItemDefinition/{id}.

Input parameters:

- `id` (string, required): The ChargeItemDefinition id (from the matching list tool).

### `halaxy_get_coverage` (~48 tokens)

Get patient coverage

Fetch a patient's coverage (claim details) record by id. GET /main/Coverage/{id}.

Input parameters:

- `id` (string, required): The Coverage id (from the matching list tool).

### `halaxy_get_invoice` (~40 tokens)

Get an invoice

Fetch an invoice by id. GET /main/Invoice/{id}.

Input parameters:

- `id` (string, required): The Invoice id (from the matching list tool).

### `halaxy_get_invoice_line` (~44 tokens)

Get an invoice line

Fetch an invoice line by id. GET /main/InvoiceLine/{id}.

Input parameters:

- `id` (string, required): The InvoiceLine id (from the matching list tool).

### `halaxy_get_payment_transaction` (~44 tokens)

Get a payment transaction

Fetch a payment transaction by id. GET /main/PaymentTransaction/{id}.

Input parameters:

- `id` (string, required): The PaymentTransaction id (from the matching list tool).

### `halaxy_get_referral` (~46 tokens)

Get a referral

Fetch a referral (HEALTH DATA) by id. GET /main/Referral/{id}.

Input parameters:

- `id` (string, required): The Referral id (from the matching list tool).

### `halaxy_get_referral_definition` (~45 tokens)

Get a referral template

Fetch a referral template by id. GET /main/ReferralDefinition/{id}.

Input parameters:

- `id` (string, required): The ReferralDefinition id (from the matching list tool).

### `halaxy_find_available_appointments` (~226 tokens)

Find available appointment times

Find free appointment times between start and end for a given duration, respecting each practitioner's online booking preferences (buffer time, lead time, advance booking limit). Narrow it with practitioner, practitioner_role or organization. GET /main/Appointment/$find.

Input parameters:

- `apply_buffer_time` (boolean): true applies buffer time to show all available times.
- `duration` (integer, required): Appointment length in minutes.
- `emergency` (boolean): true ignores lead time, to show all times for emergency appointments.
- `end` (string, required): End of the search window, e.g. 2027-01-12T23:59:59.
- `organization` (string): Organization (clinic) id.
- `practitioner` (string): Practitioner id.
- `practitioner_role` (string): PractitionerRole id.
- `show` (string): first-available = only the first available time.
- `sort` (string): start or -start.
- `start` (string, required): Start of the search window, e.g. 2027-01-12T00:00:00.

### `halaxy_create_patient` (~202 tokens)

Create a patient

Writes to the live Halaxy account. Creates a new patient record (always a new one: search with halaxy_list_patients first to avoid a duplicate). Pass managing_organization (the practice group id, e.g. PG-12345, from halaxy_list_organizations) if Halaxy asks for it. POST /main/Patient.

Input parameters:

- `address` (object): Mailing address.
- `birth_date` (string): Date of birth, YYYY-MM-DD.
- `email` (string): Email address.
- `family` (string, required): Legal family name (surname).
- `gender` (string): Gender as registered in government records.
- `given` (string, required): Legal given name.
- `managing_organization` (string): The practice group id, e.g. PG-12345.
- `mobile` (string): Mobile number as +{country code}{number}, no spaces.
- `preferred_name` (string): Preferred (usual) given name.

### `halaxy_create_appointment` (~269 tokens)

Book an appointment

Writes to the live Halaxy account. Books an appointment for a patient with a practitioner at a clinic (the practitioner role). Halaxy also creates the invoice, clinical note and reminder. Use halaxy_find_available_appointments for free times. By default a double booking is refused (HTTP 409, nothing created). POST /main/Appointment/$book.

Input parameters:

- `charge_item_definition_id` (string): The fee id (halaxy_list_fees) booked for the appointment.
- `end` (string, required): End with the time zone offset, e.g. 2027-06-15T16:00:00+10:00.
- `fail_on_double_booking` (boolean): Refuse if the practitioner already has an appointment then (default true).
- `healthcare_service_id` (string): The appointment type id (halaxy_list_healthcare_services).
- `patient_id` (string, required): The patient id.
- `practitioner_role_id` (string, required): The PractitionerRole id (practitioner at a clinic), e.g. PR-1234567.
- `start` (string, required): Start with the time zone offset, e.g. 2027-06-15T15:00:00+10:00.
- `status` (string): Initial status (default booked).

### `halaxy_update_appointment_status` (~124 tokens)

Update an appointment status

Writes to the live Halaxy account. Sets the patient's status on an appointment (shown in the Halaxy calendar), for example arrived, attended, confirmed or cancelled. "cancelled (no charge)" also sets the invoice to $0. For a group appointment pass patient_id to say whose status changes. PATCH /main/Appointment/{id}.

Input parameters:

- `appointment_id` (string, required): The appointment id.
- `patient_id` (string): The patient whose status changes (needed only when the appointment has several patients).
- `status` (string, required): The new status.

### `halaxy_create_clinical_note` (~135 tokens)

Create a draft clinical note

Writes to the live Halaxy account. Adds a clinical note to a patient's record as a DRAFT (preliminary); the practitioner reviews and publishes it in Halaxy. The author is a PractitionerRole (practitioner at a clinic). Only HTML text is supported. POST /main/DocumentReference.

Input parameters:

- `html` (string, required): The note body as HTML.
- `patient_id` (string, required): The patient the note is for.
- `practitioner_role_id` (string, required): The PractitionerRole id of the author, e.g. PR-1234567.
- `title` (string, required): The note title.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy#diagnostics

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 67
- 2026-10-31: 67
- 2026-10-30: 63
- 2026-10-29: 63
- 2026-10-28: 63
- 2026-10-27: 62
- 2026-10-26: 62

## Common questions

### What is the Halaxy MCP by usefulapi server?

Halaxy MCP by usefulapi is listed in the public MCP registry as io.usefulapi/halaxy. Read Halaxy patients, appointments, slots and invoices; create patients, appointments and notes. This page covers its hosted endpoint (https://halaxy.usefulapi.io/mcp).

### Is the Halaxy MCP by usefulapi server safe to use?

Halaxy MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Halaxy MCP by usefulapi server expose?

Halaxy MCP by usefulapi exposes 35 tools: halaxy_list_patients, halaxy_list_practitioners, halaxy_list_practitioner_roles, halaxy_list_organizations, halaxy_list_appointments, and 30 more. Their descriptions and schemas cost roughly 5,410 tokens of context every time the server is loaded.

### Does the Halaxy MCP by usefulapi server require authentication?

Its publisher declares no required credentials for Halaxy MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Halaxy MCP by usefulapi server still maintained?

Halaxy MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://halaxy.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/halaxy/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-halaxy/halaxy
