# How to integrate Bookingmood MCP with Pydantic AI

```json
{
  "title": "How to integrate Bookingmood MCP with Pydantic AI",
  "toolkit": "Bookingmood",
  "toolkit_slug": "bookingmood",
  "framework": "Pydantic AI",
  "framework_slug": "pydantic-ai",
  "url": "https://composio.dev/toolkits/bookingmood/framework/pydantic-ai",
  "markdown_url": "https://composio.dev/toolkits/bookingmood/framework/pydantic-ai.md",
  "updated_at": "2026-05-12T10:03:36.279Z"
}
```

## Introduction

This guide walks you through connecting Bookingmood to Pydantic AI using the Composio tool router. By the end, you'll have a working Bookingmood agent that can create a new booking widget for summer rentals, list all booking widgets configured for your organization, update guest information for a specific booking through natural language commands.
This guide will help you understand how to give your Pydantic AI agent real control over a Bookingmood account through Composio's Bookingmood MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Bookingmood with

- [OpenAI Agents SDK](https://composio.dev/toolkits/bookingmood/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/bookingmood/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/bookingmood/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/bookingmood/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/bookingmood/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/bookingmood/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/bookingmood/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/bookingmood/framework/cli)
- [Google ADK](https://composio.dev/toolkits/bookingmood/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/bookingmood/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/bookingmood/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/bookingmood/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/bookingmood/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/bookingmood/framework/crew-ai)

## TL;DR

Here's what you'll learn:
- How to set up your Composio API key and User ID
- How to create a Composio Tool Router session for Bookingmood
- How to attach an MCP Server to a Pydantic AI agent
- How to stream responses and maintain chat history
- How to build a simple REPL-style chat interface to test your Bookingmood workflows

## What is Pydantic AI?

Pydantic AI is a Python framework for building AI agents with strong typing and validation. It leverages Pydantic's data validation capabilities to create robust, type-safe AI applications.
Key features include:
- Type Safety: Built on Pydantic for automatic data validation
- MCP Support: Native support for Model Context Protocol servers
- Streaming: Built-in support for streaming responses
- Async First: Designed for async/await patterns

## What is the Bookingmood MCP server, and what's possible with it?

The Bookingmood MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Bookingmood account. It provides structured and secure access to your booking management system, so your agent can perform actions like creating widgets, updating bookings, listing organizations, and managing booking records on your behalf.
- Automated booking widget creation: Let your agent generate new, customized booking widgets to embed on your website or share with guests in seconds.
- Efficient booking details management: Update or delete booking details based on guest info, filters, or changing requirements—no manual edits needed.
- Organization and resource overview: List all organizations tied to your Bookingmood account, helping you keep tabs on every property or business unit managed.
- Widget configuration retrieval: Instantly fetch available booking widget configurations, making it easy to review, reuse, or modify existing widgets for different rental scenarios.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `BOOKINGMOOD_CREATE_PRODUCT` | Create Product | Tool to create a new bookable product in the organization. Use this when you need to register a new rental property, accommodation, or bookable item in the system. This action will automatically update your subscription based on the product count. |
| `BOOKINGMOOD_CREATE_SITE_PAGES` | Create Site Pages | Tool to create new site pages. Use when you need to add pages to a site in the organization. |
| `BOOKINGMOOD_BOOKINGMOOD_CREATE_WIDGET` | Create Booking Widget | Tool to create a new booking widget. Use after preparing widget parameters. |
| `BOOKINGMOOD_DELETE_ATTRIBUTES` | Delete Attributes | Tool to delete attributes matching given filters. Use after confirming which attribute records to remove. |
| `BOOKINGMOOD_DELETE_BOOKING_DETAILS` | Delete Booking Details | Tool to delete booking details matching given filters. Use after confirming which booking detail records to remove. |
| `BOOKINGMOOD_DELETE_BOOKINGS` | Delete Bookings | Tool to delete bookings matching given filters. Use when you need to remove bookings from the system. At least one filter parameter is required to prevent accidental deletion of all bookings. |
| `BOOKINGMOOD_DELETE_CALENDAR_EVENT_NOTES` | Delete Calendar Event Notes | Tool to delete calendar event notes matching given filters. Use after confirming which notes to remove. At least one filter parameter is required to prevent accidental bulk deletion. |
| `BOOKINGMOOD_DELETE_CALENDAR_EVENTS` | Delete Calendar Events | Tool to delete calendar events matching given filters. Use after confirming which calendar event records to remove. |
| `BOOKINGMOOD_DELETE_CALENDAR_EVENT_TASKS` | Delete Calendar Event Tasks | Tool to delete calendar event tasks matching given filters. Use after confirming which calendar event task records to remove. |
| `BOOKINGMOOD_DELETE_CAPACITIES` | Delete Capacities | Tool to delete capacities matching given filters. Use when you need to remove capacity records from the system. |
| `BOOKINGMOOD_DELETE_CAPACITY_GROUP_DEPS` | Delete Capacity Group Dependencies | Tool to delete capacity group dependencies matching given filters. Use after confirming which dependency records to remove. |
| `BOOKINGMOOD_DELETE_CAPACITY_GROUPS` | Delete Capacity Groups | Tool to delete capacity groups matching given filters. Use after confirming which capacity group records to remove. |
| `BOOKINGMOOD_DELETE_CONTACT_BOOKINGS` | Delete Contact Bookings | Tool to delete contact bookings matching given filters. Use after confirming which contact booking records to remove. |
| `BOOKINGMOOD_DELETE_CONTACTS` | Delete Contacts | Tool to delete customer contacts from the system. Use after confirming which contacts to remove. Supports filter patterns like email=like.%test.com to delete test contacts. |
| `BOOKINGMOOD_DELETE_COUPON_PRODUCTS` | Delete Coupon Products | Tool to delete coupon product links matching given filters. Use when you need to remove associations between coupons and products. At least one filter parameter is required. |
| `BOOKINGMOOD_DELETE_COUPONS` | Delete Coupons | Tool to delete coupons matching given filters. Use after confirming which coupons to remove. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_DELETE_COUPON_SERVICES` | Delete Coupon Services | Tool to delete coupon service links matching given filters. Use after confirming which coupon-service associations to remove. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_DELETE_COUPON_USES` | Delete Coupon Uses | Tool to delete coupon use records matching given filters. Use after confirming which coupon uses to remove. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_DELETE_EMAIL_TEMPLATES` | Delete Email Templates | Tool to delete email templates matching given filters. Use after confirming which email template records to remove. |
| `BOOKINGMOOD_DELETE_EXTERNAL_CALENDARS` | Delete External Calendars | Tool to delete external calendars by ID. Use when you need to remove an external calendar integration from the system. |
| `BOOKINGMOOD_DELETE_INVOICES` | Delete Invoices | Tool to delete an invoice by its ID. Use when you need to remove an invoice from the system. The API requires a valid UUID and uses PostgREST filter format. |
| `BOOKINGMOOD_DELETE_LINE_ITEMS` | Delete Line Items | Tool to delete line items matching the given filters. Use when you need to remove line items from bookings. Returns the deleted line items. |
| `BOOKINGMOOD_DELETE_LINE_ITEM_TAXES` | Delete Line Item Taxes | Tool to delete line item taxes matching given filters. Use when you need to remove line item tax records from the system. |
| `BOOKINGMOOD_DELETE_PAYMENTS` | Delete Payments | Tool to delete payments matching given filters. Use when you need to remove payments from the system. At least one filter parameter is required to prevent accidental deletion of all payments. Supported filters: id, invoice_id, or booking_id (all in UUID format). |
| `BOOKINGMOOD_DELETE_PERMISSIONS` | Delete Permissions | Tool to delete permissions matching given filters. Use after confirming which permissions to remove. At least one filter parameter is required (DELETE requires WHERE clause). |
| `BOOKINGMOOD_DELETE_PRICING_WIDGETS` | Delete Pricing Widgets | Tool to delete pricing widgets matching given filters. Use after confirming which pricing widgets to remove. Requires ID filter for safety. |
| `BOOKINGMOOD_DELETE_PRODUCT_ATTR_OPTIONS` | Delete Product Attribute Options | Tool to delete product attribute options matching given filters. Use when you need to remove product attribute option records from the system. At least one filter parameter is required. |
| `BOOKINGMOOD_DELETE_PRODUCT_CONFIGURATIONS` | Delete Product Configurations | Tool to delete product configurations matching given filters. Use when you need to remove product configuration records from the system. |
| `BOOKINGMOOD_DELETE_PRODUCT_REPLY_ADDRS` | Delete Product Reply-To Addresses | Tool to delete product reply-to addresses matching given filters. Use after confirming which reply-to address records to remove. |
| `BOOKINGMOOD_DELETE_PRODUCT_SERVICES` | Delete Product Services | Tool to delete product service links matching given filters. Use after confirming which product-service associations to remove. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_DELETE_REPLY_TO_ADDRESSES` | Delete Reply-To Addresses | Tool to delete reply-to addresses matching given filters. Use after confirming which reply-to addresses to remove. Supports PostgREST-style filtering. |
| `BOOKINGMOOD_DELETE_REVIEW_PRODUCTS` | Delete Review Products | Tool to delete review products matching given filters. Use when you need to remove review product records from the system. At least one filter parameter is required. |
| `BOOKINGMOOD_DELETE_REVIEWS` | Delete Reviews | Tool to delete reviews matching given filters. Use when you need to remove review records from the system. At least one filter parameter is required. |
| `BOOKINGMOOD_DELETE_REVIEW_WIDGET_LISTINGS` | Delete Review Widget Listings | Tool to delete review widget listings matching given filters. Use after confirming which review widget listings to remove. Supports PostgREST-style filtering. |
| `BOOKINGMOOD_DELETE_SERVICES` | Delete Services | Tool to delete services matching given filters. Use after confirming which services to remove. Supports PostgREST-style filtering with operators like eq, in, etc. |
| `BOOKINGMOOD_DELETE_SITE_NAV_ITEMS` | Delete Site Navigation Items | Tool to delete site navigation items matching given filters. Use after confirming which navigation items to remove. DELETE operation requires a WHERE clause (at least one filter parameter). |
| `BOOKINGMOOD_DELETE_SITE_PAGES` | Delete Site Pages | Tool to delete site pages matching given filters. Use after confirming which site pages to remove. DELETE endpoint requires a WHERE clause via filter parameters. |
| `BOOKINGMOOD_DELETE_TAXES` | Delete Taxes | Tool to delete taxes matching given filters. Use after confirming which tax records to remove. |
| `BOOKINGMOOD_DELETE_WEBHOOKS` | Delete Webhooks | Tool to delete webhooks matching given filters. Use after confirming which webhooks to remove. Supports PostgREST-style filtering. |
| `BOOKINGMOOD_DELETE_WIDGET_LISTINGS` | Delete Widget Listings | Tool to delete widget listings matching given filters. Use after confirming which widget listings to remove. Supports PostgREST-style filtering. |
| `BOOKINGMOOD_DELETE_WIDGETS` | Delete Widgets | Tool to delete widgets from the system. Use when you need to remove widget configurations. Supports PostgREST filtering with operators like id=eq.uuid. |
| `BOOKINGMOOD_INVITE_MEMBER` | Invite Member | Tool to invite a member to your organization. The member will receive an email with a link to accept the invitation. Use this when you need to add new team members or grant access to your BookingMood organization. |
| `BOOKINGMOOD_LIST_ATTRIBUTE_OPTIONS` | List Attribute Options | List attribute options with filtering and pagination support. Use this to retrieve selectable options for booking attributes, with support for filtering by attribute ID, name, creation date, and display order. Supports pagination via limit and offset parameters with a maximum of 1000 results per request. |
| `BOOKINGMOOD_LIST_ATTRIBUTES` | List Attributes | Tool to retrieve custom attributes defined for products. Use when you need to list all available attributes with optional field filtering via the select parameter. Attributes are custom fields that can be associated with products in the Bookingmood system. |
| `BOOKINGMOOD_LIST_BOOKING_DETAILS` | List Booking Details | List booking details with filtering and pagination. Booking details contain guest-filled form field data such as names, contact info, and custom field values. Use this to retrieve booking detail records, optionally filtered by booking ID, service ID, timestamps, or customer values. Supports PostgREST query operators for flexible filtering. |
| `BOOKINGMOOD_LIST_BOOKINGS` | List Bookings | Tool to retrieve bookings from the system with optional filtering and pagination. Returns a list of booking records including details like reference codes, organization info, timestamps, and payment information. Use this when you need to list bookings, search by reference or organization, or paginate through booking records. |
| `BOOKINGMOOD_LIST_BOOKING_UPDATES` | List Booking Updates | Tool to list booking updates with filtering and pagination. Use when you need to retrieve booking update history, track changes to bookings, or audit booking modifications. Supports PostgREST query parameters for flexible filtering by ID, booking ID, user ID, and creation timestamp. |
| `BOOKINGMOOD_LIST_CALENDAR_EVENT_NOTES` | List Calendar Event Notes | Tool to list calendar event notes with filtering and pagination. Use when you need to retrieve notes attached to calendar events, optionally filtered by author, event, timestamps, or content. Supports PostgREST filter operators for advanced querying. |
| `BOOKINGMOOD_LIST_CALENDAR_EVENTS` | List Calendar Events | Tool to list calendar events with filtering and pagination. Use this to retrieve events visible on the timeline (bookings, blocked periods, notes), optionally filtering by status, type, date ranges, or other criteria. Supports PostgREST-style filtering and pagination via limit/offset parameters. |
| `BOOKINGMOOD_LIST_CALENDAR_EVENT_TASKS` | List Calendar Event Tasks | Tool to list calendar event tasks with filtering and pagination. Use this to retrieve tasks associated with calendar events, optionally filtering by calendar event ID, completion status, due dates, or schedule type. Supports PostgREST-style filtering and pagination via limit/offset parameters. |
| `BOOKINGMOOD_LIST_CALENDAR_EVENT_UPDATES` | List Calendar Event Updates | List calendar event updates with filtering and pagination. Use when you need to track changes to calendar events, including status updates, product reassignments, and interval modifications. Supports PostgREST-based query parameters for selecting specific columns and ordering results. |
| `BOOKINGMOOD_LIST_CAPACITIES` | List Capacities | List booking capacities with filtering and pagination. Use this to retrieve capacity configurations that define booking limits for products and capacity groups. Supports filtering by ID, capacity group, or product, as well as column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_CAPACITY_GROUP_DEPS` | List Capacity Group Dependencies | Tool to list capacity group dependencies with optional field filtering. Use when you need to retrieve relationships between accumulator and element capacity groups in the BookingMood system. |
| `BOOKINGMOOD_LIST_CAPACITY_GROUPS` | List Capacity Groups | Tool to list capacity groups with filtering and pagination. Use when you need to retrieve capacity group configurations, which define how guest capacity is managed and grouped. Supports filtering by various attributes and pagination for large result sets. |
| `BOOKINGMOOD_LIST_CONTACT_BOOKINGS` | List Contact Bookings | List contact bookings with filtering and pagination. Use when you need to retrieve associations between contacts and bookings. Supports filtering by id, booking_id, contact_id, and created_at, as well as column selection and sorting. |
| `BOOKINGMOOD_LIST_CONTACTS` | List Contacts | Tool to list customer contacts with filtering and pagination. Supports PostgREST query parameters for column selection, ordering, and pagination. Use this to retrieve contacts from the system. |
| `BOOKINGMOOD_LIST_COUPON_PRODUCTS` | List Coupon Products | List coupon products that define which products a coupon applies to. Use this when you need to retrieve product-coupon linkages, especially when coupon.scope is 'rent' or 'product'. Supports PostgREST-style filtering on all fields (id, coupon_id, product_id, created_at), selection, sorting, and pagination. |
| `BOOKINGMOOD_LIST_COUPONS` | List Coupons | Tool to list discount coupons with filtering and pagination. Use this when you need to retrieve coupons from the system, search by code or scope, or paginate through coupon records. Supports PostgREST-style filtering on all fields including code, scope, stackable status, quota, and timestamps. |
| `BOOKINGMOOD_LIST_COUPON_SERVICES` | List Coupon Services | List coupon services that define which services a coupon applies to. Use this when you need to retrieve service-coupon linkages, especially when coupon.scope is 'service'. Supports PostgREST-style filtering on all fields (id, coupon_id, service_id, created_at), selection, sorting, and pagination. |
| `BOOKINGMOOD_LIST_COUPON_USES` | List Coupon Uses | List coupon uses that track which coupons have been applied to bookings. Use this when you need to retrieve coupon usage history, audit coupon applications, or track which bookings used specific coupons. Supports PostgREST-style filtering on all fields (id, booking_id, coupon_id, created_at), selection, sorting, and pagination. |
| `BOOKINGMOOD_LIST_EMAIL_EVENTS` | List Email Events | Tool to retrieve email events (bounce, delivery, open) with filtering and pagination. Use this to track email delivery status, monitor bounces, or analyze email engagement. Supports PostgREST-style filtering on event type, email address, timestamps, and other criteria. |
| `BOOKINGMOOD_LIST_EMAILS` | List Emails | Tool to retrieve emails from the system with optional filtering and pagination. Returns a list of email records including details like subject, body, status, scheduled send time, and related booking information. Use this when you need to list emails, search by booking or status, or paginate through email records. |
| `BOOKINGMOOD_LIST_EMAIL_TEMPLATES` | List Email Templates | Tool to list email templates with filtering and pagination. Supports PostgREST query parameters for column selection, ordering, and pagination. Use this to retrieve email template configurations used for booking notifications. |
| `BOOKINGMOOD_LIST_EXTERNAL_CALENDARS` | List External Calendars | Tool to list external calendar sync configurations (e.g., Google Calendar, iCal). Use this to retrieve all external calendars with optional filtering and pagination. Supports PostgREST-style filtering for querying specific calendars by name, type, or organization. |
| `BOOKINGMOOD_LIST_INVOICES` | List Invoices | Tool to retrieve invoices from the system with optional filtering and pagination. Returns a list of invoice records including amounts, statuses, and payment information. Use this when you need to list invoices, search by organization, or paginate through invoice records. |
| `BOOKINGMOOD_LIST_LINE_ITEMS` | List Line Items | Tool to retrieve line items from the system with optional filtering and pagination. Returns a list of line item records including details like quantities, amounts, unit prices, and related booking/product/service information. Use this when you need to list line items, search by booking or product, or paginate through line item records. |
| `BOOKINGMOOD_LIST_LINE_ITEM_TAXES` | List Line Item Taxes | Tool to list line item taxes with filtering and pagination. Returns tax records applied to line items in bookings. Use this to retrieve line item tax data from the system. |
| `BOOKINGMOOD_LIST_MEMBERS` | List Members | Tool to list organization members with filtering and pagination. Supports PostgREST query parameters for column selection, ordering, and pagination. Use this to retrieve team members from the organization. |
| `BOOKINGMOOD_LIST_ORGANIZATIONS` | List Organizations | Tool to list organizations. Use when you need to retrieve all organizations accessible by the current API key. |
| `BOOKINGMOOD_LIST_PADDLE_SUBSCRIPTIONS` | List Paddle Subscriptions | Tool to list Paddle subscriptions with filtering and pagination. Use this when you need to retrieve subscription information from the Paddle payment provider, filter by status or organization, or paginate through subscription records. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_LIST_PAYMENTS` | List Payments | Tool to retrieve payment transactions from the system with optional filtering and pagination. Returns a list of payment records including amounts, statuses, payment methods, and transaction details. Use this when you need to list payments, search by invoice or organization, or paginate through payment records. |
| `BOOKINGMOOD_LIST_PERMISSIONS` | List Permissions | Tool to list permissions with filtering and pagination. Supports PostgREST query parameters for column selection, ordering, and pagination. Use this to retrieve user permissions for products in the system. |
| `BOOKINGMOOD_LIST_PRICING_WIDGETS` | List Pricing Widgets | Tool to list pricing widgets with filtering and pagination. Use this to retrieve pricing widget configurations from the system. Supports PostgREST-style filtering on fields (id, organization_id, widget_id), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_PRODUCT_ATTR_OPTIONS` | List Product Attribute Options | List product attribute options with filtering and pagination. Use this to retrieve which attribute options are available for specific products, enabling product customization through attribute selection. Supports PostgREST-style filtering on all fields (id, product_id, attribute_option_id, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_PRODUCT_CALENDAR_LOGS` | List Product Calendar Logs | Tool to list product calendar logs with filtering and pagination. Use this to retrieve historical snapshots of product calendar changes, track updates to product availability, or audit calendar modifications. Supports PostgREST-style filtering on all fields. |
| `BOOKINGMOOD_LIST_PRODUCT_CONFIGS` | List Product Configurations | List product configurations with filtering and pagination. Use this to retrieve configuration settings for products in the system. Supports PostgREST-style filtering on all fields (id, organization_id, product_id, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_PRODUCT_REPLY_ADDRS` | List Product Reply-to Addresses | Tool to list product reply-to addresses with filtering and pagination. Use this to retrieve reply-to email addresses configured for products in the system. Supports PostgREST-style query parameters for column selection, ordering, and pagination. |
| `BOOKINGMOOD_LIST_PRODUCTS` | List Products | List bookable products with filtering and pagination. Use this to retrieve product configurations that define rentals, services, or other bookable items in the system. Supports PostgREST-style filtering on all fields (id, organization_id, name, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_PRODUCT_SERVICES` | List Product Services | List product services that define which services are linked to which products. Use this when you need to retrieve product-service associations. Supports PostgREST-style filtering on all fields (id, product_id, service_id, created_at), selection, sorting, and pagination. |
| `BOOKINGMOOD_LIST_PRODUCT_TASKS` | List Product Tasks | Tool to list product tasks with filtering and pagination. Product tasks are task templates associated with products that can be instantiated for specific calendar events or bookings. Use this to retrieve product task configurations from the system. |
| `BOOKINGMOOD_LIST_REPLY_TO_ADDRESSES` | List Reply-To Addresses | Tool to list reply-to addresses with filtering and pagination. Use this to retrieve reply-to email addresses configured for communications. Supports PostgREST-style query parameters for column selection, ordering, and pagination. |
| `BOOKINGMOOD_LIST_REVIEW_PRODUCTS` | List Review Products | List review products with filtering and pagination. Use this to retrieve review product configurations that define products available for customer reviews in the system. Supports PostgREST-style filtering, column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_REVIEWS` | List Reviews | Tool to list customer reviews with filtering and pagination. Use this to retrieve review records from the system, including ratings, comments, and associated booking/product information. Supports PostgREST-style filtering, column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_REVIEW_WIDGET_LISTINGS` | List Review Widget Listings | Tool to list review widget listings with filtering and pagination. Returns a list of review widget listing associations between review widgets and listings. Use this when you need to retrieve review widget listing mappings, filter by widget or listing IDs, or paginate through results. |
| `BOOKINGMOOD_LIST_REVIEW_WIDGETS` | List Review Widgets | Tool to retrieve review widgets from the system with optional filtering and pagination. Returns a list of review widget configurations including their IDs, names, and organization associations. Use this when you need to list review widgets, search by name or organization, or paginate through review widget records. |
| `BOOKINGMOOD_LIST_SEASONS` | List Seasons | List seasons with filtering and pagination. Use this to retrieve seasonal pricing periods that define price variations for different times of the year. Supports PostgREST-style filtering on all fields (id, organization_id, name, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_SERVICES` | List Services | List bookable services with filtering and pagination. Use this to retrieve service configurations that define activities, treatments, or other bookable services in the system. Supports PostgREST-style filtering on all fields (id, organization_id, name, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_SITE_LISTINGS` | List Site Listings | Tool to list site listings with filtering and pagination. Use when you need to retrieve site listing records from the system. Supports PostgREST query parameters for field selection, ordering, and pagination. |
| `BOOKINGMOOD_LIST_SITE_NAV_ITEMS` | List Site Navigation Items | Tool to list site navigation items with filtering and pagination. Use when you need to retrieve navigation menu structure or specific navigation entries. Supports PostgREST query parameters for field selection, ordering, and pagination. |
| `BOOKINGMOOD_LIST_SITE_PAGES` | List Site Pages | Tool to retrieve site pages from the system with optional filtering and pagination. Use when you need to list pages, filter by site, or paginate through page records. |
| `BOOKINGMOOD_LIST_SITES` | List Sites | Tool to list sites with filtering and pagination. Supports PostgREST query parameters for column selection, ordering, and pagination. Use this to retrieve physical locations or sites from the system. |
| `BOOKINGMOOD_LIST_SITE_VIEWS` | List Site Views | Tool to list site views with filtering and pagination. Returns analytics data about page views and visitor sessions on your sites. Use this to retrieve site traffic data, analyze visitor behavior, or track page views over time. |
| `BOOKINGMOOD_LIST_TAXES` | List Taxes | List tax configurations with filtering and pagination. Use this to retrieve tax definitions like VAT, Sales Tax, GST that can be applied to bookings and line items. Supports PostgREST-style filtering on all fields (id, organization_id, name, percentage, timestamps), column selection, pagination, and sorting. |
| `BOOKINGMOOD_LIST_USER_PROFILES` | List User Profiles | List all user profiles accessible by the current API key. Returns user profile information including IDs, names, email addresses, and organization associations. Use this to discover users in the system before performing operations or assigning resources. Supports pagination via limit and offset parameters. |
| `BOOKINGMOOD_LIST_WEBHOOK_NOTIFICATIONS` | List Webhook Notifications | Tool to list webhook notifications with filtering and pagination. Returns webhook notification records including their status, event types, and delivery information. Use this to monitor webhook deliveries and troubleshoot webhook issues. |
| `BOOKINGMOOD_LIST_WEBHOOKS` | List Webhooks | Tool to list webhook configurations with filtering and pagination. Returns webhook endpoints including their URLs, subscribed events, and status. Use this to discover configured webhooks before managing or debugging webhook integrations. |
| `BOOKINGMOOD_LIST_WIDGET_ANALYTICS` | List Widget Analytics | Tool to list widget analytics with pagination. Returns metrics and statistics for widgets including views, bookings, conversion rates, and revenue data. Supports pagination via limit and offset parameters. |
| `BOOKINGMOOD_LIST_WIDGET_LISTINGS` | List Widget Listings | Tool to list widget listings with filtering and pagination. Returns a list of widget listing associations between widgets and listings. Use this when you need to retrieve widget listing mappings, filter by widget or listing IDs, or paginate through results. |
| `BOOKINGMOOD_LIST_WIDGETS` | List Booking Widgets | List all booking widgets accessible by the current API key. Returns widget configurations including their IDs, names, types, and organization associations. Use this to discover available widgets before performing operations like searching availability or managing bookings. Supports pagination via limit and offset parameters. |
| `BOOKINGMOOD_QUERY_AVAILABILITY` | Query Availability | Tool to fetch availability of multiple products over a long period of time. Use this to check when products can be booked by querying availability records. Supports PostgREST-style filtering on product ID, date ranges, and availability status, plus pagination via limit/offset parameters. |
| `BOOKINGMOOD_UPDATE_ATTRIBUTE_OPTIONS` | Update Attribute Options | Updates attribute option records that match the specified filters. Attribute options represent possible values for custom attributes (like size options: S, M, L). At least one filter must be provided to target specific records. Use this to modify the localized names, display order, or parent attribute association. |
| `BOOKINGMOOD_UPDATE_ATTRIBUTES` | Update Attributes | Updates attribute records that match the specified filters. Attributes define custom properties for bookings (e.g., room type, amenities). At least one filter must be provided to target specific records. Use this to modify the localized name, display order, or attribute type. Typically used with the 'id' filter to update a specific attribute. |
| `BOOKINGMOOD_UPDATE_BOOKING_DETAILS` | Update Booking Details | Updates booking detail records that match the specified filters. Booking details store guest-filled form field data such as names, contact info, and custom field values. At least one filter must be provided to target specific records. Use this to modify attachment URLs, localized field names, descriptions, or customer-provided values. |
| `BOOKINGMOOD_UPDATE_BOOKINGS` | Update Bookings | Updates booking records that match the specified filters. Bookings represent customer reservations with metadata such as currency, references, confirmation status, and silent mode. At least one filter must be provided to target specific records. Use this to modify booking attributes like confirmation timestamp, currency settings, or booking references. |
| `BOOKINGMOOD_UPDATE_CALENDAR_EVENT_NOTES` | Update Calendar Event Notes | Updates calendar event note records that match the specified filters. Use this to modify notes associated with calendar events. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_CALENDAR_EVENTS` | Update Calendar Events | Update existing calendar events that match the specified filters. Use this to modify event status (CANCELLED, TENTATIVE, CONFIRMED), notes, title, or dates. At least one filter must be provided to target specific events. Commonly used to confirm tentative bookings or add notes to existing events. |
| `BOOKINGMOOD_UPDATE_CALENDAR_EVENT_TASKS` | Update Calendar Event Tasks | Tool to update existing calendar event tasks. Use when you need to modify task details such as labels, completion status, due dates, or schedule information. |
| `BOOKINGMOOD_UPDATE_CAPACITIES` | Update Capacities | Tool to update existing capacity records that match the specified filters. Capacities define occupancy thresholds (min/max) for products or capacity groups. Use this to modify maximum or minimum occupancy limits for booking resources. |
| `BOOKINGMOOD_UPDATE_CAPACITY_GROUP_DEPS` | Update Capacity Group Dependencies | Updates capacity group dependency records that match the specified filters. Capacity group dependencies define relationships between accumulating and accumulated capacity groups. At least one filter must be provided to target specific records. Use this to modify which capacity groups depend on each other. |
| `BOOKINGMOOD_UPDATE_CAPACITY_GROUPS` | Update Capacity Groups | Updates capacity group records that match the specified filters. Capacity groups define guest types (e.g., adults, children) and how their numbers are tracked (manual input or sum of sub-groups). At least one filter must be provided to target specific records. Use this to modify names, descriptions, display order, or capacity calculation settings. |
| `BOOKINGMOOD_UPDATE_CONTACT_BOOKINGS` | Update Contact Bookings | Updates contact booking records that match the specified filters. Contact bookings link contacts to bookings, enabling tracking of which contacts are associated with which reservations. At least one filter must be provided to target specific records. Use this to reassign contact bookings to different contacts or bookings. Typically used with the 'id' filter to update a specific contact booking. |
| `BOOKINGMOOD_UPDATE_CONTACTS` | Update Contacts | Updates contact records that match the specified filters. Use this to modify existing contact information such as name, email, phone, address, company details, or custom metadata. At least one filter must be provided to target specific contacts. |
| `BOOKINGMOOD_UPDATE_COUPON_PRODUCTS` | Update Coupon Products | Updates coupon product link records that match the specified filters. Use this to modify existing coupon-product associations by changing which coupon or product they link to. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_COUPONS` | Update Coupons | Updates coupon records that match the specified filters. Use this to modify existing coupons such as code, description, definition, quota, scope, or stackable status. At least one filter must be provided to target specific coupons. |
| `BOOKINGMOOD_UPDATE_COUPON_SERVICES` | Update Coupon Services | Updates coupon service records that match the specified filters. Use this to modify existing coupon-service associations. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_COUPON_USES` | Update Coupon Uses | Updates coupon use records that match the specified filters. Use this to modify which booking or coupon is associated with a coupon use record. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_EXTERNAL_CALENDARS` | Update External Calendars | Tool to update existing external calendars that match the specified filters. Use this to modify external calendar properties such as the calendar name. At least one filter must be provided to target specific external calendars. |
| `BOOKINGMOOD_UPDATE_LINE_ITEMS` | Update Line Items | Updates line item records that match the specified filters. Line items represent individual charges or products within a booking, including quantity, unit price, amount, and associated service or tax configuration. At least one filter must be provided to target specific records. Use this to modify line item details such as quantity, pricing, or description. |
| `BOOKINGMOOD_UPDATE_LINE_ITEM_TAXES` | Update Line Item Taxes | Updates line item tax records that match the specified filters. Line item taxes represent tax amounts or percentages applied to individual line items in a booking. At least one filter must be provided to target specific records. Use this to modify the tax amount or percentage for existing line item tax entries. |
| `BOOKINGMOOD_UPDATE_PAYMENTS` | Update Payments | Tool to update existing payments in the Bookingmood system. Use when you need to modify payment details such as amount, status, currency, or transaction information. At least one filter must be provided to target specific payment records. |
| `BOOKINGMOOD_UPDATE_PERMISSIONS` | Update Permissions | Updates permission records that match the specified filters. Use this to modify product associations for existing permissions. At least one filter must be provided to target specific permissions. |
| `BOOKINGMOOD_UPDATE_PRICING_WIDGETS` | Update Pricing Widgets | Tool to update existing pricing widget records that match the specified filters. Pricing widgets represent pricing configuration widgets in the system. Use this to modify pricing widget names or localized translations. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_PRODUCT_ATTRIBUTE_OPTIONS` | Update Product Attribute Options | Updates product attribute option records that match the specified filters. Product attribute options link products to their available attribute values (e.g., linking a specific product to size options). Use this to modify the associations between products and attribute options. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_PRODUCT_CONFIGS` | Update Product Configurations | Tool to update existing product configuration records that match the specified filters. Use when you need to modify product configuration attributes such as updated timestamps. |
| `BOOKINGMOOD_UPDATE_PRODUCT_REPLY_TO_ADDRESSES` | Update Product Reply-To Addresses | Tool to update existing product reply-to address associations. Use when you need to modify the relationship between products and their reply-to email addresses. This action follows PostgREST patterns and requires at least one filter to target specific records. |
| `BOOKINGMOOD_UPDATE_PRODUCTS` | Update Products | Updates product records that match the specified filters. Use this to modify existing product configurations such as name, description, type, status, pricing, or guest capacity. At least one filter must be provided to target specific products. Typically used with the 'id' filter to update a specific product. |
| `BOOKINGMOOD_UPDATE_PRODUCT_SERVICES` | Update Product Services | Tool to update existing product_services records that match the specified filters. Use when you need to modify the product-service associations. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_PRODUCT_TASKS` | Update Product Tasks | Update existing product tasks that match the specified filters. Product tasks define activities or checklist items associated with products. Use this to modify task labels for the matched product tasks. |
| `BOOKINGMOOD_UPDATE_REVIEW_PRODUCTS` | Update Review Products | Updates review product link records that match the specified filters. Use this to modify existing review-product associations by changing which review is linked to a product. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_REVIEWS` | Update Reviews | Updates review records that match the specified filters. Use this to modify existing customer reviews such as ratings, comments, responses, status, or associated entities. At least one filter must be provided to target specific reviews. |
| `BOOKINGMOOD_UPDATE_REVIEW_WIDGET_LISTINGS` | Update Review Widget Listings | Updates review widget listing records that match the specified filters. Use this to modify existing review widget-product associations by changing which products are associated with review widgets. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_REVIEW_WIDGETS` | Update Review Widgets | Updates review widget records that match the specified filters. Use this to modify existing review widget configurations by changing associations between reviews and widgets. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_SERVICES` | Update Services | Updates service records that match the specified filters. Use this to modify existing service information such as description, name, price, duration, or active status. At least one filter must be provided to target specific services. |
| `BOOKINGMOOD_UPDATE_SITE_LISTINGS` | Update Site Listings | Tool to update site listing records matching specified filters. Use when you need to modify listing details such as name, status, URLs, or metadata. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_SITE_NAV_ITEMS` | Update Site Navigation Items | Updates site navigation item records that match the specified filters. Use this to modify navigation menu items such as labels, URLs, types, or hierarchical parent relationships. At least one filter must be provided to target specific navigation items. |
| `BOOKINGMOOD_UPDATE_SITE_PAGES` | Update Site Pages | Updates site page records that match the specified filters. Use this to modify existing site page information such as title. At least one filter must be provided to target specific site pages. |
| `BOOKINGMOOD_UPDATE_SITES` | Update Sites | Tool to update existing site records that match the specified filters. Use when you need to modify the site name. At least one filter must be provided to target specific sites. |
| `BOOKINGMOOD_UPDATE_TAXES` | Update Taxes | Updates tax configuration records that match the specified filters. Use this to modify existing tax definitions such as the tax name or percentage rate. At least one filter must be provided to target specific tax records. |
| `BOOKINGMOOD_UPDATE_USER_PROFILES` | Update User Profiles | Tool to update existing user profile records that match the specified filters. Use this to modify user preferences such as name, language, avatar, or calendar settings. At least one filter must be provided to target specific user profiles. |
| `BOOKINGMOOD_UPDATE_WEBHOOKS` | Update Webhooks | Tool to update existing webhook subscriptions that match the specified filters. Use this to modify webhook URLs, event type subscriptions, enabled status, or descriptions. At least one filter must be provided to target specific webhooks. |
| `BOOKINGMOOD_UPDATE_WIDGET_LISTINGS` | Update Widget Listings | Updates existing widget listing records that match the specified filters. Use this to modify widget-product associations such as display order or change which widget or product is associated. At least one filter must be provided to target specific records. |
| `BOOKINGMOOD_UPDATE_WIDGETS` | Update Booking Widgets | Update existing booking widgets that match the specified filters. Use this to modify widget configurations such as name, type, locale, currency, interaction settings, display options, and customization parameters. At least one filter must be provided to target specific widgets. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Bookingmood MCP server is an implementation of the Model Context Protocol that connects your AI agent to Bookingmood. It provides structured and secure access so your agent can perform Bookingmood operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- Python 3.9 or higher
- A Composio account with an active API key
- Basic familiarity with Python and async programming

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

Install the required libraries.
What's happening:
- composio connects your agent to external SaaS tools like Bookingmood
- pydantic-ai lets you create structured AI agents with tool support
- python-dotenv loads your environment variables securely from a .env file
```bash
pip install composio pydantic-ai python-dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's happening:
- COMPOSIO_API_KEY authenticates your agent to Composio's API
- USER_ID associates your session with your account for secure tool access
- OPENAI_API_KEY to access OpenAI LLMs
```bash
COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=your_user_id_here
OPENAI_API_KEY=your_openai_api_key
```

### 4. Import dependencies

What's happening:
- We load environment variables and import required modules
- Composio manages connections to Bookingmood
- MCPServerStreamableHTTP connects to the Bookingmood MCP server endpoint
- Agent from Pydantic AI lets you define and run the AI assistant
```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStreamableHTTP

load_dotenv()
```

### 5. Create a Tool Router Session

What's happening:
- We're creating a Tool Router session that gives your agent access to Bookingmood tools
- The create method takes the user ID and specifies which toolkits should be available
- The returned session.mcp.url is the MCP server URL that your agent will use
```python
async def main():
    api_key = os.getenv("COMPOSIO_API_KEY")
    user_id = os.getenv("USER_ID")
    if not api_key or not user_id:
        raise RuntimeError("Set COMPOSIO_API_KEY and USER_ID in your environment")

    # Create a Composio Tool Router session for Bookingmood
    composio = Composio(api_key=api_key)
    session = composio.create(
        user_id=user_id,
        toolkits=["bookingmood"],
    )
    url = session.mcp.url
    if not url:
        raise ValueError("Composio session did not return an MCP URL")
```

### 6. Initialize the Pydantic AI Agent

What's happening:
- The MCP client connects to the Bookingmood endpoint
- The agent uses GPT-5 to interpret user commands and perform Bookingmood operations
- The instructions field defines the agent's role and behavior
```python
# Attach the MCP server to a Pydantic AI Agent
bookingmood_mcp = MCPServerStreamableHTTP(url, headers={"x-api-key": COMPOSIO_API_KEY})
agent = Agent(
    "openai:gpt-5",
    toolsets=[bookingmood_mcp],
    instructions=(
        "You are a Bookingmood assistant. Use Bookingmood tools to help users "
        "with their requests. Ask clarifying questions when needed."
    ),
)
```

### 7. Build the chat interface

What's happening:
- The agent reads input from the terminal and streams its response
- Bookingmood API calls happen automatically under the hood
- The model keeps conversation history to maintain context across turns
```python
# Simple REPL with message history
history = []
print("Chat started! Type 'exit' or 'quit' to end.\n")
print("Try asking the agent to help you with Bookingmood.\n")

while True:
    user_input = input("You: ").strip()
    if user_input.lower() in {"exit", "quit", "bye"}:
        print("\nGoodbye!")
        break
    if not user_input:
        continue

    print("\nAgent is thinking...\n", flush=True)

    async with agent.run_stream(user_input, message_history=history) as stream_result:
        collected_text = ""
        async for chunk in stream_result.stream_output():
            text_piece = None
            if isinstance(chunk, str):
                text_piece = chunk
            elif hasattr(chunk, "delta") and isinstance(chunk.delta, str):
                text_piece = chunk.delta
            elif hasattr(chunk, "text"):
                text_piece = chunk.text
            if text_piece:
                collected_text += text_piece
        result = stream_result

    print(f"Agent: {collected_text}\n")
    history = result.all_messages()
```

### 8. Run the application

What's happening:
- The asyncio loop launches the agent and keeps it running until you exit
```python
if __name__ == "__main__":
    asyncio.run(main())
```

## Complete Code

```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStreamableHTTP

load_dotenv()

async def main():
    api_key = os.getenv("COMPOSIO_API_KEY")
    user_id = os.getenv("USER_ID")
    if not api_key or not user_id:
        raise RuntimeError("Set COMPOSIO_API_KEY and USER_ID in your environment")

    # Create a Composio Tool Router session for Bookingmood
    composio = Composio(api_key=api_key)
    session = composio.create(
        user_id=user_id,
        toolkits=["bookingmood"],
    )
    url = session.mcp.url
    if not url:
        raise ValueError("Composio session did not return an MCP URL")

    # Attach the MCP server to a Pydantic AI Agent
    bookingmood_mcp = MCPServerStreamableHTTP(url, headers={"x-api-key": COMPOSIO_API_KEY})
    agent = Agent(
        "openai:gpt-5",
        toolsets=[bookingmood_mcp],
        instructions=(
            "You are a Bookingmood assistant. Use Bookingmood tools to help users "
            "with their requests. Ask clarifying questions when needed."
        ),
    )

    # Simple REPL with message history
    history = []
    print("Chat started! Type 'exit' or 'quit' to end.\n")
    print("Try asking the agent to help you with Bookingmood.\n")

    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit", "bye"}:
            print("\nGoodbye!")
            break
        if not user_input:
            continue

        print("\nAgent is thinking...\n", flush=True)

        async with agent.run_stream(user_input, message_history=history) as stream_result:
            collected_text = ""
            async for chunk in stream_result.stream_output():
                text_piece = None
                if isinstance(chunk, str):
                    text_piece = chunk
                elif hasattr(chunk, "delta") and isinstance(chunk.delta, str):
                    text_piece = chunk.delta
                elif hasattr(chunk, "text"):
                    text_piece = chunk.text
                if text_piece:
                    collected_text += text_piece
            result = stream_result

        print(f"Agent: {collected_text}\n")
        history = result.all_messages()

if __name__ == "__main__":
    asyncio.run(main())
```

## Conclusion

You've built a Pydantic AI agent that can interact with Bookingmood through Composio's Tool Router. With this setup, your agent can perform real Bookingmood actions through natural language.
You can extend this further by:
- Adding other toolkits like Gmail, HubSpot, or Salesforce
- Building a web-based chat interface around this agent
- Using multiple MCP endpoints to enable cross-app workflows (for example, Gmail + Bookingmood for workflow automation)
This architecture makes your AI agent "agent-native", able to securely use APIs in a unified, composable way without custom integrations.

## How to build Bookingmood MCP Agent with another framework

- [OpenAI Agents SDK](https://composio.dev/toolkits/bookingmood/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/bookingmood/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/bookingmood/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/bookingmood/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/bookingmood/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/bookingmood/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/bookingmood/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/bookingmood/framework/cli)
- [Google ADK](https://composio.dev/toolkits/bookingmood/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/bookingmood/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/bookingmood/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/bookingmood/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/bookingmood/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/bookingmood/framework/crew-ai)

## 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.
- [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.
- [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.
- [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.
- [Lodgify](https://composio.dev/toolkits/lodgify) - Lodgify is an all-in-one vacation rental software for property managers and owners. It centralizes bookings, guest messaging, and channel synchronization in one dashboard.
- [Planyo Online Booking](https://composio.dev/toolkits/planyo_online_booking) - Planyo Online Booking is a flexible reservation system for managing bookings by day, hour, or event. It streamlines scheduling for any business needing reservations.
- [Scheduleonce](https://composio.dev/toolkits/scheduleonce) - Scheduleonce is a scheduling platform for capturing, qualifying, and engaging with inbound leads. It streamlines appointment booking and follow-ups for faster lead conversion.
- [Supersaas](https://composio.dev/toolkits/supersaas) - Supersaas is a flexible appointment scheduling platform for businesses and individuals. It streamlines bookings, reminders, and calendar management in one place.
- [Sympla](https://composio.dev/toolkits/sympla) - Sympla is a platform for managing in-person and online events, ticket sales, and registrations. It streamlines event setup, attendee tracking, and digital content delivery.
- [Gmail](https://composio.dev/toolkits/gmail) - Gmail is Google's email service with powerful spam protection, search, and G Suite integration. It keeps your inbox organized and makes communication fast and reliable.
- [Google Drive](https://composio.dev/toolkits/googledrive) - Google Drive is a cloud storage platform for uploading, sharing, and collaborating on files. It's perfect for keeping your documents accessible and organized across devices.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Bookingmood MCP?

With a standalone Bookingmood MCP server, the agents and LLMs can only access a fixed set of Bookingmood tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Bookingmood and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Pydantic AI?

Yes, you can. Pydantic AI fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Bookingmood tools.

### Can I manage the permissions and scopes for Bookingmood while using Tool Router?

Yes, absolutely. You can configure which Bookingmood scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Bookingmood data and credentials are handled as safely as possible.

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