Skip to main content
Glama

bookeo

Create a booking

bookeo_create_booking
Destructive

Create a confirmed booking for an existing customer (customerId) or a new one (customer). fixed/fixedCourse products need an eventId from the availability tools; flexibleTime products take eventId or startTime. Pass previousHoldId to convert a hold. Does NOT record any payment. Reversible with bookeo_cancel_booking. Bookeo: POST /bookings.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoSet to "backend" to act as a manager, relaxing customer-facing limits (time in advance, participant limits, change windows).
endTimeNoOptional forced end time for flexibleTime products (otherwise Bookeo computes the duration) — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone.
eventIdNoSlot id from bookeo_get_availability_slots / bookeo_search_matching_slots. REQUIRED for fixed and fixedCourse products; optional for flexibleTime (use startTime instead).
optionsNoProduct options (see bookeo_list_products).
customerNoA NEW customer to create together with the booking. Use customerId instead for an existing customer.
productIdYesProduct id (see bookeo_list_products).
resourcesNoResources (e.g. a specific guide or instructor) — for flexibleTime products.
startTimeNoStart time, for flexibleTime products when no eventId is given — RFC 3339 date-time, e.g. 2026-10-01T09:00:00-04:00. The offset -00:00 means the account's local timezone.
customerIdNoId of an EXISTING customer (see bookeo_list_customers).
externalRefNoYour own reference for this booking (max 64 chars).
notifyUsersNoEmail/SMS the business's staff.
privateEventNoReserve the entire event, if the product allows it.
peopleNumbersYesParticipant counts per people category.
notifyCustomerNoSend the customer a confirmation email.
previousHoldIdNoHold id from bookeo_create_hold; it is released on success.
promotionCodeInputNoPromotion code(s), comma-separated.
sendCustomerThankyouNoSend the customer a thank-you after the booking.
sendCustomerRemindersNoSend the customer reminders before the booking.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful context beyond the destructiveHint annotation: the booking is created as confirmed, no payment is recorded, and it is reversible via bookeo_cancel_booking. The reversibility and payment-exclusion notes are exactly the sort of behavioral disclosure an agent needs. It stops short of 5 by not covering side effects like notifications firing or what happens to a released hold on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then packed with the highest-value constraints (product-type routing, hold conversion, no payment, reversibility) in a handful of tight sentences. No filler and no redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter tool with nested objects and no output schema, the description covers the crucial branching (customer vs customerId, eventId vs startTime) that determines whether a call succeeds. It does not mention the returned booking identifier, which the agent would want in order to subsequently cancel or update the booking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter logic the schema does not encode: eventId is mandatory for fixed products and optional for flexibleTime, and previousHoldId links to bookeo_create_hold. That relational guidance is genuine added value above the per-parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a confirmed booking') and immediately scopes it to existing vs new customers. It also names the sibling tools that relate to it (availability tools, bookeo_cancel_booking), so an agent can distinguish it from bookeo_create_hold and bookeo_update_booking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditional guidance: eventId required for fixed/fixedCourse, eventId or startTime for flexibleTime, customerId vs customer, and previousHoldId to convert a hold. It does not explicitly state when to prefer this over create_hold or update_booking, so it falls just short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.