com.jamesrosingmd/zenoti
NPM · ZENOTI-MCP-SERVER · SCANNED SEP 27
MCP server for Zenoti spa/wellness/medspa — guests, appointments, bookings, invoices
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 97 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 50 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 3626 tokens (~98/item across 37 items; 37 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage90
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 70% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the com.jamesrosingmd/zenoti MCP server?
com.jamesrosingmd/zenoti runs locally as an npm package, launched with npx -y zenoti-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · zenoti-mcp-server
claude mcp add com-jamesrosingmd-zenoti -- npx -y zenoti-mcp-server
{
"mcpServers": {
"com-jamesrosingmd-zenoti": {
"command": "npx",
"args": [
"-y",
"zenoti-mcp-server"
]
}
}
} {
"servers": {
"com-jamesrosingmd-zenoti": {
"command": "npx",
"args": [
"-y",
"zenoti-mcp-server"
]
}
}
} codex mcp add com-jamesrosingmd-zenoti -- npx -y zenoti-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-jamesrosingmd-zenoti": {
"type": "local",
"command": [
"npx",
"-y",
"zenoti-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add com-jamesrosingmd-zenoti --command npx --arg -y --arg zenoti-mcp-server
mcp_servers:
com-jamesrosingmd-zenoti:
command: "npx"
args: ["-y", "zenoti-mcp-server"] {
"McpServers": {
"com-jamesrosingmd-zenoti": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"zenoti-mcp-server"
]
}
}
} assistant mcp add com-jamesrosingmd-zenoti -t stdio -c npx -a -y zenoti-mcp-server
{
"mcpServers": {
"com-jamesrosingmd-zenoti": {
"command": "npx",
"args": [
"-y",
"zenoti-mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 27 Sept 26 0
- Stability: 0.97 → pass security
- 26 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Sept 26 −3
- Stability: pass → 0.80 functional
- 20 Sept 26 0
- Stability: 0.97 → pass security
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 27 Sept 2026 · Analysed npm/zenoti-mcp-server@1.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 97 packages
| Packages resolved | 97 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
zenoti-appointments-cancel Cancel booking ~67
Cancel a service booking. Zenoti cancels by INVOICE id (each confirmed booking has one) — get it from the appointment details or list. This frees the slot; refunds are handled separately.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice GUID of the booking to cancel |
No output schema declared.
No examples provided.
zenoti-appointments-checkin Check in appointment ~53
Mark a guest as arrived/checked in. Requires the appointment GROUP id (appointment_group_id from the appointment list), not the individual appointment id.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_group_id | string | yes | Appointment group GUID |
No output schema declared.
No examples provided.
zenoti-appointments-get Get appointment details ~43
Retrieve full details of one appointment by its appointment_id (not group id).
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_id | string | yes | Appointment GUID (appointment_id, not group id) |
No output schema declared.
No examples provided.
zenoti-appointments-list List appointments ~143
List appointments of a center for a date range. Returns compact rows by default (id, group_id, invoice_id, guest, service, therapist, times, status); set verbose for full API payloads. Results are paginated (size max 100).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Center GUID. Defaults to ZENOTI_CENTER_ID when omitted. |
| end_date | string | – | Date in YYYY-MM-DD format. Defaults to start_date. |
| page | integer | – | – |
| size | integer | – | – |
| start_date | string | yes | Date in YYYY-MM-DD format |
| verbose | boolean | – | Return full raw appointment objects. |
No output schema declared.
No examples provided.
zenoti-appointments-noshow Mark appointment no-show ~53
Mark an appointment as no-show. Requires the appointment GROUP id. May trigger no-show fees per center policy — confirm with the operator before using.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_group_id | string | yes | Appointment group GUID |
No output schema declared.
No examples provided.
zenoti-appointments-progress Update appointment progress ~123
Update service progress for one appointment (start / open / complete). Uses the individual appointment_id. Zenoti does not publicly document this request body; the tool sends an UNVERIFIED mapping (start=1, open=2, complete=3 — only start=1 is corroborated). Verify the effect before reporting success; pass progress_code to override the numeric value.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_id | string | yes | Appointment GUID (not group id) |
| progress | string | – | – |
| progress_code | integer | – | Raw numeric progress code; overrides progress when provided. |
No output schema declared.
No examples provided.
zenoti-appointments-reschedule Reschedule booking (step 1) ~180
Start rescheduling an existing booking to a new date: creates a reschedule booking draft tied to the existing invoice. Then continue the normal flow — zenoti-availability-slots (pass the returned booking_id), zenoti-booking-reserve, zenoti-booking-confirm. Requires the invoice_id and invoice_item_id of the booked service (see zenoti-invoices-get).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| date | string | yes | New target Date in YYYY-MM-DD format |
| guest_id | string | yes | Guest GUID |
| invoice_id | string | yes | Invoice GUID of the existing booking |
| invoice_item_id | string | yes | Invoice item GUID of the booked service |
| service_id | string | yes | Service GUID |
| therapist_id | string | – | Therapist GUID (optional) |
No output schema declared.
No examples provided.
zenoti-appointments-undo-checkin Undo appointment check-in ~43
Revert a checked-in appointment to its prior status. Requires the appointment GROUP id.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_group_id | string | yes | Appointment group GUID |
No output schema declared.
No examples provided.
zenoti-availability-slots Find available slots ~211
Find open appointment slots for a service on a date. Creates a Zenoti booking draft and returns its booking_id plus the available slots — pass booking_id and a chosen slot Time to zenoti-booking-reserve next. Alternatively pass an existing booking_id (e.g. from zenoti-appointments-reschedule) to just fetch its slots. Slot holds are short-lived: reserve and confirm promptly.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | – | Existing booking GUID — skips draft creation and only fetches slots. |
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| check_future_day_availability | boolean | – | If no same-day slots, also return the next available slot this week. |
| date | string | – | YYYY-MM-DD (required unless booking_id given) |
| guest_id | string | – | Guest GUID (required unless booking_id given) |
| service_id | string | – | Service GUID (required unless booking_id given) |
| therapist_id | string | – | Preferred therapist GUID |
No output schema declared.
No examples provided.
zenoti-booking-confirm Confirm booking ~55
Confirm a reserved booking. This finalizes the appointment and creates the invoice (the response includes invoice details — keep invoice_id for cancel/reschedule/payment).
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | Booking GUID with a reserved slot |
No output schema declared.
No examples provided.
zenoti-booking-reserve Reserve slot ~136
Hold a specific slot on a booking draft (from zenoti-availability-slots). slot_time must be one of the returned slot Time values (e.g. 2026-08-07T14:30:00). Holds expire quickly — confirm right after. Set create_invoice to generate a temporary invoice at this step instead of at confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | Booking GUID from zenoti-availability-slots |
| create_invoice | boolean | – | – |
| slot_time | string | yes | Chosen slot time, e.g. 2026-08-07T14:30:00 |
No output schema declared.
No examples provided.
zenoti-centers-list List centers ~60
List all centers (locations) of the organization. Use this to find the center GUID for other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| include_working_hours | boolean | – | Include working-hours details |
| page | integer | – | – |
| size | integer | – | – |
No output schema declared.
No examples provided.
zenoti-employee-schedules Employee schedules ~143
Work schedules of center employees for a date range — who is on shift when. Use this (not zenoti-therapists-list, which has no date filter) to check staffing for a day.
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| consider_schedule_time | boolean | – | – |
| employee_id | string | – | Limit to one employee |
| end_date | string | – | YYYY-MM-DD. Defaults to start_date. |
| job_id | string | – | Limit to one job/role |
| schedule_status | string | – | Filter by schedule status |
| start_date | string | yes | YYYY-MM-DD |
No output schema declared.
No examples provided.
zenoti-feedback-submit Submit appointment feedback ~126
Insert guest feedback collected outside Zenoti (e.g. a survey tool) for an appointment GROUP. Zenoti does not publicly document the payload schema, so pass the exact payload object your Zenoti org expects; common fields like rating/comments can be provided directly and are sent as-is.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_group_id | string | yes | Appointment group GUID |
| comments | string | – | Free-text feedback (sent as "comments") |
| payload | object | – | Extra/override fields merged into the request body as-is |
| rating | number | – | Numeric rating (sent as "rating") |
No output schema declared.
No examples provided.
zenoti-forms-get Get appointment form data ~75
Retrieve submitted form data for an appointment. Uploaded files, signatures, and annotations are not returned by the Zenoti API.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_id | string | yes | Appointment GUID |
| tag_id | string | – | Form tag id to filter by |
| version_no | integer | – | – |
| view_context | string | – | – |
No output schema declared.
No examples provided.
zenoti-forms-list List appointment forms ~37
List the forms attached to an appointment (uses appointment_id, not group id).
| Name | Type | Req | Description |
|---|---|---|---|
| appointment_id | string | yes | Appointment GUID |
No output schema declared.
No examples provided.
zenoti-guest-forms-list List guest forms ~50
List forms on a guest profile (intake/consent forms not tied to one appointment).
| Name | Type | Req | Description |
|---|---|---|---|
| guest_id | string | yes | Guest GUID |
| version_no | integer | – | – |
No output schema declared.
No examples provided.
zenoti-guests-appointments List guest appointments ~72
Appointment history (and upcoming appointments) for one guest, paginated.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | YYYY-MM-DD |
| guest_id | string | yes | Guest GUID |
| page | integer | – | – |
| size | integer | – | – |
| start_date | string | – | YYYY-MM-DD |
No output schema declared.
No examples provided.
zenoti-guests-create Create guest ~179
Create a new guest profile in a center. Provide at least an email or mobile number so the guest can be found later. Note: required fields are configurable per Zenoti org, so the API may reject a create that omits org-mandatory fields.
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| date_of_birth | string | – | YYYY-MM-DD |
| string | – | – | |
| first_name | string | yes | – |
| gender | string | – | Guest gender (sent to Zenoti as its numeric code) |
| last_name | string | yes | – |
| mobile_country_code | integer | – | International dialing code (1 = US/Canada, 44 = UK). Defaults to 1. Requires mobile_number. |
| mobile_number | string | – | Digits only, no country prefix |
No output schema declared.
No examples provided.
zenoti-guests-get Get guest details ~29
Retrieve a guest profile by guest GUID.
| Name | Type | Req | Description |
|---|---|---|---|
| guest_id | string | yes | Guest GUID |
No output schema declared.
No examples provided.
zenoti-guests-memberships List guest memberships ~49
A guest's memberships (status, credits, dues).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| guest_id | string | yes | Guest GUID |
No output schema declared.
No examples provided.
zenoti-guests-notes-add Add guest note ~61
Add a note to a guest profile.
| Name | Type | Req | Description |
|---|---|---|---|
| guest_id | string | yes | Guest GUID |
| payload | object | – | Extra fields merged into the request body (e.g. note type flags) |
| text | string | yes | Note text |
No output schema declared.
No examples provided.
zenoti-guests-notes-list List guest notes ~102
List notes on a guest profile (clinical notes, profile alerts). Set only_profile_alerts to see just the alerts shown at check-in.
| Name | Type | Req | Description |
|---|---|---|---|
| guest_id | string | yes | Guest GUID |
| note_type | string | – | Filter by note type |
| only_profile_alerts | boolean | – | Only profile-alert notes |
| page | integer | – | – |
| size | integer | – | – |
| view_private | boolean | – | Include private notes |
No output schema declared.
No examples provided.
zenoti-guests-packages List guest packages ~103
A guest's purchased packages/series (e.g. a 6-session laser course) with remaining redemptions. Set show_redeemable to only list packages that can still be redeemed.
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| guest_id | string | yes | Guest GUID |
| page | integer | – | – |
| show_redeemable | boolean | – | – |
| size | integer | – | – |
No output schema declared.
No examples provided.
zenoti-guests-search Search guests ~171
Search guests by any combination of name, email, phone, username, code, zip, or tags. At least one criterion is required. Scope (this center vs whole organization) is controlled by the org-level Zenoti setting "Search Guest Across Centers", not by this call — if expected guests are missing, they may belong to another center.
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| string | – | – | |
| first_name | string | – | – |
| last_name | string | – | – |
| page | integer | – | – |
| phone | string | – | – |
| size | integer | – | – |
| tags | string | – | – |
| user_code | string | – | – |
| user_name | string | – | – |
| zip_code | string | – | – |
No output schema declared.
No examples provided.
zenoti-guests-update Update guest ~191
Update fields on a guest profile. Fetches the current profile first and merges your changes (Zenoti replaces the whole object on update, so partial writes would otherwise erase data). Only the provided fields change. Known limitation: Zenoti has no conditional-write support, so a concurrent edit between the read and the write can be overwritten — avoid parallel updates to the same guest.
| Name | Type | Req | Description |
|---|---|---|---|
| date_of_birth | string | – | YYYY-MM-DD |
| string | – | – | |
| first_name | string | – | – |
| gender | string | – | Guest gender (sent to Zenoti as its numeric code) |
| guest_id | string | yes | Guest GUID |
| last_name | string | – | – |
| mobile_country_code | integer | – | International dialing code (1 = US/Canada). Defaults to the existing value, else 1. |
| mobile_number | string | – | Digits only, no country prefix |
No output schema declared.
No examples provided.
zenoti-invoices-close Close invoice ~49
Close an invoice. Zenoti only allows closing after the balance is zero (fully paid). This is a financial finalization — use deliberately.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice GUID |
No output schema declared.
No examples provided.
zenoti-invoices-confirm-visit Confirm visit (via invoice) ~74
Mark an appointment visit as confirmed (or undo that) using the booking's invoice id. Despite the URL, this is a scheduling status change, not a financial operation.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice GUID of the booking |
| undo | boolean | – | Set true to un-confirm the visit |
No output schema declared.
No examples provided.
zenoti-invoices-email Email invoice/receipt ~37
Email the invoice (receipt/confirmation) to the guest's email on file.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice GUID |
No output schema declared.
No examples provided.
zenoti-invoices-get Get invoice details ~106
Retrieve an invoice with its line items and payments. invoice_item_id values from here are needed for rescheduling.
| Name | Type | Req | Description |
|---|---|---|---|
| include_appointments | boolean | – | Expand linked appointments (default false) |
| include_dues | boolean | – | Expand dues and fees / outstanding balance (default false) |
| include_items | boolean | – | Expand line items (default true) |
| include_transactions | boolean | – | Expand payments/transactions (default true) |
| invoice_id | string | yes | Invoice GUID |
No output schema declared.
No examples provided.
zenoti-invoices-pay-card Charge card on file ~116
Charge the guest's saved card for an invoice via Zenoti online payments. FINANCIAL ACTION: this moves real money — confirm with the operator before calling. The documented body is {tip_amount, source}; source defaults to 1.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice GUID |
| payload | object | – | Extra/override fields merged into the request body |
| source | integer | – | Zenoti payment source code (default 1) |
| tip_amount | number | – | Tip amount (default 0) |
No output schema declared.
No examples provided.
zenoti-invoices-pay-custom Record custom/cash payment ~144
Record a payment on an invoice using a custom payment method — this is also how CASH is recorded (Zenoti has no cash-specific endpoint). FINANCIAL ACTION: confirm amount with the operator first. Zenoti does not publicly document this body; amount is sent as "amount" and extra org-specific fields can be passed via payload. If the API rejects the shape, the error will say what is missing.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Payment amount |
| invoice_id | string | yes | Invoice GUID |
| payload | object | – | Extra/override fields merged into the request body (e.g. custom_payment_id) |
| tip_amount | number | – | – |
No output schema declared.
No examples provided.
zenoti-reports-collections Collections report ~156
Collections (money received) report for a center over a date range of at most 7 days, optionally with individual transactions and employee tips. Note: Zenoti marks this report API as deprecated — figures may not reconcile with the newer in-UI sales reports; treat results as indicative. Date range is capped at 7 days by Zenoti (query longer periods in chunks).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| end_date | string | – | YYYY-MM-DD. Defaults to start_date. Max 7 days after start_date. |
| include_employee_tips | boolean | – | – |
| include_transactions | boolean | – | – |
| start_date | string | yes | YYYY-MM-DD |
No output schema declared.
No examples provided.
zenoti-reports-sales Sales report ~163
Sales report for a center over a date range of at most 7 days (what was sold: services, products, memberships, packages). item_type and status filters are optional Zenoti codes. Note: Zenoti marks this report API as deprecated — figures may not reconcile with the newer in-UI sales reports; treat results as indicative. Date range is capped at 7 days by Zenoti (query longer periods in chunks).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| end_date | string | – | YYYY-MM-DD. Defaults to start_date. Max 7 days after start_date. |
| item_type | string | – | – |
| start_date | string | yes | YYYY-MM-DD |
| status | string | – | – |
No output schema declared.
No examples provided.
zenoti-services-get Get service details ~52
Full details of one service at a center (pricing, duration, add-ons).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| service_id | string | yes | Service GUID |
No output schema declared.
No examples provided.
zenoti-services-list List services ~90
List services offered by a center, paginated (size max 100). Returns compact rows (id, code, name, duration, price) by default; set verbose for full objects.
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| page | integer | – | – |
| size | integer | – | – |
| verbose | boolean | – | Return full raw service objects. |
No output schema declared.
No examples provided.
zenoti-therapists-list List therapists ~84
List therapists of a center. Pass service_id to list only therapists qualified to perform that service (including service pricing per therapist).
| Name | Type | Req | Description |
|---|---|---|---|
| center_id | string | – | Defaults to ZENOTI_CENTER_ID |
| page | integer | – | – |
| service_id | string | – | Filter to therapists who can perform this service |
| size | integer | – | – |
No output schema declared.
No examples provided.
What is the com.jamesrosingmd/zenoti MCP server?
com.jamesrosingmd/zenoti is an MCP server listed in the public MCP registry as com.jamesrosingmd/zenoti. MCP server for Zenoti spa/wellness/medspa, guests, appointments, bookings, invoices. This page covers its npm package (zenoti-mcp-server).
Is the com.jamesrosingmd/zenoti MCP server safe to use?
com.jamesrosingmd/zenoti scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 27 September 2026. It declares no install or post-install scripts. 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 com.jamesrosingmd/zenoti MCP server expose?
com.jamesrosingmd/zenoti exposes 37 tools: zenoti-centers-list, zenoti-services-list, zenoti-services-get, zenoti-therapists-list, zenoti-employee-schedules, and 32 more. Their descriptions and schemas cost roughly 3,626 tokens of context every time the server is loaded.
Is the com.jamesrosingmd/zenoti MCP server still maintained?
com.jamesrosingmd/zenoti is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the com.jamesrosingmd/zenoti MCP server under?
com.jamesrosingmd/zenoti declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.