Herramientas · Reservas y Agendamiento
Herramientas MCP de las Reservas (salas, mesas y estaciones) y del Agendamiento (horarios de personas): buscar lo que está libre, reservar con costo en créditos, reprogramar, cancelar, ausencia, invitación de calendario, salas, bloqueos, franjas de precio y aprobación de agendas. Rol mínimo y recetas.
El módulo Reservas y el Agendamiento con el asistente: buscar salas y horarios libres (con el costo en créditos y tu saldo), reservar, reprogramar, cancelar, marcar ausencia, descargar la invitación de calendario, registrar salas y mesas, bloquear horarios, definir precios y aprobar agendas de miembros. Los dos módulos usan las mismas herramientas de reserva; las de Agendamiento son las cinco últimas.
Cada herramienta lleva un sello: Solo consulta no cambia nada, Modifica crea o cambia algo al momento, y Pide confirmación solo actúa después de tu sí a un resumen. Consulta Dinero y confirmación.
En resumen
| Herramienta | Qué hace | Rol mínimo | Tipo |
|---|---|---|---|
search_booking_rooms | Encuentra lo que cumple la solicitud, con costo y saldo | Cualquiera que vea el espacio | Solo consulta |
check_availability | Los horarios libres y ocupados de un día | Cualquiera que vea el espacio | Solo consulta |
list_booking_resources | Las salas, mesas, estaciones y agendas | Cualquiera que vea el espacio | Solo consulta |
list_booking_amenities | El catálogo de comodidades | Cualquiera | Solo consulta |
get_booking_resource | Una sala con las reglas ya resueltas | Cualquiera que vea el espacio | Solo consulta |
create_booking | Reserva para ti y debita tus créditos | Cualquiera | Modifica |
create_booking_for_member | Reserva a nombre de un miembro, debitando sus créditos | Moderador (o finanzas) | Pide confirmación |
list_my_bookings | Tus reservas (o las que hicieron contigo) | Cualquiera | Solo consulta |
list_bookings | Todas las reservas de la comunidad | Moderador (o finanzas) | Solo consulta |
get_booking | Una reserva | Titular, anfitrión y equipo | Solo consulta |
cancel_booking | Cancela y reembolsa según la regla | Titular, anfitrión y equipo | Pide confirmación |
reschedule_booking | Cambia el horario y ajusta los créditos | Titular, anfitrión y equipo | Pide confirmación |
mark_booking_no_show | Marca la ausencia | Equipo y anfitrión | Modifica |
get_booking_ics | La invitación de calendario (.ics) | Titular, anfitrión y equipo | Solo consulta |
create_booking_resource | Crea una sala, mesa o agenda | Administrador (salas) | Modifica |
update_booking_resource | Edita, cambia o quita la foto | Administrador (salas) | Modifica |
delete_booking_resource | Elimina (cancelando las reservas futuras) | Administrador | Pide confirmación |
list_availability_exceptions | Bloqueos y horarios extra | Cualquiera que vea el espacio | Solo consulta |
create_availability_exception | Bloquea o abre un período | Equipo (salas) | Modifica |
cancel_bookings_for_closure | Bloquea cancelando las reservas del período | Equipo (salas) | Pide confirmación |
delete_availability_exception | Quita un bloqueo u horario extra | Equipo (salas) | Pide confirmación |
list_price_rules | Las franjas de precio de una sala | Administrador | Solo consulta |
create_price_rule | Crea una franja de precio | Administrador | Modifica |
update_price_rule | Edita una franja | Administrador | Modifica |
delete_price_rule | Quita una franja | Administrador | Pide confirmación |
get_scheduling_config | Las reglas del Agendamiento y tus agendas | Cualquiera que vea el espacio | Solo consulta |
search_scheduling_hosts | Personas con horario libre | Cualquiera que vea el espacio | Solo consulta |
get_scheduling_host | La página de una persona, con la cuadrícula | Cualquiera que vea el espacio | Solo consulta |
list_pending_scheduling_offers | Agendas esperando aprobación | Administrador | Solo consulta |
set_booking_resource_listing | Aprueba o retira una agenda | Administrador | Modifica |
"Equipo" es el propietario, el administrador, el moderador y finanzas. Los roles son los de las rutas: el asistente nunca hace más de lo que la persona conectada haría en la pantalla.
Los espacios se crean con create_space y module: "bookings" o "scheduling"; update_space cambia solo lo que envíes. El argumento bookings lleva los valores predeterminados de toda sala (slot_minutes, min_duration_minutes, max_duration_minutes, min_notice_minutes, max_advance_days, show_booker_name y opening_hours, con las claves mon a sun y períodos HH:MM); scheduling lleva los mismos y además offerers (ADMINS, TEAM o MEMBERS), allow_paid_slots y require_listing_approval.
Horarios. Los horarios que envías son siempre del reloj de la comunidad ("2026-11-03T14:00", sin sufijo). Costos. Reservar, reprogramar y cancelar mueven los créditos: el asistente dice el costo y el saldo antes de reservar. Sin créditos suficientes, la respuesta trae required, balance y shortfall; con el horario ocupado, trae los próximos horarios libres.
Buscar y consultar
search_booking_rooms
Solo consulta
Lo que cumple la solicitud. Da un inicio exacto (starts_at) o una franja del día (date con from y to), además de duración, capacidad y comodidades. Devuelve solo los recursos que cumplen, con las horas de inicio libres, el costo en créditos, canAfford y tu saldo, ordenados por el más temprano y luego por la menor capacidad; cuando nada sirve, next_slots lista los próximos horarios para la misma solicitud.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
space | id o enlace | Sí | El espacio Reservas o Agendamiento |
starts_at | fecha y hora | No | Inicio exacto, hora local |
date, from, to | día AAAA-MM-DD, HH:MM | No | La franja de una búsqueda |
duration_minutes | número, 5 o más | No | Duración |
capacity | número | No | Cuántas personas deben caber |
amenities | lista de claves | No | Se exigen todas (de list_booking_amenities) |
kind | ROOM, DESK, STATION, OTHER o PERSON | No | El tipo |
host_profile_id | id | No | Solo las agendas de esta persona |
Pídelo así: "Necesito una sala para 6 personas mañana de 14:00 a 16:00, con proyector."
check_availability
Solo consulta
Libre y ocupado. Los horarios de un día (o de hasta 7), calculados a partir del horario semanal, los bloqueos y las reservas, cada uno libre con creditCost y canAfford. Nunca dice quién reservó, salvo que el espacio muestre el nombre.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
space | id o enlace | Sí | |
date | AAAA-MM-DD | No | El día (por defecto: hoy) |
days | 1 a 7 | No | Cuántos días |
resource_id, host_profile_id | id | No | Una sola sala, o una sola persona |
duration_minutes | número | No | Por defecto: la reserva más corta |
list_booking_resources
Solo consulta
Las salas. Salas, mesas, estaciones y agendas del espacio. El miembro ve solo las visibles, activas y abiertas a reservas; el equipo las ve todas. Parámetros: space (obligatorio), kind, host_profile_id, page, limit.
list_booking_amenities
Solo consulta
El catálogo de comodidades que acepta la comunidad (proyector, TV, pizarra, Wi-Fi…). Una clave fuera del catálogo se rechaza. Sin parámetros.
get_booking_resource
Solo consulta
Una sala con las reglas efectivas ya combinadas con los valores predeterminados del espacio (horario, intervalo, límites de duración, antelación, plazo de cancelación). Parámetro: resource_id.
Reservar
create_booking
Modifica
Reservar para ti. Reserva al momento (ya confirmada) y debita tus créditos en el mismo paso. Antes, el asistente dice el costo y el saldo. Para reservar a nombre de otro miembro, usa create_booking_for_member. La cortesía (waive_credits con waive_reason) es solo del propietario y del administrador. El correo de confirmación con la invitación de calendario entra en la cola. Devuelve creditCost y balanceAfter.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
resource_id | id | Sí | De list_booking_resources o de la búsqueda |
starts_at | fecha y hora | Sí | Hora local, p. ej. 2026-11-03T14:00 |
ends_at o duration_minutes | fecha y hora o número | Uno de los dos | Por defecto: la reserva más corta |
attendee_count | número | No | Cuántas personas |
title, notes | texto | No | Para qué es y notas |
waive_credits, waive_reason | verdadero o falso, texto | No | Cortesía, solo propietario y administrador |
Pídelo así: "Reserva la Sala 2 mañana de 14:00 a 16:00 para 6 personas."
create_booking_for_member
Pide confirmación
Reservar a nombre de un miembro. Debita sus créditos (o sale gratis como cortesía, solo propietario y administrador, con waive_reason) y el miembro recibe el correo con la invitación. Antes de actuar, muestra un resumen con el miembro y su saldo y solo repite la llamada después de tu sí. Mismos parámetros y mismas respuestas que create_booking, más profile_id. Rol mínimo: moderador (o finanzas).
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
profile_id | id | Sí | El miembro (list_members) |
Pídelo así: "Reserva la Sala 1 el viernes a las 10:00 a nombre de María."
list_my_bookings
Solo consulta
Tus reservas, o, con as_host, las que hicieron las personas en la agenda que ofreces. Filtros: space, resource_id, status (lista, p. ej. CONFIRMED,NO_SHOW), from, to, order, page, limit. Cada una trae canCancel.
list_bookings
Solo consulta
Todas las reservas de la comunidad, con los mismos filtros. Rol mínimo: moderador (o finanzas).
get_booking
Solo consulta
Una reserva: sala, persona, horarios, situación, costo en créditos, si fue cortesía o cancelación tardía y lo que puede hacer quien pregunta. Solo el titular, el anfitrión y el equipo; otra persona recibe 404. Parámetro: booking_id.
Cambiar una reserva
cancel_booking
Pide confirmación
Cancelar. Si el titular cancela después del plazo (24 h por defecto), la cancelación se marca como tardía y puede perder los créditos; dentro del plazo, o cuando cancela el equipo o el anfitrión, el reembolso es completo. La persona recibe el correo y el evento se cancela en su calendario. Una reserva que ya ha empezado no se cancela (usa la ausencia). Muestra un resumen y solo actúa después de tu sí.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
booking_id | id | Sí | |
reason | texto | No | Va en el correo |
reschedule_booking
Pide confirmación
Reprogramar. Cambia el horario en la misma sala (lo que no envíes se queda, y la duración se mantiene). Mueve los créditos: un horario más caro debita la diferencia (sin saldo, la respuesta trae shortfall), uno más barato reembolsa, una cortesía no toca el libro. La invitación se actualiza y la persona recibe un correo. Muestra el resumen y devuelve charged, refunded y balanceAfter.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
booking_id | id | Sí | |
starts_at, ends_at, duration_minutes | fecha y hora, número | No | El nuevo horario |
attendee_count | número | No |
mark_booking_no_show
Modifica
Marcar la ausencia. Solo para una reserva confirmada que ya ha empezado. La comunidad decide si los créditos se pierden; la respuesta dice cuántos se devolvieron. Equipo y anfitrión. Parámetro: booking_id.
get_booking_ics
Solo consulta
La invitación de calendario, el mismo archivo del correo de confirmación, devuelto como texto en ics con el nombre del archivo (una reserva cancelada devuelve la cancelación). Parámetro: booking_id.
Salas, bloqueos y precios
create_booking_resource
Modifica
Crear una sala, mesa o agenda. kind es ROOM, DESK, STATION u OTHER (propietario y administrador); en el Agendamiento, PERSON: quién puede crear la agenda de una persona lo decide el offerers del espacio (un miembro crea solo la suya). El tipo no cambia después. Sin franja de precio, es gratis.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
space | id o enlace | Sí | |
kind | tipo | Sí | |
name | texto | Sí | Cómo la ven los miembros |
description, capacity, units, amenities | No | units: reservas simultáneas (1 = exclusiva) | |
bookable, active, listed | verdadero o falso | No | listed solo propietario y administrador |
meeting_url | enlace | No | Enlace de videollamada |
opening_hours | horario semanal | No | Claves mon a sun, períodos HH:MM |
slot_minutes, min_duration_minutes, max_duration_minutes, buffer_minutes, min_notice_minutes, max_advance_days, cancellation_window_hours | número | No | En blanco, sigue al espacio |
image_url o image_base64 | No | La foto | |
owner_profile_id | id | No | Agendamiento, propietario y administrador: de quién es la agenda |
update_booking_resource
Modifica
Editar. Cambia solo lo que envíes; cambia la foto con image_url o image_base64 y la quita con remove_image. Las reservas existentes conservan el precio. Parámetro resource_id más los campos de arriba. En el Agendamiento, quien ofrece edita su propia agenda, salvo listed.
delete_booking_resource
Pide confirmación
Eliminar. Con reservas futuras activas, la respuesta es 409 listándolas; con cancel_bookings: true, las cancela todas (reembolso completo y correo para cada persona) y elimina. Propietario o administrador.
list_availability_exceptions
Solo consulta
Bloqueos (CLOSED) y horarios extra (OPEN) de una sala de aquí en adelante. Parámetros: resource_id, from.
create_availability_exception
Modifica
Bloquear o abrir un período. kind es CLOSED (por defecto: mantenimiento, festivo) u OPEN (extra). Un bloqueo con reservas activas se rechaza con 409 listándolas: para cancelarlas, usa cancel_bookings_for_closure. Salas: el equipo; agendas de personas: quien ofrece y el propietario y el administrador.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
resource_id | id | Sí | |
starts_at, ends_at | fecha y hora | Sí | Hora local |
kind | CLOSED u OPEN | No | Por defecto CLOSED |
reason | texto | No | Aparece para quien tiene la reserva cancelada |
cancel_bookings_for_closure
Pide confirmación
Bloquear cancelando. Bloquea el período y cancela toda reserva activa dentro de él: cada una se reembolsa completa, cada persona recibe el correo y el evento se cancela en su calendario. Dice cuántas se cancelaron. Úsala después de que create_availability_exception haya respondido 409 y la persona esté de acuerdo. Parámetros: resource_id, starts_at, ends_at, reason.
delete_availability_exception
Pide confirmación
Quitar un bloqueo u horario extra. Las reservas que el bloqueo ya canceló no regresan. Parámetros: resource_id, exception_id.
list_price_rules
Solo consulta
Las franjas de precio de una sala (la única fuente de precio; sin franja, es gratis). Vale la primera que encaja: fecha concreta, luego día de la semana, luego la predeterminada; el costo es por bloque, y cada bloque usa la franja en la que empieza. Propietario o administrador. Parámetro: resource_id.
create_price_rule
Modifica
Crear una franja. Por ejemplo, 3 créditos cada 30 minutos. Un horario ofrecido por un miembro siempre es gratis; en el Agendamiento, una franja de pago necesita Permitir horarios de pago en el espacio (409). El cobro en dinero aún no se hace.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
resource_id | id | Sí | |
mode | FREE o CREDITS | Sí | |
block_minutes | 5 a 1440 | Con CREDITS | El tamaño del bloque |
credits | entero | Con CREDITS | Créditos por bloque |
weekday | 0 (domingo) a 6 | No | En blanco, todos los días |
specific_date | AAAA-MM-DD | No | Vale más que el día de la semana |
from_time, to_time | HH:MM | No | El tramo del día |
update_price_rule
Modifica
Editar una franja (resource_id, rule_id, y solo lo que cambie). Las reservas ya hechas conservan el precio.
delete_price_rule
Pide confirmación
Quitar una franja. Sin ninguna, la sala queda gratis; las reservas ya hechas conservan el precio. Parámetros: resource_id, rule_id.
Agendamiento
get_scheduling_config
Solo consulta
Las reglas del espacio: quién ofrece (offerers), allowPaidSlots, requireListingApproval, si puedes ofrecer ahora, tus agendas y, para el propietario y el administrador, cuántas ofertas esperan aprobación. El horario de un miembro siempre es gratis. Parámetro: space.
search_scheduling_hosts
Solo consulta
Personas con horario libre. Cada una viene con sus agendas, cuántos horarios libres tiene y los próximos 3 (gratis o el costo en créditos, con canAfford) y tu saldo. Cuando nadie tiene horario, sugiere los más cercanos. Para reservar, usa create_booking.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
space | id o enlace | Sí | |
q | texto | No | Parte del nombre |
date, from, to | No | El día y la franja; sin día, los próximos 14 | |
duration_minutes, host_profile_id, page, limit | No |
get_scheduling_host
Solo consulta
La página de una persona, con la cuadrícula de horarios libres por día (1 a 7 días). Una persona sin agenda visible, que perdió el rol o de otra comunidad responde 404. Parámetros: space, profile_id, date, days, duration_minutes.
list_pending_scheduling_offers
Solo consulta
Agendas esperando aprobación, cada una con su dueño y si aún cumple la regla de quién ofrece. Propietario o administrador. Parámetro: space.
set_booking_resource_listing
Modifica
Aprobar o retirar una agenda. listed: true aprueba (la agenda aparece a los miembros); false la retira (no cancela ninguna reserva ya hecha, solo impide las nuevas). Reversible, sin confirmación. Propietario o administrador. Parámetros: resource_id, listed.