Skip to main content
Glama

bookeo

Hold seats (price check)

bookeo_create_hold
Destructive

Temporarily reserve the seats/resources for a draft booking (default 300 s, max 600 s) and get the FINAL price, taxes and amount payable. The recommended step before bookeo_create_booking: pass the returned hold id as previousHoldId there. Holds expire automatically. Bookeo: POST /holds.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
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).
privateEventNoReserve the entire event, if the product allows it.
peopleNumbersYesParticipant counts per people category.
previousHoldIdNoA previous hold in the same session, replaced by this one.
promotionCodeInputNoPromotion code(s), comma-separated.
holdDurationSecondsNoHow long to hold, in seconds (default 300, max 600).

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?

Annotations only carry destructiveHint=true, and the description usefully clarifies the mutation is transient rather than permanent: 'Holds expire automatically', plus the duration window (default 300 s, max 600 s). It also discloses that pricing returned is final, which is behaviorally meaningful for a price-check step. It doesn't cover failure semantics (what happens when the requested seats are already held).

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?

Three short sentences, front-loaded with the core action and price outcome, then the sibling handoff, then expiry/API mapping. No filler and no repetition of schema prose.

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 a 14-parameter, nested-object mutation with no output schema, the description covers purpose, the critical chaining parameter, expiry behavior and the price return, which is enough to call it correctly. Minor gaps remain around error/conflict behavior and what exactly the hold response contains beyond the id and price.

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 description coverage is 100%, so the baseline is 3 and the schema already documents all 14 parameters. The description adds workflow-level meaning the schema lacks: that the holdDurationSeconds window is bounded and defaulted, and that previousHoldId is the mechanism for chaining a hold into the subsequent booking call.

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 concrete verb+resource ('temporarily reserve the seats/resources for a draft booking') and adds the secondary outcome ('get the FINAL price, taxes and amount payable'), which cleanly separates it from bookeo_create_booking. An agent can identify the tool's role without opening the schema.

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?

Explicitly positions itself as 'the recommended step before bookeo_create_booking' and states the handoff ('pass the returned hold id as previousHoldId there'), which gives clear when-to-use routing. It stops short of stating when a hold can be skipped (e.g. pure price enquiry or read-only availability checks).

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.