Skip to main content
Glama

YouCanBook.me MCP by usefulapi

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
70.3% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 18 tools

Disambiguation4/5

Each resource/action pair is mostly distinct and clearly described, so an agent can usually tell list_ from create_ from update_ tools apart. However, cancel_booking overlaps with update_booking's cancelled flag, and get_profile with nested fields can duplicate the list_* subresource tools.

Naming Consistency4/5

The vast majority of tools follow a consistent verb_noun snake_case pattern like list_bookings, create_team_member, and update_profile. The generic youcanbookme_request tool breaks that pattern, and list_available_accounts is slightly off-pattern relative to other list_ tools, but the overall convention is predictable.

Tool Count4/5

At 18 tools, the server is slightly above the ideal 3-15 range but the count is justified by covering multiple resources: profiles, appointment types, locations, team members, and bookings. Each tool serves a real CRUD or convenience purpose, so the set does not feel bloated.

Completeness3/5

Core read and create/update paths are well covered, and cancel_booking handles the main booking lifecycle need, but the surface has notable gaps: there is no delete for appointment types, locations, team members, or profiles, no update_location, and no availability/free-slot lookup. The read-only generic GET hatch helps with reads, but there is no equivalent write escape hatch.

Available Tools

18 tools
cancel_bookingCancel a booking
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesThe booking id to cancel (path only; required).
create_appointment_typeCreate an appointment type
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe appointment type name (required).
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
profileIdYesThe profile (booking page) id (path only; required).
create_bookingCreate a booking
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoBooking title.
unitsNoNumber of slot units to book.
endsAtYesBooking end time, ISO 8601 (required).
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
localeNoLocale for the booking (e.g. en-GB).
startsAtYesBooking start time, ISO 8601 (required).
timeZoneNoIANA time zone for the booking (e.g. Europe/London).
profileIdYesThe profile (booking page) id to book on (required).
create_locationAdd a location
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesThe location kind/type (required).
notesNoNotes shown with the location.
valueNoThe location value (e.g. an address or link).
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
strategyYesThe location assignment strategy (required).
profileIdYesThe profile (booking page) id (path only; required).
create_team_memberAdd a team member
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe team member's display name (required).
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
profileIdYesThe profile (booking page) id (path only; required).
calendarIdNoThe calendar id to link (see list_available_accounts).
get_bookingGet a booking
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.
bookingIdYesThe booking id.
get_profileGet a profile (booking page)
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.
profileIdYesThe profile (booking page) id.
list_appointment_typesList a profile's appointment types
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
profileIdYesThe profile (booking page) id.
list_available_accountsList available accounts (calendars)
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

list_bookingsList bookings
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPagination page number, 0-based (offset-based paging). Use with maxResults.
afterNoOnly bookings starting AFTER this time (ISO 8601, e.g. 2026-07-01T00:00:00Z).
beforeNoOnly bookings starting BEFORE this time (ISO 8601).
fieldsNoComma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.
paramsNoAdditional documented query-string filters to send verbatim (merged with the typed params above).
cancelledNoFilter by cancelled status: true = only cancelled, false = only active. Omit for all.
profileIdNoRestrict to bookings on this profile (booking page) id.
maxResultsNoMaximum records per page (page size). Defaults to the API's own default when omitted.
searchTextNoFree-text search across booking fields (e.g. attendee name/email).
list_locationsList a profile's locations
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
profileIdYesThe profile (booking page) id.
list_profilesList profiles (booking pages)
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPagination page number, 0-based (offset-based paging). Use with maxResults.
fieldsNoComma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.
paramsNoAdditional documented query-string filters to send verbatim (merged with the typed params above).
maxResultsNoMaximum records per page (page size). Defaults to the API's own default when omitted.
list_team_membersList a profile's team members
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
profileIdYesThe profile (booking page) id.
update_appointment_typeUpdate an appointment type
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
profileIdYesThe profile (booking page) id (path only; required).
appointmentTypeIdYesThe appointment type id to update (path only; required).
update_bookingUpdate a booking
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew booking title.
unitsNoNew number of slot units.
endsAtNoNew end time, ISO 8601 (reschedule).
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
localeNoNew locale.
noShowNoMark the attendee as a no-show (true) or not (false).
startsAtNoNew start time, ISO 8601 (reschedule).
timeZoneNoNew IANA time zone.
bookingIdYesThe booking id to update (path only; required).
cancelledNoSet true to cancel the booking, false to un-cancel.
update_profileUpdate a profile (booking page)
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
profileIdYesThe profile (booking page) id to update (path only; required).
update_team_memberUpdate a team member
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoAdditional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.
profileIdYesThe profile (booking page) id (path only; required).
teamMemberIdYesThe team member id to update (path only; required).
youcanbookme_requestRaw read request
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull API path after the origin, starting with "/", e.g. "/v1/bookings?maxResults=5".

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updates
    • Changedcancel_booking1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_appointment_type1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_booking1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_location1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_team_member1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_booking1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_profile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_appointment_types1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_available_accounts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_bookings3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / params / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / params / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedlist_locations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_profiles3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / params / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / params / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedlist_team_members1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate_appointment_type1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate_booking1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate_profile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate_team_member1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoucanbookme_request1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 18 tool updates
    • First observedcancel_booking
    • First observedcreate_appointment_type
    • First observedcreate_booking
    • First observedcreate_location
    • First observedcreate_team_member
    • First observedget_booking
    • First observedget_profile
    • First observedlist_appointment_types
    • First observedlist_available_accounts
    • First observedlist_bookings
    • First observedlist_locations
    • First observedlist_profiles
    • First observedlist_team_members
    • First observedupdate_appointment_type
    • First observedupdate_booking
    • First observedupdate_profile
    • First observedupdate_team_member
    • First observedyoucanbookme_request

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.