youcanbookme

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
95%
Calidad de los nombres
99%
Riesgo de envenenamiento
80%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringen update_booking

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,985Tokens (definiciones de herramientas)
~1.5 KBTamaño de respuesta típico
Impacto significativo en la atención (3.11% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "youcanbookme": {
      "url": "https://youcanbookme.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://youcanbookme.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (18)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢list_bookings(profileId, after, before, cancelled, searchText, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "description": "Restrict to bookings on this profile (booking page) id.",
      "type": "string"
    },
    "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"
    },
    "searchText": {
      "description": "Free-text search across booking fields (e.g. attendee name/email).",
      "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"
    },
    "page": {
      "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "maxResults": {
      "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "params": {
      "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_booking(bookingId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "bookingId": {
      "type": "string",
      "description": "The booking id."
    },
    "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"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_profiles(fields, page, maxResults, params)

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.

Esquema de entrada

{
  "type": "object",
  "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"
    },
    "page": {
      "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "maxResults": {
      "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "params": {
      "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_profile(profileId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id."
    },
    "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": [
    "profileId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_team_members(profileId)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id."
    }
  },
  "required": [
    "profileId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_appointment_types(profileId)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id."
    }
  },
  "required": [
    "profileId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_locations(profileId)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id."
    }
  },
  "required": [
    "profileId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_available_accounts

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.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢youcanbookme_request(path)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Full API path after the origin, starting with \"/\", e.g. \"/v1/bookings?maxResults=5\"."
    }
  },
  "required": [
    "path"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_booking(profileId, startsAt, endsAt, title, timeZone, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id to book on (required)."
    },
    "startsAt": {
      "type": "string",
      "description": "Booking start time, ISO 8601 (required)."
    },
    "endsAt": {
      "type": "string",
      "description": "Booking end time, ISO 8601 (required)."
    },
    "title": {
      "description": "Booking title.",
      "type": "string"
    },
    "timeZone": {
      "description": "IANA time zone for the booking (e.g. Europe/London).",
      "type": "string"
    },
    "locale": {
      "description": "Locale for the booking (e.g. en-GB).",
      "type": "string"
    },
    "units": {
      "description": "Number of slot units to book.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "startsAt",
    "endsAt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_booking(bookingId, title, startsAt, endsAt, cancelled, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "bookingId": {
      "type": "string",
      "description": "The booking id to update (path only; required)."
    },
    "title": {
      "description": "New booking title.",
      "type": "string"
    },
    "startsAt": {
      "description": "New start time, ISO 8601 (reschedule).",
      "type": "string"
    },
    "endsAt": {
      "description": "New end time, ISO 8601 (reschedule).",
      "type": "string"
    },
    "cancelled": {
      "description": "Set true to cancel the booking, false to un-cancel.",
      "type": "boolean"
    },
    "noShow": {
      "description": "Mark the attendee as a no-show (true) or not (false).",
      "type": "boolean"
    },
    "timeZone": {
      "description": "New IANA time zone.",
      "type": "string"
    },
    "locale": {
      "description": "New locale.",
      "type": "string"
    },
    "units": {
      "description": "New number of slot units.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "bookingId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴cancel_booking(bookingId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "bookingId": {
      "type": "string",
      "description": "The booking id to cancel (path only; required)."
    }
  },
  "required": [
    "bookingId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_profile(profileId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id to update (path only; required)."
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_appointment_type(profileId, name, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id (path only; required)."
    },
    "name": {
      "type": "string",
      "description": "The appointment type name (required)."
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_appointment_type(profileId, appointmentTypeId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "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)."
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "appointmentTypeId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_team_member(profileId, name, calendarId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id (path only; required)."
    },
    "name": {
      "type": "string",
      "description": "The team member's display name (required)."
    },
    "calendarId": {
      "description": "The calendar id to link (see list_available_accounts).",
      "type": "string"
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_team_member(profileId, teamMemberId, fields)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "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)."
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "teamMemberId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_location(profileId, kind, strategy, value, notes, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "profileId": {
      "type": "string",
      "description": "The profile (booking page) id (path only; required)."
    },
    "kind": {
      "type": "string",
      "description": "The location kind/type (required)."
    },
    "strategy": {
      "type": "string",
      "description": "The location assignment strategy (required)."
    },
    "value": {
      "description": "The location value (e.g. an address or link).",
      "type": "string"
    },
    "notes": {
      "description": "Notes shown with the location.",
      "type": "string"
    },
    "fields": {
      "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "profileId",
    "kind",
    "strategy"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Prompts recomendados

retrieve_data
Get details about [item] from youcanbookme
Herramientas esperadas: get_booking
fetch_info
Fetch [information type] using youcanbookme
Herramientas esperadas: get_booking
list_items
List all [items] available in youcanbookme
Herramientas esperadas: list_bookings
browse_collection
Show me the [collection] from youcanbookme
Herramientas esperadas: list_bookings
explore_workflow
List available [items], then get details for each one using youcanbookme
Herramientas esperadas: list_bookingsget_booking

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada18 herramientas