Skip to main content
Glama

nexhealth

Server Details

Read and write NexHealth appointments, patients, providers and locations.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource and action: patients, appointments, slots, types, insurance coverages/plans, locations, operatories, procedures, providers, and sync status. Read vs write vs search operations are clearly separated, and slots are distinct from booked appointments.

Naming Consistency4/5

All tools use the nexhealth_ prefix with snake_case and a consistent verb_noun pattern (list_, get_, create_, update_, book_, search_). The only deviation is nexhealth_sync_status, which is a noun phrase rather than a verb-led operation.

Tool Count4/5

The 16 tools are broadly scoped across scheduling, patient records, insurance, and practice metadata, and each appears to earn its place. The count is slightly above the typical 3–15 well-scoped range, but not excessive for this domain.

Completeness4/5

Core scheduling and patient workflows are covered: find slots, book, get, list, and update appointments; create, get, and search patients; and list supporting metadata. Minor gaps include patient update/delete and mutation coverage for insurance or provider/location records.

Available Tools

16 tools
nexhealth_book_appointmentBook appointmentA
Destructive
Inspect

BOOK a new appointment. MUTATES DATA — creates an appointment in the connected EHR/PMS (optionally notifying the patient). Provide either end_time or appointment_type_id. POST /appointments.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoFree-text note on the appointment.
end_timeNoAppointment end, ISO8601 datetime (or set appointment_type_id).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
patient_idYesPatient the appointment is for.
start_timeYesAppointment start, ISO8601 datetime.
location_idYesLocation id for the appointment (REQUIRED).
provider_idYesProvider seeing the patient.
operatory_idNoOperatory (chair/room) id.
notify_patientNoNotify the patient (sent as notify_patient query param).
appointment_type_idNoAppointment type id (determines duration if end_time omitted).

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare destructiveHint=true; the description goes further by naming the mutation target (external EHR/PMS) and the optional patient notification side effect, which an agent needs to know before invoking. It stops short of auth requirements, idempotency/double-booking behavior, or error modes.

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?

Three short sentences with the mutation warning front-loaded immediately after the verb, then the parameter constraint, then the endpoint. Zero filler.

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 10-parameter mutation tool with no output schema, it covers the essential operation, side effect and the key parameter constraint. The gap is the absence of any prerequisite or failure context (e.g. valid patient_id, slot conflicts), but the core is complete.

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 either/or note on end_time vs appointment_type_id is already present in the schema descriptions, making the description's parameter guidance largely redundant rather than additive.

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?

States a specific verb and resource ('BOOK a new appointment') and explicitly identifies the side effect ('creates an appointment in the connected EHR/PMS'). It is cleanly distinguishable from siblings like nexhealth_create_patient and nexhealth_update_appointment.

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?

It gives one real invocation rule ('Provide either end_time or appointment_type_id'), which is genuine when-to-pass guidance. However, it offers no context on when to book versus checking nexhealth_list_appointment_slots first, nor any prerequisite conditions (patient/provider/location must already exist).

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

nexhealth_create_patientCreate patientA
Destructive
Inspect

CREATE a new patient record in a location. MUTATES DATA — writes to the connected EHR/PMS. GET the patient back to confirm. POST /patients.

ParametersJSON Schema
NameRequiredDescriptionDefault
npiNoProvider NPI, sent as provider.npi in the body.
emailYesPatient email address.
genderNoPatient gender.
last_nameYesPatient last name.
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
first_nameYesPatient first name.
location_idYesLocation id to create the patient in (REQUIRED).
provider_idYesProvider id to associate the patient with (REQUIRED).
phone_numberNoPatient phone number.
date_of_birthNoDate of birth, yyyy-mm-dd.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the mutation warning is not novel, but the description adds valuable context: it writes to the connected EHR/PMS, advises a confirmation GET, and names the POST /patients endpoint. It does not cover auth requirements, rate limits, or duplicate-patient behavior.

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?

Four short sentences, front-loaded with the verb and mutation warning. Every sentence adds useful information, including the write target and a confirmation step. There is no filler or repetition.

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?

