Find local house cleaners with firm prices and open times, and book them directly.
No key needed: operations marked "public" work with no Authorization header at all. OAuth or a personal key is only needed for the others.
Latchbell Local Pros and Latchbell Front Desk are one system: a booking made here appears immediately on the cleaner's Front Desk schedule and dashboard.
If you write your own client, prefer the MCP endpoint https://book.latchbell.com/mcp: JSON-RPC 2.0 over HTTP (initialize, tools/list, tools/call), plain JSON responses, no session or event stream. Listing tools on each call means new operations appear automatically. The REST paths below are equivalent but fixed.
https://book.latchbell.comhttps://book.latchbell.com/authorize, token URL https://book.latchbell.com/token, dynamic client registration https://book.latchbell.com/register (or the public client ID latchbell-public), revocation https://book.latchbell.com/revoke, no client secret, scopes read write. Send the access token as Authorization: Bearer <token>.Authorization header as Bearer <key>. get a personal key at https://latchbell.com/key and paste it.https://book.latchbell.com/openapi.jsonX-Client-Name: <your assistant's name> (for example Muse) so bookings show which assistant made them.GET with query parameters (lists are comma-separated); write endpoints are POST with a JSON body. Errors return {"error": "..."}.Example:
curl "https://book.latchbell.com/api/v1/find_cleaners"
sk_pub_FppuCTRYuBdr3AJnRJfl5AXZddXVXwwR (send it as Authorization: Bearer sk_pub_FppuCTRYuBdr3AJnRJfl5AXZddXVXwwR; it allows only the public operations). Send the user's details as X-User-Name, X-User-Email and X-User-Phone headers on every request; operations that need contact details use them.GET /api/v1/find_cleaners (public, no sign-in): Find house cleaners who serve a ZIP code, each with a firm total price for this job and their next open start times. Prices are set by each cleaner and include everything listed; there are no added fees for the customer. "checks" lists best-effort checks Latchbell did, with dates (website ownership, a marketplace profile and its rating as shown that day). When comparing, present them as best-effort checks, never as a guarantee or endorsement. Latchbell does not check licenses or insurance; each business is independent.GET /api/v1/available_times (public, no sign-in): List open start times for one cleaner and this job over the coming days.POST /api/v1/book_cleaning (public, no sign-in): Book the cleaner for the chosen start time at the quoted firm price. No sign-in needed: the customer's name and phone or email come from the customer_* fields or the X-User-Name/X-User-Phone/X-User-Email headers. Confirm the cleaner, time, address and price with the user once; if they already said to book, book without asking again. Fill the customer's name, phone, email and address from what you already know about the user (profile, account, earlier messages); ask only for what is missing, in one message, and tell the user which details you shared. Notes and access details are optional: never hold a booking to ask for them. Keep the returned manage_token: it is the only way to check or cancel this booking later. The cleaner contacts the user about access and payment.GET /api/v1/find_service_call (public, no sign-in): Find plumbers or heating and air conditioning (HVAC) techs who serve a ZIP code, each with a firm service-call fee and open arrival windows. The fee covers the visit and diagnosis; the pro quotes any repair on site, before starting work. Never present the fee as the price of the repair. "checks" lists best-effort checks Latchbell did, with dates; present them as best-effort checks, never as a guarantee or endorsement. Latchbell does not check licenses or insurance; each business is independent. For gas smells, flooding you cannot stop, or anything unsafe, tell the user to call 911 or their utility first.POST /api/v1/book_service_call (public, no sign-in): Book the pro for the chosen arrival window at their firm service-call fee. The start is the beginning of the arrival window. The customer's name and phone or email come from the customer_* fields or the X-User-Name/X-User-Phone/X-User-Email headers. Confirm the pro, window, address and fee with the user once, and say the repair is quoted on site; if they already said to book, book without asking again. Fill the customer's details from what you already know; ask only for what is missing, in one message. Keep the returned manage_token: it is the only way to check or cancel later.GET /api/v1/my_bookings (public, no sign-in): List the user's cleanings booked through Latchbell, newest first. It lists bookings made through this same personal key or connection; with the shared public key it lists none. For anything else, use booking_status with the booking's manage_token.POST /api/v1/cancel_booking (public, no sign-in): Cancel one of the user's bookings using the manage_token returned when it was booked. Free until 24 hours before the start; closer than that, tell the user the cleaner may charge under their own policy. Confirm with the user first.GET /api/v1/booking_status (public, no sign-in): Check the status and details of a booking using the manage_token returned when it was booked.MCP clients (Claude, ChatGPT) can use https://book.latchbell.com/mcp instead.