Skip to main content
Glama

Start a booking

start_booking
Destructive

Validates and prices a stay, checks current availability without holding a room, and emails a six-digit code. Requires the property, room type, dates, guest name, email and contact phone. The intent and code last 15 minutes. An identical start while its intent remains open returns the same booking_id without another email; that booking_id can resend the code. A start with any changed detail replaces the earlier unproved intent at the same property. No stored contact stays are read before verification; the phone affects no pre-verification limit. Each normalized email can receive at most three booking codes per hour and six per rolling 24 hours across the portfolio. Configurable portfolio hourly and rolling daily ceilings and a property hourly ceiling apply; booking codes pause if the hub counter cannot confirm both budgets within two seconds. Reaching a ceiling returns the requested stay link and property phone. The resend mode takes only booking_id; at most two resends are allowed, at least 60 seconds apart. A room is held only after email-code verification succeeds. If chat booking is switched off, returns the prefilled reserve.html link.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "start_booking"
  }
}

Input Schema

NameRequiredDescriptionDefault
emailNoEmail address for the verification code.
notesNoOptional plain-text arrival details or requests.
phoneNoContact phone number, with country code for international numbers.
guestsNoGuest count, subject to the room limit.
checkinNoArrival date, YYYY-MM-DD.
checkoutNoDeparture date, YYYY-MM-DD.
propertyNoProperty name, slug, domain or unique short name.
roomtypeNoRoom type: single, double or studio; case-insensitive.
booking_idNoOpaque identifier returned by the first step.
guest_nameNoGuest name.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior5/5

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

Annotations mark this as destructive/open-world/non-idempotent, and the description backs that with concrete side effects: an email is dispatched, per-email rate limits (3/hour, 6/24h), portfolio and property hourly ceilings, a two-second hub-confirmation timeout that pauses codes, and 15-minute intent expiry. It also discloses the dedupe nuance (same booking_id while the intent is open) and what a ceiling returns (stay link plus property phone). This is exactly the extra context annotations cannot carry.

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

Conciseness3/5

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

The core action and constraints are front-loaded in the first sentence, which is good. But the remainder is a dense run-on block mixing rate limits, dedupe, fallbacks and resend rules without paragraph or list structure, and phrases like 'No stored contact stays are read before verification' are hard to parse on first read.

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 ten-parameter, multi-mode, side-effecting tool with no output schema, the description covers the prerequisites, throttling, expiry, fallback path and resend variant, which is most of what an agent needs to call it correctly. What it omits is the downstream handoff — that verification/confirmation happens via a sibling tool — leaving the post-call path implicit.

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 real semantics: it names the required field set, explains that the email is normalized for throttling, that the phone affects no pre-verification limit, and that resend mode accepts only booking_id (effectively a mutually exclusive parameter regime). One caveat: it says property, room type, dates, guest name, email and phone are 'required' while the schema lists no required fields, which could mislead.

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

Purpose4/5

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

The description gives a specific compound verb set — validates and prices a stay, checks availability without holding, emails a six-digit code — which is far more than restating 'Start a booking'. It also carves out a negative scope (no room hold) that separates it from a reservation-creating tool. It stops short of explicitly naming siblings like quote_stay or find_rooms, so the boundary is inferable rather than stated.

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?

Clear context for when this step applies: it produces an intent plus code, a room is only held after verification, and repeated identical starts reuse the open intent. The resend sub-mode is scoped explicitly ('takes only booking_id', two resends, 60s apart) and the chat-disabled fallback to reserve.html is spelled out. It never says when to prefer quote_stay or the next step confirm_booking, so the workflow routing is only implied.

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