{"name":"com.jamesrosingmd/zenoti","slug":"jamesrosingmd-zenoti","title":null,"description":"MCP server for Zenoti spa/wellness/medspa — guests, appointments, bookings, invoices","url":"https://mcp.market/server/jamesrosingmd-zenoti","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":18,"stars":0,"forks":0,"downloads_week":37,"last_push_at":"2026-08-07T18:38:16.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/tacit-code/zenoti-mcp-server","website":null,"version":"1.1.0","remotes":[],"packages":[{"registryType":"npm","identifier":"zenoti-mcp-server","version":"1.1.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Zenoti API key from Admin → Settings → Apps (backend app)","isRequired":true,"format":"string","isSecret":true,"name":"ZENOTI_API_KEY"},{"description":"Zenoti API base URL (default https://api.zenoti.com)","format":"string","name":"ZENOTI_API_URL"},{"description":"Default center GUID used when tools omit center_id (recommended)","format":"string","name":"ZENOTI_CENTER_ID"}]}],"tools":[{"name":"zenoti-appointments-cancel","description":"Cancel a service booking. Zenoti cancels by INVOICE id (each confirmed booking has","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-checkin","description":"Mark a guest as arrived/checked in. Requires the appointment GROUP id","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-get","description":"Retrieve full details of one appointment by its appointment_id (not group id).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-list","description":"List appointments of a center for a date range. Returns compact rows by default","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-noshow","description":"Mark an appointment as no-show. Requires the appointment GROUP id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-progress","description":"Update service progress for one appointment (start / open / complete). Uses the","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-reschedule","description":"Start rescheduling an existing booking to a new date: creates a reschedule booking","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-appointments-undo-checkin","description":"Revert a checked-in appointment to its prior status. Requires the appointment GROUP id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-availability-slots","description":"Find open appointment slots for a service on a date. Creates a Zenoti booking draft","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-booking-confirm","description":"Confirm a reserved booking. This finalizes the appointment and creates the invoice","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-booking-reserve","description":"Hold a specific slot on a booking draft (from zenoti-availability-slots). slot_time","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-centers-list","description":"List all centers (locations) of the organization. Use this to find the center GUID","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-employee-schedules","description":"Work schedules of center employees for a date range — who is on shift when. Use this","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-feedback-submit","description":"Insert guest feedback collected outside Zenoti (e.g. a survey tool) for an","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-forms-get","description":"Retrieve submitted form data for an appointment. Uploaded files, signatures, and","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-forms-list","description":"List the forms attached to an appointment (uses appointment_id, not group id).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guest-forms-list","description":"List forms on a guest profile (intake/consent forms not tied to one appointment).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-appointments","description":"Appointment history (and upcoming appointments) for one guest, paginated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-create","description":"Create a new guest profile in a center. Provide at least an email or mobile number","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-get","description":"Retrieve a guest profile by guest GUID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-memberships","description":"A guest's memberships (status, credits, dues).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-notes-add","description":"Add a note to a guest profile.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-notes-list","description":"List notes on a guest profile (clinical notes, profile alerts). Set","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-packages","description":"A guest's purchased packages/series (e.g. a 6-session laser course) with remaining","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-search","description":"Search guests by any combination of name, email, phone, username, code, zip, or tags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-guests-update","description":"Update fields on a guest profile. Fetches the current profile first and merges your","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-close","description":"Close an invoice. Zenoti only allows closing after the balance is zero (fully paid).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-confirm-visit","description":"Mark an appointment visit as confirmed (or undo that) using the booking's invoice id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-email","description":"Email the invoice (receipt/confirmation) to the guest's email on file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-get","description":"Retrieve an invoice with its line items and payments. invoice_item_id values from","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-pay-card","description":"Charge the guest's saved card for an invoice via Zenoti online payments. FINANCIAL","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-invoices-pay-custom","description":"Record a payment on an invoice using a custom payment method — this is also how","write_action":true,"price_micros":0,"input_schema":null},{"name":"zenoti-reports-collections","description":"Collections (money received) report for a center over a date range of at most 7","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-reports-sales","description":"Sales report for a center over a date range of at most 7 days (what was sold:","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-services-get","description":"Full details of one service at a center (pricing, duration, add-ons).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-services-list","description":"List services offered by a center, paginated (size max 100). Returns compact rows","write_action":false,"price_micros":0,"input_schema":null},{"name":"zenoti-therapists-list","description":"List therapists of a center. Pass service_id to list only therapists qualified to","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-23T21:42:55.819Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T21:42:55.793Z","components":{"code":{"score":25,"max":25,"notes":["12 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 47 days ago"]},"identity":{"score":6,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"zenoti-mcp-server","version":"1.1.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-08-07T18:37:47.231Z","repositoryUrl":"git+https://github.com/tacit-code/zenoti-mcp-server.git","weeklyDownloads":37}],"repo":{"found":true,"owner":"tacit-code","repo":"zenoti-mcp-server","archived":false,"pushedAt":"2026-08-07T18:38:16Z","stars":0,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/161062237?v=4","ownerCreatedAt":"2024-02-23T16:48:47Z","license":"MIT"},"icon":{"url":"https://www.jamesrosingmd.com/icon.svg?8c8dd6fabadf9e58","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":37,"license":"MIT","lastPushAt":"2026-08-07T18:38:16.000Z","score":18}}}},"grade_history":[],"reviews":[]}