There is no output schema, but the description partially compensates by advising a GET to confirm the created patient. The mutation, external system, and endpoint are covered. Duplicate-handling guidance for a patient-creation tool is missing, but required parameters are fully documented in the 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 all 10 parameters are already documented in the input schema. The description adds no parameter-level format or constraint details beyond what the schema provides. This meets the baseline of 3 when the schema does the heavy lifting.

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 states a specific verb and resource: CREATE a new patient record in a location. It is clearly distinguishable from siblings like get_patient, search_patients, list_patients, and update_appointment. No ambiguity remains about what the tool creates.

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 create context is clear, but there is no explicit guidance on when to use this instead of alternatives or when not to use it. It does not mention checking for existing patients with search_patients or using an update path for existing records. 'GET the patient back to confirm' is post-call workflow, not tool-selection guidance.

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

nexhealth_get_appointmentGet appointmentA
Read-only
Inspect

Fetch a single appointment by id. GET /appointments/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAppointment id (path param).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the safe read behavior is covered. The description only restates the read operation and HTTP path, adding no auth, error, rate-limit, or return-shape context beyond what is already structured.

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?

Two short sentences with zero wasted words. The purpose is front-loaded and the endpoint detail follows immediately.

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-by-id tool with annotations covering safety and full schema descriptions, the definition is nearly complete. It could mention response shape or not-found behavior, but with no output schema and a straightforward retrieval operation, this is a minor gap.

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 both id and subdomain are documented in the schema. The description reinforces that id is required for lookup but adds no format or syntax detail beyond the schema, making baseline 3 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?

States a specific verb 'Fetch' and resource 'appointment', and 'single' plus 'by id' clearly distinguishes it from list, book, and update sibling tools. The HTTP path further reinforces the exact endpoint.

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?

Usage is implied: use when you have an appointment id and need one record. There is no explicit guidance on when not to use it or which alternative to choose for listing or searching appointments.

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

nexhealth_get_patientGet patientC
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPatient id (path param).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, and the description adds nothing beyond that — no note on 404 behavior for a missing id, no auth/permission requirements, no rate-limit or subdomain fallback behavior. The 'GET /patients/{id}' line is a restatement of the HTTP shape rather than new 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.

Conciseness4/5

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

Two short, front-loaded sentences with no padding. The second sentence largely echoes the tool name and title, which slightly limits its value but keeps it tight.

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-record fetch with readOnlyHint covering the safety profile, this is minimally adequate. With no output schema, the description could usefully say what a patient record contains, but the omission is not severe for a lookup 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?

Schema description coverage is 100%, so both the id path param and the subdomain fallback are already documented in the schema. The description's 'by id' adds no syntax or format detail beyond that, making the baseline 3 correct.

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?

States a specific verb and resource ('Fetch a single patient by id') and pins down the scope as a single-record lookup, which meaningfully separates it from nexhealth_search_patients and nexhealth_list_* siblings. It does not name any sibling explicitly, so it stops short of a 5.

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?

Only the phrase 'by id' hints at when this is appropriate versus nexhealth_search_patients. There is no explicit statement of when to use this tool, when not to, or what to do if the id is unknown.

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

nexhealth_list_appointmentsList appointmentsA
Read-only
Inspect

List appointments in a date/time window, optionally filtered by location, patient, or provider. GET /appointments.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoWindow end, ISO8601 datetime.
pageNoPage number (pagination).
startNoWindow start, ISO8601 datetime.
includeNoRelated resources to embed, e.g. ["patient","provider"] (sent as include[]).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
patient_idNoFilter to one patient.
location_idNoRestrict to a single location id.
provider_idNoFilter to one provider.

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already declares the safe-read profile, so the bar is lower. The description adds the concrete endpoint (GET /appointments), reinforcing read-only behavior, but says nothing about pagination defaults, result ordering, or maximum window size.

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?

Two compact sentences, front-loaded with the core action and scope, with the endpoint tacked on at the end. No filler or redundancy.

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 read-only list tool with full schema coverage and annotations carrying the safety profile, the description is nearly sufficient. The absence of any note on pagination behavior or window limits is the only minor gap, and no output schema exists to require return-value explanation.

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 all nine parameters are already documented in the schema. The description only echoes the location/patient/provider filters and omits pagination, include[], and subdomain, adding little beyond what the schema provides.

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?

States a specific verb (List) and resource (appointments) plus the scoping dimension (date/time window) and available filters. It is clearly distinguishable from the mutate siblings (book/update/get), though it does not explicitly name a sibling to route against.

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?

Usage is implied by the listed filters (use when you want a windowed, filterable list), but there is no explicit when-to-use guidance or contrast with nexhealth_get_appointment (single fetch) or nexhealth_list_appointment_slots (availability). The agent must infer the boundary.

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

