Server definition
- Hash
- sha256:a1c0e2fba23c053eb7938953c6faacf4a5f504142df5d5da6bebea22a44bc7ed
- What it is
- What a remote MCP server returned when asked what it offers: 18 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bookingId": {
"description": "The booking id to cancel (path only; required).",
"type": "string"
}
},
"required": [
"bookingId"
],
"type": "object"
},
"name": "cancel_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"name": {
"description": "The appointment type name (required).",
"type": "string"
},
"profileId": {
"description": "The profile (booking page) id (path only; required).",
"type": "string"
}
},
"required": [
"profileId",
"name"
],
"type": "object"
},
"name": "create_appointment_type",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"endsAt": {
"description": "Booking end time, ISO 8601 (required).",
"type": "string"
},
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"locale": {
"description": "Locale for the booking (e.g. en-GB).",
"type": "string"
},
"profileId": {
"description": "The profile (booking page) id to book on (required).",
"type": "string"
},
"startsAt": {
"description": "Booking start time, ISO 8601 (required).",
"type": "string"
},
"timeZone": {
"description": "IANA time zone for the booking (e.g. Europe/London).",
"type": "string"
},
"title": {
"description": "Booking title.",
"type": "string"
},
"units": {
"description": "Number of slot units to book.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
}
},
"required": [
"profileId",
"startsAt",
"endsAt"
],
"type": "object"
},
"name": "create_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"kind": {
"description": "The location kind/type (required).",
"type": "string"
},
"notes": {
"description": "Notes shown with the location.",
"type": "string"
},
"profileId": {
"description": "The profile (booking page) id (path only; required).",
"type": "string"
},
"strategy": {
"description": "The location assignment strategy (required).",
"type": "string"
},
"value": {
"description": "The location value (e.g. an address or link).",
"type": "string"
}
},
"required": [
"profileId",
"kind",
"strategy"
],
"type": "object"
},
"name": "create_location",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"calendarId": {
"description": "The calendar id to link (see list_available_accounts).",
"type": "string"
},
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"name": {
"description": "The team member's display name (required).",
"type": "string"
},
"profileId": {
"description": "The profile (booking page) id (path only; required).",
"type": "string"
}
},
"required": [
"profileId",
"name"
],
"type": "object"
},
"name": "create_team_member",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bookingId": {
"description": "The booking id.",
"type": "string"
},
"fields": {
"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.",
"type": "string"
}
},
"required": [
"bookingId"
],
"type": "object"
},
"name": "get_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"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.",
"type": "string"
},
"profileId": {
"description": "The profile (booking page) id.",
"type": "string"
}
},
"required": [
"profileId"
],
"type": "object"
},
"name": "get_profile",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"profileId": {
"description": "The profile (booking page) id.",
"type": "string"
}
},
"required": [
"profileId"
],
"type": "object"
},
"name": "list_appointment_types",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_available_accounts",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"after": {
"description": "Only bookings starting AFTER this time (ISO 8601, e.g. 2026-07-01T00:00:00Z).",
"type": "string"
},
"before": {
"description": "Only bookings starting BEFORE this time (ISO 8601).",
"type": "string"
},
"cancelled": {
"description": "Filter by cancelled status: true = only cancelled, false = only active. Omit for all.",
"type": "boolean"
},
"fields": {
"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.",
"type": "string"
},
"maxResults": {
"description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"page": {
"description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"params": {
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"profileId": {
"description": "Restrict to bookings on this profile (booking page) id.",
"type": "string"
},
"searchText": {
"description": "Free-text search across booking fields (e.g. attendee name/email).",
"type": "string"
}
},
"type": "object"
},
"name": "list_bookings",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"profileId": {
"description": "The profile (booking page) id.",
"type": "string"
}
},
"required": [
"profileId"
],
"type": "object"
},
"name": "list_locations",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"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.",
"type": "string"
},
"maxResults": {
"description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"page": {
"description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"params": {
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
"propertyNames": {
"type": "string"
},
"type": "object"
}
},
"type": "object"
},
"name": "list_profiles",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"profileId": {
"description": "The profile (booking page) id.",
"type": "string"
}
},
"required": [
"profileId"
],
"type": "object"
},
"name": "list_team_members",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"appointmentTypeId": {
"description": "The appointment type id to update (path only; required).",
"type": "string"
},
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"profileId": {
"description": "The profile (booking page) id (path only; required).",
"type": "string"
}
},
"required": [
"profileId",
"appointmentTypeId"
],
"type": "object"
},
"name": "update_appointment_type",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bookingId": {
"description": "The booking id to update (path only; required).",
"type": "string"
},
"cancelled": {
"description": "Set true to cancel the booking, false to un-cancel.",
"type": "boolean"
},
"endsAt": {
"description": "New end time, ISO 8601 (reschedule).",
"type": "string"
},
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"locale": {
"description": "New locale.",
"type": "string"
},
"noShow": {
"description": "Mark the attendee as a no-show (true) or not (false).",
"type": "boolean"
},
"startsAt": {
"description": "New start time, ISO 8601 (reschedule).",
"type": "string"
},
"timeZone": {
"description": "New IANA time zone.",
"type": "string"
},
"title": {
"description": "New booking title.",
"type": "string"
},
"units": {
"description": "New number of slot units.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
}
},
"required": [
"bookingId"
],
"type": "object"
},
"name": "update_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"profileId": {
"description": "The profile (booking page) id to update (path only; required).",
"type": "string"
}
},
"required": [
"profileId"
],
"type": "object"
},
"name": "update_profile",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"additionalProperties": {},
"description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"profileId": {
"description": "The profile (booking page) id (path only; required).",
"type": "string"
},
"teamMemberId": {
"description": "The team member id to update (path only; required).",
"type": "string"
}
},
"required": [
"profileId",
"teamMemberId"
],
"type": "object"
},
"name": "update_team_member",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"path": {
"description": "Full API path after the origin, starting with \"/\", e.g. \"/v1/bookings?maxResults=5\".",
"type": "string"
}
},
"required": [
"path"
],
"type": "object"
},
"name": "youcanbookme_request",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a1c0e2fba23c053eb7938953c6faacf4a5f504142df5d5da6bebea22a44bc7ed | sha256sum