MCPサーバー

youcanbookme

io.usefulapi/youcanbookme
ビジネス・業務 生産性 公開・接続可能 MCP 2026-07-28

このMCPでできること

Manages YouCanBook.me booking pages, bookings, appointment types, team members, locations, and connected calendars.

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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'bookingId': {'type': 'string', 'description': 'The booking id to cancel (path only; required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'The appointment type name (required).'}, 'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id (path only; required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'startsAt', 'endsAt'], 'properties': {'title': {'type': 'string', 'description': 'Booking title.'}, 'units': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Number of slot units to book.'}, 'endsAt': {'type': 'string', 'description': 'Booking end time, ISO 8601 (required).'}, 'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'locale': {'type': 'string', 'description': 'Locale for the booking (e.g. en-GB).'}, 'startsAt': {'type': 'string', 'description': 'Booking start time, ISO 8601 (required).'}, 'timeZone': {'type': 'string', 'description': 'IANA time zone for the booking (e.g. Europe/London).'}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id to book on (required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'kind', 'strategy'], 'properties': {'kind': {'type': 'string', 'description': 'The location kind/type (required).'}, 'notes': {'type': 'string', 'description': 'Notes shown with the location.'}, 'value': {'type': 'string', 'description': 'The location value (e.g. an address or link).'}, 'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'strategy': {'type': 'string', 'description': 'The location assignment strategy (required).'}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id (path only; required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'name'], 'properties': {'name': {'type': 'string', 'description': "The team member's display name (required)."}, 'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id (path only; required).'}, 'calendarId': {'type': 'string', 'description': 'The calendar id to link (see list_available_accounts).'}}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'fields': {'type': 'string', 'description': 'Comma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.'}, 'bookingId': {'type': 'string', 'description': 'The booking id.'}}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId'], 'properties': {'fields': {'type': 'string', 'description': 'Comma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.'}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id.'}}}
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).
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId'], 'properties': {'profileId': {'type': 'string', 'description': 'The profile (booking page) id.'}}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination page number, 0-based (offset-based paging). Use with maxResults.'}, 'after': {'type': 'string', 'description': 'Only bookings starting AFTER this time (ISO 8601, e.g. 2026-07-01T00:00:00Z).'}, 'before': {'type': 'string', 'description': 'Only bookings starting BEFORE this time (ISO 8601).'}, 'fields': {'type': 'string', 'description': 'Comma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.'}, 'params': {'type': 'object', 'description': 'Additional documented query-string filters to send verbatim (merged with the typed params above).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}}, 'cancelled': {'type': 'boolean', 'description': 'Filter by cancelled status: true = only cancelled, false = only active. Omit for all.'}, 'profileId': {'type': 'string', 'description': 'Restrict to bookings on this profile (booking page) id.'}, 'maxResults': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': "Maximum records per page (page size). Defaults to the API's own default when omitted."}, 'searchText': {'type': 'string', 'description': 'Free-text search across booking fields (e.g. attendee name/email).'}}}
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).
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId'], 'properties': {'profileId': {'type': 'string', 'description': 'The profile (booking page) id.'}}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination page number, 0-based (offset-based paging). Use with maxResults.'}, 'fields': {'type': 'string', 'description': 'Comma-separated field paths to return (e.g. "id,title,startsAt"). Supports dotted paths for nested objects. Omit to get the default field set.'}, 'params': {'type': 'object', 'description': 'Additional documented query-string filters to send verbatim (merged with the typed params above).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}}, 'maxResults': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': "Maximum records per page (page size). Defaults to the API's own default when omitted."}}}
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).
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId'], 'properties': {'profileId': {'type': 'string', 'description': 'The profile (booking page) id.'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'appointmentTypeId'], 'properties': {'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id (path only; required).'}, 'appointmentTypeId': {'type': 'string', 'description': 'The appointment type id to update (path only; required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'title': {'type': 'string', 'description': 'New booking title.'}, 'units': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'New number of slot units.'}, 'endsAt': {'type': 'string', 'description': 'New end time, ISO 8601 (reschedule).'}, 'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'locale': {'type': 'string', 'description': 'New locale.'}, 'noShow': {'type': 'boolean', 'description': 'Mark the attendee as a no-show (true) or not (false).'}, 'startsAt': {'type': 'string', 'description': 'New start time, ISO 8601 (reschedule).'}, 'timeZone': {'type': 'string', 'description': 'New IANA time zone.'}, 'bookingId': {'type': 'string', 'description': 'The booking id to update (path only; required).'}, 'cancelled': {'type': 'boolean', 'description': 'Set true to cancel the booking, false to un-cancel.'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId'], 'properties': {'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id to update (path only; required).'}}}
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.
破壊的操作あり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profileId', 'teamMemberId'], 'properties': {'fields': {'type': 'object', 'description': 'Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'profileId': {'type': 'string', 'description': 'The profile (booking page) id (path only; required).'}, 'teamMemberId': {'type': 'string', 'description': 'The team member id to update (path only; required).'}}}
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.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Full API path after the origin, starting with "/", e.g. "/v1/bookings?maxResults=5".'}}}
追加
create_location
2026年9月21日2:44
追加
update_team_member
2026年9月21日2:44
追加
create_team_member
2026年9月21日2:44
追加
update_appointment_type
2026年9月21日2:44
追加
create_appointment_type
2026年9月21日2:44
追加
update_profile
2026年9月21日2:44
追加
cancel_booking
2026年9月21日2:44
追加
update_booking
2026年9月21日2:44
追加
create_booking
2026年9月21日2:44
追加
youcanbookme_request
2026年9月21日2:44
追加
list_available_accounts
2026年9月21日2:44
追加
list_locations
2026年9月21日2:44
追加
list_appointment_types
2026年9月21日2:44
追加
list_team_members
2026年9月21日2:44
追加
get_profile
2026年9月21日2:44
追加
list_profiles
2026年9月21日2:44
追加
get_booking
2026年9月21日2:44
追加
list_bookings
2026年9月21日2:44