Microsoft Bookings Appointments
For salons, spas and clinics that take bookings through Microsoft 365: see the day's calendar, check which staff are free, book a customer into a service, reschedule or cancel with a message, and keep the customer list current in Microsoft Bookings via Graph.
Connect this API to an AI agent Browse all specs
What you can do with Microsoft Bookings Appointments via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /solutions/bookingBusinesses |
listBookingBusinesses | List the Bookings calendars (businesses) you can access |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id} |
getBookingBusiness | Get a business's hours, address and booking settings |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/services |
listServices | List the services customers can book, with duration and price |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/staffMembers |
listStaffMembers | List staff members and their roles |
| POST | /solutions/bookingBusinesses/{bookingBusiness-id}/getStaffAvailability |
getStaffAvailability | Check when given staff members are free or busy |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/calendarView |
listCalendarView | List appointments between a start and end time |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/appointments |
listAppointments | List all appointments of a business |
| POST | /solutions/bookingBusinesses/{bookingBusiness-id}/appointments |
createAppointment | Book a customer into a service with a staff member |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/appointments/{bookingAppointment-id} |
getAppointment | Get one appointment |
| PATCH | /solutions/bookingBusinesses/{bookingBusiness-id}/appointments/{bookingAppointment-id} |
updateAppointment | Reschedule or change an appointment |
| POST | /solutions/bookingBusinesses/{bookingBusiness-id}/appointments/{bookingAppointment-id}/cancel |
cancelAppointment | Cancel an appointment and message the customer |
| GET | /solutions/bookingBusinesses/{bookingBusiness-id}/customers |
listCustomers | List the business's customers |
| POST | /solutions/bookingBusinesses/{bookingBusiness-id}/customers |
createCustomer | Add a new customer |
Authentication
microsoftOAuth
OAuth 2.0
Scopes: https://graph.microsoft.com/Bookings.Read.All https://graph.microsoft.com/BookingsAppointment.ReadWrite.All offline_access
How to get a credential
- Sign in to the Microsoft Entra admin center (entra.microsoft.com) with an account in the Microsoft 365 tenant that uses Bookings.
- Go to App registrations → New registration, choose the supported account types and add the VX Agents redirect URI shown on the credential form (platform Web).
- Under Certificates & secrets, create a client secret and copy its value.
- Under API permissions → Microsoft Graph → Delegated, add the scopes below (an admin may have to grant consent).
- Enter the Application (client) ID and secret in VX Agents and sign in with a user who is a staff member or admin of the Bookings calendar.
Permissions used
| Scope | Operations |
|---|---|
| Bookings.Read.All | listBookingBusinesses, getBookingBusiness, listServices, listStaffMembers, getStaffAvailability, listCalendarView, listAppointments, getAppointment, listCustomers |
| BookingsAppointment.ReadWrite.All | createAppointment, updateAppointment, cancelAppointment, createCustomer |
| offline_access | refresh tokens |
Common errors
- 401 Unauthorized: the token expired; reconnect the credential.
- 403 Forbidden: consent missing for a scope above, or the signed-in user is not a member of that Bookings business.
- 400 Bad Request: a date-time without
timeZone, orstart/endmissing onlistCalendarView. - 429 Too Many Requests: Graph throttling; wait for
Retry-After.
Store it as a VX Agents OAuth2 credential.
Usage guide
Setup
- Credential: Microsoft identity OAuth2 (authorization code) with
Bookings.Read.All,BookingsAppointment.ReadWrite.Allandoffline_access. Sign in as a staff member or admin of the Bookings calendar. - Worth pinning:
bookingBusiness-id(fromlistBookingBusinesses; it looks like an email address, e.g.[email protected]).
Book, reschedule or cancel
listBookingBusinesses→ pick the business;getBookingBusinessfor its business hours and time zone.listServicesfor service ids, durations and prices;listStaffMembersfor staff ids.getStaffAvailabilitywithstaffIdsandstartDateTime/endDateTimeobjects ({"dateTime": "2026-10-20T09:00:00", "timeZone": "Pacific Standard Time"}) to find free slots.listCalendarViewwithstartandend(ISO 8601, e.g.2026-10-20T00:00:00Z) to see what is already booked that day.listCustomersto find the customer;createCustomerwithdisplayNameandemailAddressif they are new. Send"@odata.type": "#microsoft.graph.bookingCustomer".createAppointmentwithserviceId,staffMemberIds,startDateTime,endDateTimeandcustomers: [{"@odata.type": "#microsoft.graph.bookingCustomerInformation", "customerId": "...", "name": "...", "emailAddress": "..."}].- Reschedule with
updateAppointment(new start/end); cancel withcancelAppointmentand acancellationMessagethe customer receives.
Always confirm with the user before createAppointment, updateAppointment, cancelAppointment or createCustomer: they notify customers and change the shared calendar.
Good to know
- Date-times on appointments and availability are
{dateTime, timeZone}objects; use the business's time zone. listCalendarViewrequires bothstartandend; prefer it overlistAppointmentsfor a date range.- Supports OData
$top,$skip,$filter,$selecton list calls; follow@odata.nextLinkfor more pages. priceandpriceTypeon an appointment default from the service.- Bookings needs a Microsoft 365 Business Standard/Premium (or similar) licence.
- On 429, wait for
Retry-After.
Source: Microsoft Graph Bookings API reference (https://learn.microsoft.com/en-us/graph/api/resources/booking-api-overview?view=graph-rest-1.0), checked 2026-10-19.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Microsoft Bookings Appointments” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.