nexhealth_list_appointment_slotsList appointment slotsB
Read-only
Inspect

Find bookable appointment start times across providers/locations for a date range. High-value for scheduling. GET /appointment_slots.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days from start_date to search.
lidsNoLocation ids (sent as lids[]=...).
pidsNoProvider ids (sent as pids[]=...).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
start_dateYesFirst day to search, yyyy-mm-dd (REQUIRED).
slot_lengthNoDesired slot length in minutes.
overlapping_operatory_slotsNoAllow overlapping operatory slots.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds that results are bookable start times and notes the HTTP verb, but says nothing about pagination, result volume, rate limits, or what a returned slot contains. Adding the 'bookable' framing is useful context but leaves most behavioral traits undisclosed.

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?

Two short sentences plus the endpoint reference, with the core capability front-loaded. 'High-value for scheduling' is mild filler and the raw GET path adds little for an agent, but there is no wasted prose.

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?

With no output schema, the description should ideally explain what a returned slot looks like (provider, location, time, operatory) and how it feeds into booking. It covers the input scope adequately but leaves the return shape and downstream usage implicit, which is a real gap for a discovery/availability 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?

Schema description coverage is 100%, so all seven parameters (days, lids, pids, subdomain, start_date, slot_length, overlapping_operatory_slots) are already documented. The description only restates the date-range/provider/location dimension and adds no syntax or default details beyond the schema, so the baseline 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?

States a specific verb and resource: finding bookable appointment start times across providers/locations for a date range, plus the underlying GET endpoint. This is clearly distinguishable from siblings like nexhealth_list_appointments (booked appointments) and nexhealth_book_appointment (mutation). No sibling is named explicitly, but the 'bookable' qualifier does the differentiation work.

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?

'High-value for scheduling' implies the tool is used in a booking flow, which hints at when to reach for it. However, no alternative is named (e.g., 'use before nexhealth_book_appointment') and there are no exclusions or prerequisites stated, leaving usage to inference.

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

nexhealth_list_appointment_typesList appointment typesB
Read-only
Inspect

List the appointment types configured for an institution/location. GET /appointment_types.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (pagination).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
location_idNoRestrict to a single location id.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint=true annotation already tells the agent this is a safe read. The description adds the endpoint and the institution/location scoping constraint, but says nothing about pagination behavior or response shape beyond what the schema exposes. With annotations covering safety, a baseline 3 is appropriate.

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?

Two very short sentences, purpose front-loaded, no filler. The trailing 'GET /appointment_types' endpoint reference is marginally redundant given the tool name, which keeps it from a perfect score.

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 read-only reference-list tool with full schema coverage and no output schema, the description supplies what an agent needs to call it correctly. It is not deficient, though a note on pagination or typical result volume would make it fully self-sufficient.

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 every parameter (page, per_page, subdomain, location_id) is already documented in the schema. The description's 'institution/location' phrasing loosely ties subdomain and location_id together but adds no format or default detail beyond the schema. Baseline 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?

Clear verb+resource combo ('List the appointment types') with a stated scope (configured for an institution/location) and the underlying endpoint. It is distinguishable from other list_* siblings by resource, but the description never names an alternative tool, so it stops short of a 5.

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 phrase 'configured for an institution/location' hints at the scoping use case, but there is no explicit when-to-use guidance, no prerequisites, and no mention of related siblings such as list_appointment_slots or list_appointments that an agent might confuse this with.

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

nexhealth_list_insurance_coveragesList insurance coveragesC
Read-only
Inspect

List a patient's insurance coverages. GET /insurance_coverages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (pagination).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
patient_idNoPatient id to fetch coverages for.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so safety is covered structurally. The description adds nothing beyond that: it does not mention pagination behavior, default page sizes, or what happens when patient_id is omitted, despite four optional parameters that shape the response.

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?

Two short sentences, front-loaded with the purpose. The trailing 'GET /insurance_coverages' is mildly redundant with the name but harmless and structurally efficient.

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 read-only list tool with no output schema, the description is just barely adequate: the schema documents all parameters, so an agent can invoke it, but nothing explains pagination defaults or the response shape. Minimum viable rather than complete.

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 every parameter (page, per_page, subdomain, patient_id) is already documented in the schema. The description adds no formatting, defaulting, or filtering semantics beyond what the schema provides, making the baseline 3 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?

