Skip to main content

LobbyStack

LobbyStack runs an AI receptionist that answers a business’s phone calls and website chat. The LobbyStack MCP server lets you work on that business’s data for the owner. Each connection sees one business. The permissions the owner approved (or the API key’s scopes) decide which tools you have, so a tool listed here may be missing from your session.

Before you act

  • Call get_business first. It gives you the business timezone, the opening hours and the booking_mode.
  • Every tool returns times in UTC (ISO 8601). Convert them to the business time zone before you show them. Send times back unchanged.
  • Confirm with the owner before you book, cancel, reschedule or replace opening hours. Repeat back the service, the local date and time, and the customer.
  • Never invent ids. Take every *_id from a previous tool result.

Tools

List tools return { data, next_cursor, has_more }. When has_more is true, call again with cursor set to next_cursor.

Workflows

Find a caller

  1. If you have a phone number, call search_contacts with phone in E.164 format, such as +14165550134.
  2. Otherwise search by name. The match ignores case and accepts part of the name.
  3. If several contacts match, show them and ask which one. Use list_calls or list_appointments to tell them apart.

Check and book a slot

  1. Call get_business and check that booking_mode is instant. If it isn’t, stop and tell the owner (see below).
  2. Call list_services and pick the service the owner named.
  3. Call check_availability with service_id and start_date as YYYY-MM-DD in the business time zone. Add end_date for a range of up to 7 days. If the customer wants a particular person, get their id from list_staff and pass it as staff_id here and to book_appointment.
  4. Offer a few times in local time. When the owner picks one, call book_appointment with that slot’s starts_at unchanged, plus contact_id or contact_phone.
  5. Set sms_consent to true only if the owner says the customer agreed to texts.
  6. Send an idempotency_key (any unique string). If the call times out, retry with the same key; you get the first booking back instead of a duplicate.
To reschedule, run check_availability for the appointment’s service_id, then call reschedule_appointment. The staff member stays the same unless you pass staff_id; check availability with that staff_id first. To see one customer’s bookings, call list_appointments with their contact_id.

Read yesterday’s missed calls

  1. Call get_business for the time zone.
  2. Work out yesterday’s local midnight and today’s local midnight, with their UTC offset, for example 2026-09-26T00:00:00-04:00 and 2026-09-27T00:00:00-04:00.
  3. Call list_calls with started_after and started_before set to those times. Page through with cursor if has_more is true.
  4. Calls with outcome message_taken, booking_incomplete or none are the ones that may need a follow-up. appointment_booked means the receptionist handled it.
  5. Call list_messages with status open for the callbacks the team still owes. Match messages to calls with call_id.
  6. Call get_call only for the calls you need to explain. Transcripts can be long.

Update opening hours

  1. Call get_business and read hours.
  2. Change only the days the owner mentioned. Keep the others as they are.
  3. Call update_business_hours with the full week. Any day you leave out becomes closed.
  4. Times are 24-hour HH:MM in the business time zone. Use 24:00 for midnight.

Add an FAQ

Call add_knowledge with type faq, a question as a caller would ask it, and a factual answer. For longer material such as a price list or a policy, use type text with title and content. Write facts about the business, not instructions to the receptionist. Don’t add anything the owner didn’t give you.

Booking mode

book_appointment and reschedule_appointment fail with booking_requires_confirmation in request mode and booking_disabled in off mode. Cancelling works in every mode.

Errors

A failed tool returns a result marked as an error whose text is JSON: { "error": { "code": "...", "message": "..." } }. If a tool you need is missing, the connection lacks its permission. Tell the owner which scope it needs: they can reconnect and allow it, or create an API key with it in Settings > API keys.