NestDaddy

nisebookings

com.nisebookings/booking · v1.0.0

Operate a nisebookings account: catalogue, staff schedules, free slots, customers, appointments

Connect Remote server

Terminal
claude mcp add --transport http booking https://app.nisebookings.com/api/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
~/.cursor/mcp.json
{
  "mcpServers": {
    "booking": {
      "url": "https://app.nisebookings.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://app.nisebookings.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://app.nisebookings.com/api/mcp

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools 47 found in our last check

  • whoami

    The tenant (id, name, timeZone, currency), the scopes of the API key in use and the plan (id, label, bookingsPerMonth, usedThisMonth, level ok|warn|full). Works with any valid key. Call first to learn which tools your key may use and, when writing fails with 402 plan_limit, what…

  • create_project

    Create a new account (project) for a client, owned by this account's first owner — the agency case: one login or key configures several client sites. The new account starts on Free; the allowance is the highest `projects` among the plans of the accounts that owner owns (Free/Pro…

  • list_services

    All services of the tenant (simple, compound, collaborative, package), ordered by position. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • get_service

    One service by id. Scope catalog:read.

  • create_service

    Create a service; missing fields get admin defaults (type simple, duration 60, deposit 100%, taxRate 21). `type` cannot change later. A service is bookable once visibility is public and a public staff member with a schedule offers it (assign_staff_service). Scope catalog:write.

  • update_service

    Partial update: send only the fields that change (merged over current values). `type` is fixed. Scope catalog:write.

  • list_categories

    Service categories, ordered by position. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • list_staff

    All staff members, including archived ones (visibility = archive). Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • get_staff

    One staff member by id. Scope catalog:read.

  • create_staff

    Create a staff member; the weekly schedule starts as a copy of the business hours. Link services with assign_staff_service afterwards. Scope catalog:write.

  • update_staff

    Partial update of a staff member. visibility "archive" hides them (staff are never deleted). Scope catalog:write.

  • get_staff_schedule

    Weekly working hours of a staff member: {days: [{weekday 1=Mon…7=Sun, start, end, breaks}]}. A missing weekday is a day off. Scope catalog:read.

  • set_staff_schedule

    Replace the WHOLE week of a staff member (not a merge): send every working day; a missing weekday becomes a day off. end > start, breaks inside the day and not overlapping. Read it first with get_staff_schedule. Scope catalog:write.

  • list_staff_services

    Services this staff member offers, with per-link price, capacityMin/Max and deposit. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • assign_staff_service

    Let a staff member offer a service (create or update the link). Missing fields keep current link values, or for a new link the service price/capacity and deposit null (= service deposit). Required before a staff member can be booked for the service. Scope catalog:write.

  • unassign_staff_service

    Stop a staff member offering a service. Existing appointments stay. Scope catalog:write.

  • get_business_hours

    Company opening hours {days: [{weekday 1=Mon…7=Sun, start, end}]}; a missing weekday = closed. New staff copy these. Scope settings:read.

  • set_business_hours

    Replace ALL business hours (not a merge): one entry per open weekday, no breaks; a missing weekday = closed. Does not change existing staff schedules. Scope settings:write.

  • list_holidays

    Days off. staffId filters: a staff id, or "company" for company-wide days; omit for all. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • add_holiday

    Add a day off. kind: once | yearly (same date every year) | exception (a working day despite company days off). staffId null/omitted = company-wide. Scope catalog:write.

  • delete_holiday

    Remove a day off by id (from list_holidays). Scope catalog:write.

  • get_settings

    All admin-editable tenant settings, plus read-only id, publicKey (for the widget / public API) and currency. Scope settings:read.

  • update_settings

    Partial update: only fields present are validated and written; returns all settings. id, publicKey and currency are read-only. The Mollie key is set via api_request PUT /settings/mollie-key {key} (scope payments:write) before payMollieEnabled: true. Scope settings:write.

  • list_customers

    Customers, optionally searched with q (name, e-mail or phone). Scope customers:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • get_customer

    One customer by id. Scope customers:read.

  • create_customer

    Create a customer. email is unique per tenant: 409 when it exists, so search with list_customers first. Scope customers:write.

  • update_customer

    Partial update of a customer. Scope customers:write.

  • list_appointments

    The calendar: appointments with their bookings and customers. Filter by from/to (ISO date-times; start ≥ from, < to), staffId, serviceId, status (appointments having a booking in that status). Scope bookings:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total…

  • get_appointment

    One appointment with bookings (bookingId, status, persons), customers, extras, series/group ids and meetingUrl. Scope bookings:read.

  • create_appointment

    Book like the admin: one appointment with one booking. Give customerId or customer {name, email, phone}. Without end the service duration is used; without status the tenant default. A day service (rental, durationDays > 0) starts at the local midnight (00:00) and without end spa…

  • update_appointment

    Move or change an appointment: send only what changes (start, end, staffId, serviceId, internalNote). start without end keeps the service duration (for a day service: its number of days); besides, a day service starts at the local midnight (00:00). scope following|series shifts…

  • delete_appointment

    Delete an appointment and its bookings. notify: true first sets approved bookings to cancelled and pending ones to rejected and mails the customers. To cancel but keep the record, use update_booking status cancelled instead. scope this|following|series for recurring series. Scop…

  • add_customer_to_appointment

    Add another booking (customer) to an existing group appointment. Give customerId or customer {name, email, phone}. 409 capacity_exceeded when it does not fit. Response includes the new bookingId. Scope bookings:write.

  • update_booking

    Change a booking's status (approve, cancel, reject, done…) and/or persons. id is the bookingId (from create_appointment or get_appointment), not the appointment id. The status also applies to other parts of the same compound/collaborative group; scope following|series applies it…

  • find_slots

    Bookable times for a service, day by day, exactly as the booking widget sees them (respects schedules, days off, existing bookings, capacity, minimum notice and booking horizon). Returns {days: [{date, slots: [{start, time, staffId, state?}]}], hasMore}; days without free times…

  • list_payments

    Payments, newest first. Filters: status (pending|completed|rejected|refunded), type (local|free|mollie), customerId. Scope payments:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • get_payment

    One payment with its items and bookings. Mark a local payment paid / refund it via api_request POST /payments/{id}/complete or /refund (payments:write). Scope payments:read.

  • list_outbox

    The e-mail log, newest first: what was sent or queued (id, status, toEmail, toName, subject, text, html, createdAt, sentAt, lastError). On a sandbox nothing is delivered: rows end as status "suppressed", read them here to verify confirmations. Filters: status (pending|sending|se…

  • list_events

    Ticketed events ordered by startAt. Ticket types, attendees and event staff are under /events/{id}/… via api_request. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • list_coupons

    Coupons (discount codes) ordered by code. Scope catalog:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • generate_coupons

    Create up to 100 unique coupon codes from a mask: every * becomes one of 0-9A-Z (e.g. "SUMMER-****"). The other fields are the template for each coupon; discount (percent) or deduction must be > 0. 422 on mask when it is used up. Returns {data: coupons}. Single coupons: api_requ…

  • list_webhooks

    Webhook endpoints (id, url, events, active, description, createdAt, updatedAt); the secret is never returned. Event types with descriptions: api_request GET /webhooks/events. Scope settings:read. Paginated: limit ≤ 100 (default 50), offset; returns {data, total}.

  • create_webhook

    Register a URL that receives signed POSTs (Standard Webhooks: webhook-id, webhook-timestamp, webhook-signature "v1,<base64 HMAC-SHA256>" over "id.timestamp.body" keyed with the base64 part of the secret after whsec_). Payloads are thin ({id, type, createdAt, tenantId, data: ids…

  • delete_webhook

    Delete an endpoint and its delivery log. To pause instead: api_request PATCH /webhooks/{id} {active: false}. New secret: POST /webhooks/{id}/rotate-secret. Scope settings:write.

  • test_webhook

    Queue a `ping` event ({type: "ping", data: {endpointId}}) to the endpoint and send it right away. Returns the delivery (202); check the outcome (status delivered/pending, lastStatus, lastError) with list_webhook_deliveries a second later. Scope settings:write.

  • list_webhook_deliveries

    Delivery log of one endpoint, newest first: id, eventId, type, status (pending|sending|delivered|failed), attempts, nextAttemptAt, lastStatus (HTTP), lastError, createdAt, deliveredAt, payload. Resend one: api_request POST /webhooks/{id}/deliveries/{deliveryId}/retry. Scope sett…

  • api_request

    Any /api/v1 management API call not covered by a dedicated tool. path is relative to /api/v1 (e.g. "/services/<uuid>/extras"), ids in place of {…}; put query parameters in query, the JSON body in body (camelCase). Same scopes and errors as the API: {error: {code, message, fields…

Headers

NameDescription
Authorization
Required, secret
Management API key from Settings → API in the nisebookings admin, sent as a bearer token

Details

Endpointhttps://app.nisebookings.com/api/mcp (Streamable HTTP)
First published13 Oct 2026
Last updated13 Oct 2026
Registry namecom.nisebookings/booking

More finance and crypto servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.