# Microsoft Bookings

```json
{
  "name": "Microsoft Bookings",
  "slug": "microsoft_bookings",
  "url": "https://composio.dev/toolkits/microsoft_bookings",
  "markdown_url": "https://composio.dev/toolkits/microsoft_bookings.md",
  "logo_url": "https://logos.composio.dev/api/microsoft_bookings",
  "categories": [
    "scheduling & booking"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-11-06T07:05:21.732Z"
}
```

![Microsoft Bookings logo](https://logos.composio.dev/api/microsoft_bookings)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Microsoft Bookings MCP or direct API to manage booking businesses, schedule appointments, update customers, and organize services through natural language.

## Summary

Microsoft Bookings is Microsoft's shared scheduling service for businesses, appointments, customers, services, and staff.
It helps teams manage availability and bookings in one place through Microsoft Graph.

## Categories

- scheduling & booking

## Toolkit Details

- Tools: 35

## Images

- Logo: https://logos.composio.dev/api/microsoft_bookings

## Authentication

- **Oauth2**
  - Type: `oauth2`
  - Description: Oauth2 authentication for Microsoft Bookings.
  - Setup:
    - Configure Oauth2 credentials for Microsoft Bookings.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- List upcoming Microsoft Bookings appointments
- Create a new Microsoft Bookings customer
- Update Microsoft Bookings service availability

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `MICROSOFT_BOOKINGS_CANCEL_APPOINTMENT` | Cancel Appointment | Irreversibly cancel an appointment and ask Microsoft Bookings to send the supplied cancellation message to its customers and staff. A successful result confirms that Graph accepted the cancellation, not message delivery. |
| `MICROSOFT_BOOKINGS_CREATE_APPOINTMENT` | Create Appointment | Create an appointment for a service at explicit start and end times, optionally assigning staff and customer details. Microsoft Bookings may send customers a confirmation email; opt_out_of_customer_email requests suppression but does not guarantee non-delivery. |
| `MICROSOFT_BOOKINGS_CREATE_BOOKING_BUSINESS` | Create Booking Business | Create a shared booking business with the supplied display name. The business starts unpublished and can then be configured with the update tool. |
| `MICROSOFT_BOOKINGS_CREATE_CUSTOMER` | Create Customer | Create a saved customer in one booking business with structured contact details. |
| `MICROSOFT_BOOKINGS_CREATE_CUSTOM_QUESTION` | Create Custom Question | Create a text or single-choice intake question for one booking business. |
| `MICROSOFT_BOOKINGS_CREATE_SERVICE` | Create Service | Create a bookable service with a name and default duration, optionally configuring location, price, staff, reminders, questions, and scheduling rules. |
| `MICROSOFT_BOOKINGS_CREATE_STAFF_MEMBER` | Create Staff Member | Add a staff member to one booking business with a role, email, time zone, and optional working schedule. |
| `MICROSOFT_BOOKINGS_DELETE_APPOINTMENT` | Delete Appointment | Permanently delete an appointment without invoking Microsoft Bookings' cancellation-message action. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_DELETE_BOOKING_BUSINESS` | Delete Booking Business | Permanently delete one shared booking business and all of its Microsoft Bookings data. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_DELETE_CUSTOMER` | Delete Customer | Permanently delete one saved customer from a Microsoft Bookings business. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_DELETE_CUSTOM_QUESTION` | Delete Custom Question | Permanently delete one custom intake question from a booking business. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_DELETE_SERVICE` | Delete Service | Permanently delete one service from a Microsoft Bookings business. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_DELETE_STAFF_MEMBER` | Delete Staff Member | Permanently remove one staff member from a Microsoft Bookings business. This operation cannot be undone. |
| `MICROSOFT_BOOKINGS_GET_APPOINTMENT` | Get Appointment | Get one booking appointment, including its service, customers, assigned staff, attendee counts, and UTC start and end times. |
| `MICROSOFT_BOOKINGS_GET_BOOKING_BUSINESS` | Get Booking Business | Get the complete configuration and publication state of one shared booking business. |
| `MICROSOFT_BOOKINGS_GET_CURRENCY` | Get Booking Currency | Get one Microsoft Bookings currency by its ISO currency code. |
| `MICROSOFT_BOOKINGS_GET_CUSTOMER` | Get Customer | Get one saved customer and their contact details from a booking business. |
| `MICROSOFT_BOOKINGS_GET_CUSTOM_QUESTION` | Get Custom Question | Get one custom intake question, including its answer type and available choices. |
| `MICROSOFT_BOOKINGS_GET_SERVICE` | Get Service | Get one service and its duration, pricing, staff, questions, reminders, location, and scheduling configuration. |
| `MICROSOFT_BOOKINGS_GET_STAFF_MEMBER` | Get Staff Member | Get one booking staff member's identity, role, membership state, time zone, working hours, and calendar settings. |
| `MICROSOFT_BOOKINGS_LIST_APPOINTMENTS` | List Appointments | List one Microsoft Graph page of appointments for a booking business. Omit start and end to list the appointments collection, or provide both to list appointments occurring in that inclusive calendar-view range. |
| `MICROSOFT_BOOKINGS_LIST_BOOKING_BUSINESSES` | List Booking Businesses | List shared booking businesses visible to the connected work or school account. Microsoft Graph returns up to 500 results and does not paginate this endpoint. Results contain only each business ID and display name; use search_query to narrow results or Get Booking Business for full details. |
| `MICROSOFT_BOOKINGS_LIST_CURRENCIES` | List Booking Currencies | Return one Microsoft Graph page of the Microsoft Bookings currency catalog with ISO currency IDs and localized symbols. The documented OData controls are passed through, but Graph may accept and ignore them. |
| `MICROSOFT_BOOKINGS_LIST_CUSTOMERS` | List Customers | List saved customers for one booking business, one Microsoft Graph page at a time. |
| `MICROSOFT_BOOKINGS_LIST_CUSTOM_QUESTIONS` | List Custom Questions | List custom intake questions defined for one booking business, one Microsoft Graph page at a time. |
| `MICROSOFT_BOOKINGS_LIST_SERVICES` | List Services | List services offered by one booking business, including duration, pricing, staff, and scheduling defaults, one Microsoft Graph page at a time. |
| `MICROSOFT_BOOKINGS_LIST_STAFF_MEMBERS` | List Staff Members | List staff members configured for one booking business, including roles and working hours, one Microsoft Graph page at a time. |
| `MICROSOFT_BOOKINGS_PUBLISH_BOOKING_BUSINESS` | Publish Booking Business | Publish a booking business's external scheduling page so customers can access it. After publishing, call Get Booking Business to retrieve the resulting public URL. |
| `MICROSOFT_BOOKINGS_UNPUBLISH_BOOKING_BUSINESS` | Unpublish Booking Business | Take a booking business's external scheduling page offline and clear its public URL without deleting the business. |
| `MICROSOFT_BOOKINGS_UPDATE_APPOINTMENT` | Update Appointment | Update an existing appointment's schedule, customers, service, staff, location, notifications, or pricing without cancelling it. The request requires filled and maximum attendee counts plus at least one other appointment field to update. |
| `MICROSOFT_BOOKINGS_UPDATE_BOOKING_BUSINESS` | Update Booking Business | Update supported contact details, hours, currency, business type, address, or scheduling rules without publishing or unpublishing the business. |
| `MICROSOFT_BOOKINGS_UPDATE_CUSTOMER` | Update Customer | Update a saved customer's name, email, phone numbers, or postal addresses in one booking business. |
| `MICROSOFT_BOOKINGS_UPDATE_CUSTOM_QUESTION` | Update Custom Question | Update the text of one custom intake question, optionally changing its answer type or choices. |
| `MICROSOFT_BOOKINGS_UPDATE_SERVICE` | Update Service | Update a service's name, duration, location, pricing, staff, reminders, questions, visibility, or scheduling rules. |
| `MICROSOFT_BOOKINGS_UPDATE_STAFF_MEMBER` | Update Staff Member | Update a booking staff member's identity, role, time zone, working schedule, calendar behavior, or email notifications. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Microsoft Bookings
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["microsoft_bookings"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["microsoft_bookings"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Microsoft Bookings tools with your agent

Send a request, execute the Microsoft Bookings tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "List the booking businesses in my Microsoft Bookings account"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List the booking businesses in my Microsoft Bookings account" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Microsoft Bookings and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["microsoft_bookings"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["microsoft_bookings"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Microsoft Bookings request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Microsoft Bookings tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("List the booking businesses in my Microsoft Bookings account")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List the booking businesses in my Microsoft Bookings account",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Microsoft Bookings Integration

- Supports both Microsoft Bookings MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Microsoft Bookings data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Microsoft Bookings access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Microsoft Bookings
- Scoped, least privilege access to Microsoft Bookings resources
- Full audit trail of agent actions to support review and compliance

## Use Microsoft Bookings with any AI Agent Framework

Choose a framework you want to connect Microsoft Bookings with:

- [ChatGPT](https://composio.dev/toolkits/microsoft_bookings/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/microsoft_bookings/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/microsoft_bookings/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/microsoft_bookings/framework/atomic-agent)

## Related Toolkits

- [Google Calendar](https://composio.dev/toolkits/googlecalendar) - Google Calendar is a time management service for scheduling meetings, events, and reminders. It streamlines personal and team organization with integrated notifications and sharing options.
- [Apaleo](https://composio.dev/toolkits/apaleo) - Apaleo is a cloud-based property management platform for hospitality businesses. It centralizes reservations, billing, and daily operations for smoother hotel management.
- [Appointo](https://composio.dev/toolkits/appointo) - Appointo is an appointment booking platform for Shopify stores. It lets businesses add online scheduling to their websites with zero coding.
- [Bart](https://composio.dev/toolkits/bart) - Bart is the Bay Area Rapid Transit system, providing fast public transportation across the San Francisco Bay Area. It helps commuters and travelers get real-time schedule info, plan routes, and stay updated on service changes.
- [Blue Pillow Hotels & Stays](https://composio.dev/toolkits/bluepillow) - Blue Pillow Hotels & Stays is a hotel and stay discovery platform offering live offers, recommendations, and booking handoff. It helps surface and compare real-time deals and validate bookings for smoother reservations.
- [Bookingmood](https://composio.dev/toolkits/bookingmood) - Bookingmood is commission-free booking software for rental businesses. It lets you manage reservations and sync bookings directly on your website.
- [Booqable](https://composio.dev/toolkits/booqable) - Booqable is a rental software platform for managing inventory, bookings, and reservations. It helps businesses streamline rentals and keep track of every item with ease.
- [Cal](https://composio.dev/toolkits/cal) - Cal is a meeting scheduling platform that offers shareable booking links and real-time calendar syncing. It streamlines the process of finding mutual availability to make scheduling effortless.
- [Calendarhero](https://composio.dev/toolkits/calendarhero) - Calendarhero is a powerful scheduling platform that streamlines your calendar management across multiple services. It helps you efficiently schedule, reschedule, and organize meetings without the back-and-forth.
- [Calendly](https://composio.dev/toolkits/calendly) - Calendly is an appointment scheduling tool that automates meeting invitations, availability checks, and reminders. It helps individuals and teams avoid endless email back-and-forth when booking meetings.
- [Calendly MCP](https://composio.dev/toolkits/calendly_mcp) - Calendly is an appointment scheduling platform that manages event types, availability, and invites. Use it to automate booking, reduce back-and-forth, and surface open times quickly.
- [Check Cherry](https://composio.dev/toolkits/check_cherry) - Check Cherry is a business management platform for photography and event service companies. It helps teams manage leads, bookings, appointments, offerings, payments, and workflows in one place.
- [Cronfree Time Scheduler](https://composio.dev/toolkits/cronfree_time_scheduler) - Cronfree Time Scheduler is an API-based scheduler for recurring webhook calls. Use it to create and remove timezone-aware schedules without running cron.
- [Etermin](https://composio.dev/toolkits/etermin) - eTermin is an online appointment scheduling platform for businesses to manage bookings. It streamlines client appointments, saving time and reducing scheduling conflicts.
- [Evenium](https://composio.dev/toolkits/evenium) - Evenium is an all-in-one platform for managing professional events, from planning to analysis. It helps teams simplify event logistics, boost engagement, and track every detail in one place.
- [Eventee](https://composio.dev/toolkits/eventee) - Eventee is a user-friendly event management platform for mobile and web. It boosts attendee engagement for in-person, virtual, and hybrid events.
- [Eventzilla](https://composio.dev/toolkits/eventzilla) - Eventzilla is an event management platform for creating, promoting, and running events. It streamlines ticketing, registration, and attendee coordination for organizers.
- [GoTable](https://composio.dev/toolkits/go_table) - GoTable is a restaurant management REST API for reservations, tables, guests, offers, availability, and webhooks. Use it to programmatically manage bookings, guest data, offers, and table availability.
- [Humanitix](https://composio.dev/toolkits/humanitix) - Humanitix is a not-for-profit ticketing platform that donates 100% of profits to charity. It empowers event organizers to make social impact with every ticket sold.
- [Ignav Flights](https://composio.dev/toolkits/ignav_flights) - Ignav Flights is a flight search API for airports, fares, itineraries, and booking links. It helps apps compare routes and prices fast, so travelers can find practical options sooner.

## Frequently Asked Questions

### Do I need my own developer credentials to use Microsoft Bookings with Composio?

Yes, Microsoft Bookings requires you to configure your own OAuth credentials. Once set up, Composio handles token storage, refresh, and lifecycle management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
