Skip to main content
Glama

Create booking request

create_booking_request
Idempotent

WHEN: use it only after the traveller has (1) picked ONE category and dates, (2) given name, email and phone, and (3) EXPLICITLY accepted the cancellation policy — never set accepted_terms: true on your own. WHAT IT RETURNS: booking_id, checkout_url (a page on beachvalencia.com that shows the breakdown and asks the guest to tick the cancellation policy BEFORE jumping to Stripe), expires_at (ISO 8601, ~30 min in the future), hold_minutes: 30, total/nightly EUR, nights, guests, property, deposit, cancellation summary, terms_url, idempotent (true if a prior request with the same category+dates+pax+email was replayed), and a message ready to show to the guest. PAYMENT: always on Stripe, hosted at beachvalencia.com. The agent NEVER charges the guest itself. If the hold expires without payment, the unit is released automatically and a new request is needed. The price is the public rate (no member discount, no coupon codes — if the guest has a code, they apply it on the web). IDEMPOTENCY: a replay with the same category, dates, pax and email returns the same booking. EXAMPLE: {"id":"G4","check_in":"2027-05-22","check_out":"2027-05-27","adults":4,"guest_name":"Ada Lovelace","guest_email":"ada@example.com","guest_phone":"+34612345678","language":"en","accepted_terms":true}.

Input Schema

NameRequiredDescriptionDefault
idYesProperty/type ID (G1..G6 or G4B).
adultsYesNumber of adults.
check_inYesArrival date YYYY-MM-DD (Europe/Madrid).
childrenNoOptional list of children ages. Only the count is used to size the property.
languageYesLanguage for the confirmation email and error messages.
check_outYesDeparture date YYYY-MM-DD (Europe/Madrid); strictly after check_in.
guest_nameYesGuest's full name.
guest_emailYesGuest's email — receives the payment link and confirmation.
guest_phoneYesGuest's phone number, including country code.
accepted_termsYesMust be true. The agent confirms the traveller accepted the cancellation policy and the terms and conditions.

Output Schema

NameRequiredDescriptionDefault
guestsYes
nightsYes
depositYes
messageYes
currencyYes
propertyYes
breakdownNo
terms_urlYes
booking_idYes
expires_atYes
idempotentYes
cancellationYes
checkout_urlYes
hold_minutesYes
nightly_avg_eurNo
total_price_eurYes
cancellation_details_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Goes well past annotations: payment is always on Stripe, the agent never charges, the 30-minute hold auto-releases the unit, price is the public rate with no coupons, and idempotency keys on category+dates+pax+email. These add real behavioral context even though idempotentHint/destructiveHint already flag the safety profile.

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

Conciseness4/5

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

Front-loaded with WHEN, then returns, payment, idempotency, and a worked example — a well-ordered structure. Minor waste: the 30-minute hold is stated twice ('~30 min' and 'hold_minutes: 30'), and the return-field list partly duplicates the existing output schema.

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

Completeness5/5

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

For a 10-parameter mutation with real consent and payment consequences, nothing an agent needs is missing: preconditions, consent rule, hold expiry behavior, pricing rules, idempotency, and a concrete example are all present. The output schema covers return shape, so the description's field enumeration is surplus rather than a gap.

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; the description earns above that by defining the idempotency tuple that actually determines replay behavior and by making the accepted_terms semantics a consent rule rather than a plain boolean. It stops short of 5 because per-parameter formats remain the schema's job.

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?

A specific verb+resource ('create booking request') whose WHEN clause makes the position in the booking flow unambiguous relative to search_availability and get_quote. An agent knows exactly what is being produced (a booking_id plus a hosted checkout_url).

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

Usage Guidelines5/5

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

The WHEN block lays out three hard preconditions (category+dates chosen, contact details gathered, explicit policy acceptance) and an explicit prohibition ('never set accepted_terms: true on your own'). This is a genuine when/when-not rule rather than an implied flow.

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.

Resources