# youcanbookme MCP server

Manage YouCanBook.me bookings, booking pages, appointment types, team members and locations.

## Links
- Registry page: https://www.getdrio.com/mcp/io-usefulapi-youcanbookme
- Repository: https://github.com/m190/usefulapi-mcp

## Install
- Endpoint: https://youcanbookme.usefulapi.io/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://youcanbookme.usefulapi.io/mcp

## Tools
- list_bookings (List bookings) - List bookings (appointments) on the YouCanBookMe account. YCBM API: GET /v1/bookings. Filter by profileId (booking page), an after/before time window, cancelled status, and a free-text searchText; select fields with `fields`. Paginated via page (0-based) + maxResults. Returns a JSON array of bookings. Endpoint: https://youcanbookme.usefulapi.io/mcp
- get_booking (Get a booking) - Fetch a single booking (appointment) by id. YCBM API: GET /v1/bookings/{bookingId}. Use `fields` to select which fields to return. Returns the booking object. Endpoint: https://youcanbookme.usefulapi.io/mcp
- list_profiles (List profiles (booking pages)) - List all profiles (booking pages) on the account. YCBM API: GET /v1/profiles. A profile is a bookable page with its own subdomain, appointment types, team members, and locations. Use `fields` to select fields (e.g. "id,title,subdomain"). Paginated via page (0-based) + maxResults. Returns a JSON array of profiles. Endpoint: https://youcanbookme.usefulapi.io/mcp
- get_profile (Get a profile (booking page)) - Fetch a single profile (booking page) by id. YCBM API: GET /v1/profiles/{profileId}. Use `fields` to select fields, including nested sub-resources (appointmentTypes, teamMembers, locations). Returns the profile object. Endpoint: https://youcanbookme.usefulapi.io/mcp
- list_team_members (List a profile's team members) - List the team members configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a teamMembers field selection. Returns the profile's teamMembers block (each member has id, name, email, description, pic, calendarId). Endpoint: https://youcanbookme.usefulapi.io/mcp
- list_appointment_types (List a profile's appointment types) - List the appointment types configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with an appointmentTypes field selection. Returns the profile's appointmentTypes block (each with id, name, description, slotLength, price). Endpoint: https://youcanbookme.usefulapi.io/mcp
- list_locations (List a profile's locations) - List the locations configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a locations field selection. Returns the profile's locations block (each with id, kind, value, notes, strategy). Endpoint: https://youcanbookme.usefulapi.io/mcp
- list_available_accounts (List available accounts (calendars)) - List the accounts/calendars available to your account — used to find the calendarId for a team member. YCBM API: GET /v1/{accountId}/availableAccounts (accountId is taken from your configured credentials). Returns a JSON array. Endpoint: https://youcanbookme.usefulapi.io/mcp
- youcanbookme_request (Raw read request) - Power-user escape hatch: GET any YCBM API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the origin, starting with a slash, INCLUDING any query string, e.g. "/v1/bookings?maxResults=5" or "/v1/profiles". Returns the parsed JSON. Endpoint: https://youcanbookme.usefulapi.io/mcp
- create_booking (Create a booking) - MUTATES YouCanBookMe data: creates a booking (appointment) on a profile. YCBM API: POST /v1/bookings (JSON). Required: profileId, startsAt, endsAt (ISO 8601 times). Optional: title, timeZone, locale, units. Complex fields like `answers` (form-field answers) and `linkFields` should be passed via the `fields` passthrough. Returns the created booking. Endpoint: https://youcanbookme.usefulapi.io/mcp
- update_booking (Update a booking) - MUTATES YouCanBookMe data: updates an existing booking (reschedule, rename, mark cancelled/no-show). YCBM API: PATCH /v1/bookings/{bookingId} (JSON, partial update). Set any of title/startsAt/endsAt/cancelled/noShow/timeZone/locale/units; use the `fields` passthrough for answers/linkFields or other documented fields. The path id is never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- cancel_booking (Cancel a booking) - MUTATES YouCanBookMe data: cancels a booking. Convenience wrapper for PATCH /v1/bookings/{bookingId} with { cancelled: true } — safer and reversible (re-activate via update_booking cancelled=false) versus deleting. Returns the updated booking. Endpoint: https://youcanbookme.usefulapi.io/mcp
- update_profile (Update a profile (booking page)) - MUTATES YouCanBookMe data: updates a profile's (booking page) configuration. YCBM API: PATCH /v1/profiles/{profileId} (JSON, partial update). Pass the fields to change via the `fields` passthrough (e.g. { title, subdomain, ... }) — profile fields are numerous and use YCBM's own names. The path id is never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- create_appointment_type (Create an appointment type) - MUTATES YouCanBookMe data: adds an appointment type to a profile. YCBM API: POST /v1/profiles/{profileId}/appointmenttypes/items (JSON). Required: name; use the `fields` passthrough for description, slotLength, price, etc. The path profileId is never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- update_appointment_type (Update an appointment type) - MUTATES YouCanBookMe data: updates an appointment type on a profile. YCBM API: PATCH /v1/profiles/{profileId}/appointmenttypes/items/{appointmentTypeId} (JSON, partial update). Pass changed fields (name, description, slotLength, price, ...) via the `fields` passthrough. Path ids are never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- create_team_member (Add a team member) - MUTATES YouCanBookMe data: adds a team member to a profile. YCBM API: POST /v1/profiles/{profileId}/teammembers/items (JSON). Required: name; calendarId links the member to a calendar (find it via list_available_accounts). Use the `fields` passthrough for email, description, pic, etc. The path profileId is never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- update_team_member (Update a team member) - MUTATES YouCanBookMe data: updates a team member on a profile. YCBM API: PATCH /v1/profiles/{profileId}/teammembers/items/{teamMemberId} (JSON, partial update). Pass changed fields (name, email, description, calendarId, ...) via the `fields` passthrough. Path ids are never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp
- create_location (Add a location) - MUTATES YouCanBookMe data: adds a location to a profile. YCBM API: POST /v1/profiles/{profileId}/locations (JSON). Required: kind (location type) and strategy (how it is assigned). Use the `fields` passthrough for value, notes, and other documented fields. The path profileId is never sent in the body. Endpoint: https://youcanbookme.usefulapi.io/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.usefulapi
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 18, 2026
- Source: https://registry.modelcontextprotocol.io
