# Zenbooker MCP Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## Zenbooker MCP

Manage service appointments, customers, invoices and booking availability in Zenbooker

- Record: https://musedirectory.ai/connector/zenbooker-mcp
- Category: Productivity
- Developer: usefulapi (https://usefulapi.io/zenbooker/)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 274ms, checked 2026-10-29T18:01:49Z
- Endpoint: https://zenbooker.usefulapi.io/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-10-29T18:01:49Z)
- Source: Found in the official MCP Registry (io.usefulapi/zenbooker) https://registry.modelcontextprotocol.io/v0/servers?search=io.usefulapi%2Fzenbooker

Connect to Zenbooker to read and manage jobs, customers, invoices, recurring bookings and timeslots. Add customer notes and check service area coverage. Requires a Zenbooker account.

Example request: "Show me all appointments scheduled for tomorrow and add a note to the morning job about the customer's special request."

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use Zenbooker MCP to help me. It is a free service with an MCP server at https://zenbooker.usefulapi.io/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- zenbooker_list_jobs: List jobs (booked appointments), by start time by default, with filters: customer id, assigned team member id, territory id, recurring booking id, status, canceled flag, creation time and scheduled start window. Returns { results, count, has_more, next_cursor }; pass next_cursor 
- zenbooker_get_job: One job by id: appointment time, status, customer, service address, services and fields, assigned providers, notes and invoice summary. GET /v1/jobs/{id}.
- zenbooker_add_job_note: WRITE: add an internal note (text) to a job. Notes are appended, never replaced, and cannot be deleted through this server, so check the job first. POST /v1/jobs/{id}/notes.
- zenbooker_list_recurring_bookings: List recurring bookings (repeating job series), by status (active or canceled), customer id, assigned team member id, territory id or creation time. Max 40 per page. Returns { results, count, has_more, next_cursor }. GET /v1/recurring.
- zenbooker_get_recurring_booking: One recurring booking by id: first job date, job count, time slot, status, territory, service, pricing and its job ids. GET /v1/recurring/{id}.
- zenbooker_list_customers: List or search customers by name, email or phone, by creation time, or by default address near a place (location + radius in miles). Returns { results, count, has_more, next_cursor }. GET /v1/customers.
- zenbooker_get_customer: One customer by id: contact details, notes, addresses, job and recurring booking ids and linked Stripe customer. GET /v1/customers/{id}.
- zenbooker_create_customer: WRITE: create a new customer record in Zenbooker (name required; phone and email optional). It does not look for an existing customer, so search with zenbooker_list_customers first to avoid duplicates. POST /v1/customers.
- zenbooker_list_invoices: List invoices, optionally by status (draft, unpaid, partial_paid, paid, void), customer id, territory id or creation time. Each invoice has line items, totals, amount paid and due and its transactions. Returns { results, count, has_more, next_cursor }. GET /v1/invoices.
- zenbooker_get_invoice: One invoice by id: recipient, line items, discounts, tax, totals, amount paid and due, status and transactions. GET /v1/invoices/{id}.
- zenbooker_list_transactions: List payment transactions, optionally by type (stripe_payment, external_transaction), payment method, status (succeeded, failed, voided), customer id, territory id, creation time or payment date. Returns { results, count, has_more, next_cursor }. GET /v1/transactions.
- zenbooker_get_transaction: One payment transaction by id: status, type, method, amount, invoice and customer ids, Stripe references. GET /v1/transactions/{id}.
- zenbooker_list_services: List the services a business offers, with pricing method, base price and duration, option sections and recurring frequencies. GET /v1/services.
- zenbooker_get_service: One service by id: pricing, duration, option sections and their options. GET /v1/services/{id}.
- zenbooker_list_territories: List the service territories (areas a business serves) with timezone, service area, providers and operating hours. Use the ids to filter jobs and invoices or to look up time slots. GET /v1/territories.
- zenbooker_get_territory: One service territory by id. GET /v1/territories/{id}.
- zenbooker_list_team_members: List team members (staff and service providers) with role, status, assigned territories, skill tags and work hours. Use the ids to filter jobs by assigned provider. GET /v1/team_members.
- zenbooker_get_team_member: One team member by id: contact details, role, status, territories, skill tags and work hours. GET /v1/team_members/{id}.
- zenbooker_list_service_requests: List incoming service requests (booking requests and quote requests) with status, customer, territory, duration, requested dates, services and pricing. Returns { results, count, has_more, next_cursor }. GET /v1/service_requests.
- zenbooker_check_service_area: Check whether a location is inside the business's service area: returns in_service_area, the matching territory and other territories that serve it (or the closest territory when it is outside every area). Give a postal code, an address, or lat + lng. GET /v1/scheduling/service_a
- zenbooker_get_timeslots: Available booking time slots for a service territory, grouped by day (days[].timeslots[] with start, end and id). Needs the territory id (zenbooker_list_territories or zenbooker_check_service_area) and the service duration in minutes. GET /v1/scheduling/timeslots.

Screening checks:
- MCP handshake: pass (Answered in 274ms)
- Domain against threat feeds (Cloudflare security DNS): pass (zenbooker.usefulapi.io, usefulapi.io not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (21 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (No redirects off the domain)
- AI review of purpose and tool behavior: pass (No concerns)