States a specific verb and resource ('List a patient's insurance coverages') and even names the underlying endpoint. It does not explicitly differentiate from the closest sibling nexhealth_list_insurance_plans, so it falls short of a 5.

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?

There is no guidance on when to use this tool versus alternatives such as nexhealth_list_insurance_plans, nor any prerequisites (e.g., whether patient_id is required in practice). Usage must be inferred entirely from the name.

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

nexhealth_list_insurance_plansList insurance plansB
Read-only
Inspect

List insurance plans known to the institution, optionally scoped to a location. GET /insurance_plans.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (pagination).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
location_idNoRestrict to a single location id.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the institution-scoping behavior, but says nothing about pagination defaults (despite page/per_page params) or result volume, which is the main behavioral trait left undisclosed for a list endpoint.

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?

Two short sentences, front-loaded with the action and scope, with zero filler. The trailing 'GET /insurance_plans' is mildly redundant with the name but cheap and confirms the endpoint.

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 read-only, zero-required-parameter list tool with 100% schema coverage and annotations covering safety, the description is adequate. It stops short of the one thing an agent most needs here: disambiguation from nexhealth_list_insurance_coverages and any note on pagination behavior for a potentially large list.

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 all four parameters are already documented in the schema; baseline is 3. The description's 'optionally scoped to a location' loosely maps to location_id but adds no syntax, default, or interaction detail beyond what the schema provides.

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?

States a specific verb and resource ('List insurance plans') plus the scope ('known to the institution'), which tells the agent what set is returned. It does not, however, distinguish itself from the close sibling nexhealth_list_insurance_coverages, so the agent cannot tell from the description alone which of the two returns plans vs. enrollment/coverage records.

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?

'optionally scoped to a location' implies the primary usage context, but there is no explicit when-to-use, when-not-to-use, or routing to an alternative (e.g. insurance_coverages, list_locations). Usage is inferred rather than stated.

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

nexhealth_list_locationsList locationsA
Read-only
Inspect

List the practice locations for an institution (id, name, address). Good first call to discover location_ids for other tools. GET /locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.

TDQS

A3.8/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description is not carrying the full behavioral burden. It adds little beyond that — the 'GET /locations' note and the field list are mild extras, with no pagination, rate-limit, or empty-result 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?

Three short sentences, front-loaded with the primary action and the returned fields, then the usage hint and raw endpoint. No filler.

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, annotation-backed list tool, the description covers what is returned and why an agent would call it. With no output schema, the parenthetical field list partially compensates; only pagination/result-size behavior is unaddressed.

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?

There is a single optional parameter with 100% schema description coverage, so the schema already explains that subdomain defaults to NEXHEALTH_SUBDOMAIN. The description adds nothing about it, which matches the baseline 3 for a fully documented single param.

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?

Names a specific verb and resource ('List the practice locations for an institution') and even previews the returned fields (id, name, address). The resource is distinct enough from siblings like nexhealth_list_providers or nexhealth_list_operatories that no explicit differentiation is required, though it never states how it differs from those list tools.

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

Usage Guidelines4/5

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

'Good first call to discover location_ids for other tools' gives clear, actionable context for when to invoke it. It stops short of naming alternatives or stating when-not to use it, so it falls short of the 5 bar.

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

nexhealth_list_operatoriesList operatoriesA
Read-only
Inspect

List operatories (chairs/rooms) for an institution, optionally scoped to a location. GET /operatories.

ParametersJSON Schema
NameRequiredDescriptionDefault
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
location_idNoRestrict to a single location id.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that this is a GET endpoint and mentions optional location scoping, but says nothing about pagination, ordering, or volume of results for a list operation. Adding the HTTP method is minor value over the annotation.

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?

Two short sentences, front-loaded with the resource and its meaning, then the endpoint. No waste, though the trailing 'GET /operatories' adds little for an agent that already sees the tool name.

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 list tool with no output schema and fully documented parameters, the description covers the essentials. It could mention result shape or pagination, but nothing critical to correct invocation is missing.

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 both subdomain (with its NEXHEALTH_SUBDOMAIN default) and location_id are fully documented in the schema. The description adds only 'optionally scoped to a location,' which restates the schema. 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?

States a specific verb (List) and resource (operatories), and clarifies with '(chairs/rooms)' that operatories are physical rooms, which is helpful domain context. It doesn't explicitly distinguish itself from sibling list tools like nexhealth_list_locations, but the resource is unambiguous.

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 phrase 'optionally scoped to a location' implies the two usage modes (all operatories vs. one location's), but there is no explicit when-to-use guidance, prerequisites, or reference to alternatives. Usage is only weakly implied.

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

nexhealth_list_proceduresList proceduresB
Read-only
Inspect

List clinical procedures, optionally scoped to a patient. GET /procedures.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (pagination).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
patient_idNoFilter to one patient's procedures.

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds the GET /procedures endpoint, which is marginally useful, but says nothing about pagination behavior, default page size, or result ordering despite four parameters that drive listing.

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?

Two short clauses, front-loaded with the action and resource; nothing is padded. It is arguably too terse to be maximally useful, but 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 four-parameter listing tool with no output schema, the essentials are covered by annotations and the rich schema, but the description omits listing-specific behavior an agent may need — pagination defaults and whether results are bounded or filtered server-side.

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 all four parameters are already documented in the schema (including pagination and the subdomain default). The description only restates the patient scoping already covered by patient_id, adding no new syntax or format meaning. Baseline 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?

States a specific verb (List) and resource (clinical procedures) plus the scoping option and the underlying endpoint. It is clearly distinguishable from siblings, which operate on different resources (appointments, patients, providers), though it does not name any sibling.

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?

"Optionally scoped to a patient" implies the main usage branch — pass patient_id when you want one patient's procedures — but there is no explicit when-to-use/when-not guidance or reference to an alternative search tool.

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

nexhealth_list_providersList providersA
Read-only
Inspect

List practitioners (providers) for an institution, optionally scoped to a location. GET /providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (pagination).
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
location_idNoRestrict to a single location id.

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description needn't restate safety. It adds the underlying GET /providers endpoint and the location-scoping behavior, which is modest added value, but says nothing about pagination semantics or result ordering.

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?

Two short, front-loaded sentences with no waste: the resource and scope come first, the endpoint detail second. Nothing is padded.

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, zero-required-parameter list tool with 100% schema coverage and a readOnly annotation, the description covers what and scope adequately. The only minor gap is that no output schema exists and pagination result shape is not hinted at, though this is low-stakes for a listing endpoint.

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 page, per_page, subdomain, and location_id are already documented in the schema. The description only restates the optional location scoping and adds no format or default detail beyond the schema, so the baseline 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?

States a specific verb (List) and resource (practitioners/providers), and clarifies the practitioner-provider synonym, so an agent knows exactly what is returned. It does not explicitly contrast with siblings, but the resource name alone makes it unambiguous among the nexhealth_list_* tools.

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 phrase 'for an institution, optionally scoped to a location' implies when to use the location_id filter, but there is no explicit when/when-not guidance or reference to an alternative (e.g. searching providers). Usage is inferable rather than stated.

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

nexhealth_search_patientsSearch patientsA
Read-only
Inspect

Search patients within a location by name, email, phone, or date of birth. Patient search is always in a location context. GET /patients.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull or partial patient name.
pageNoPage number (pagination).
sortNoSort field/direction, e.g. name or -created_at.
emailNoPatient email filter.
inactiveNoInclude inactive patients.
per_pageNoItems per page (pagination).
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
location_idYesLocation id to search within (REQUIRED).
phone_numberNoPatient phone number filter.
date_of_birthNoPatient date of birth, yyyy-mm-dd.

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe non-mutating read, so the burden is low. The description adds the location-scoping constraint and the HTTP verb/path, which is useful, but says nothing about pagination behavior, sort defaults, or result limits despite page/per_page/sort params existing.

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?

Two short sentences, the core capability front-loaded and the location-context constraint immediately after. No filler, no repetition of the title.

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 read-only search with a fully documented schema and no output schema to explain, the description covers the essential filters, the required location context, and the endpoint. Minor gaps (inactive/per_page semantics, result shape) are handled by the 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 every parameter is already documented in the schema. The description only names 4 of the 10 filters and adds no syntax or format detail beyond what the schema provides, meriting the baseline 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?

States a specific verb+resource (search patients) and enumerates the key filter dimensions (name, email, phone, date of birth), plus the underlying endpoint GET /patients. It does not distinguish itself from the sibling nexhealth_get_patient, so an agent must infer search-vs-fetch on its own.

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?

"Patient search is always in a location context" supplies a real prerequisite for using the tool. However, it names no alternative (e.g., nexhealth_get_patient for a known id) and gives no when-not guidance, leaving usage only implied.

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

nexhealth_sync_statusSync statusA
Read-only
Inspect

Report the data-sync health for the practice's EHR/PMS integration (is the Synchronizer up to date?). GET /sync_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds the concrete endpoint (GET /sync_status) and that this is a health/diagnostic read, but says nothing about freshness of the data returned, latency, or failure modes.

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?

A single front-loaded sentence plus the endpoint path; nothing is wasted. The endpoint string is mildly redundant for an MCP tool but harmless and mildly useful.

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?

There is no output schema, so the description would ideally hint at what the status response contains (last sync time, errors, lag). It conveys the purpose but leaves the agent guessing about the shape of the result.

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?

One optional parameter with 100% schema description coverage; the schema fully explains subdomain and its default. The description adds no parameter detail, which is acceptable given the coverage, so the baseline of 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?

States a specific verb ('Report') and resource ('data-sync health for the practice's EHR/PMS integration'), plus the parenthetical clarification of what health means. Every sibling tool deals with appointments, patients, providers, or locations, so this one is unmistakably distinct.

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 framing question 'is the Synchronizer up to date?' implies when an agent would call it (diagnosing sync problems), but there is no explicit when-to-use, prerequisite, or alternative stated. Usage is inferable rather than instructed.

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

nexhealth_update_appointmentUpdate appointmentA
Destructive
Inspect

UPDATE / reschedule / cancel / confirm an existing appointment by id. MUTATES DATA in the connected EHR/PMS. PATCH /appointments/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAppointment id to update (path param).
noteNoUpdate the free-text note.
cancelledNoSet true to cancel the appointment.
confirmedNoSet true to confirm the appointment.
subdomainNoInstitution subdomain. Defaults to NEXHEALTH_SUBDOMAIN if unset.
start_timeNoNew start, ISO8601 datetime (reschedule).
provider_idNoReassign to a provider.
operatory_idNoReassign operatory (chair/room).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations only declare destructiveHint=true; the description usefully reinforces this with 'MUTATES DATA in the connected EHR/PMS' and exposes the underlying endpoint PATCH /appointments/{id}. It does not state whether a cancel is reversible, how changes propagate to the EHR/PMS sync, or what happens when conflicting flags (cancelled and confirmed) are sent, which matters for an 8-parameter 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?

Three short fragments, front-loaded with the operation set before the mutation warning and the endpoint. The 'UPDATE / reschedule / cancel / confirm' list and the 'PATCH /appointments/{id}' line partially restate each other, which is minor redundancy rather than bloat.

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 destructive, multi-mode tool with 100% schema coverage and no output schema, the essentials (what it mutates, which id, which intents) are present. It omits behavioral edge cases such as flag conflicts, reversibility of cancellation, or error conditions in the upstream EHR/PMS, leaving meaningful gaps for a write operation.

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 every parameter is already documented in the schema, including the mapping of 'reschedule' to start_time and cancel/confirm to their booleans. The description's verbs loosely echo those parameters but add no syntax, format, or constraint detail beyond what the schema provides, so the baseline 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 states a specific resource (existing appointment, by id) and enumerates the exact operations covered (update, reschedule, cancel, confirm), so an agent can tell it apart from nexhealth_book_appointment or nexhealth_get_appointment. It does not name any sibling explicitly, which keeps it just short of a 5.

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

Usage Guidelines4/5

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

By listing the four mutation intents in one place, it implies this is the single entry point for cancel/confirm/reschedule rather than a separate tool per action. There is no explicit when-not guidance (e.g., creating a new appointment instead) or named alternative, so it misses the top band.

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.

  1. 16 tool updates
    • First observednexhealth_book_appointment
    • First observednexhealth_create_patient
    • First observednexhealth_get_appointment
    • First observednexhealth_get_patient
    • First observednexhealth_list_appointment_slots
    • First observednexhealth_list_appointment_types
    • First observednexhealth_list_appointments
    • First observednexhealth_list_insurance_coverages
    • First observednexhealth_list_insurance_plans
    • First observednexhealth_list_locations
    • First observednexhealth_list_operatories
    • First observednexhealth_list_procedures
    • First observednexhealth_list_providers
    • First observednexhealth_search_patients
    • First observednexhealth_sync_status
    • First observednexhealth_update_appointment

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with Open Dental practice management software, allowing reading of patients, appointments, providers, procedures, and recalls, as well as writing communications back to patient charts via MCP clients.
    14
    5
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Provides integration with the Cliniko API for healthcare practice management, enabling patient, appointment, invoice, and payment operations via natural language.
    27
    -
  • 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.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.