Skip to main content
Glama

create_booking

Creates a real booking reservation, requiring the guest's actual contact details and a start time obtained from availability checks; if pending, it provides the confirmation URL.

Instructions

Create a real reservation. Use a start value returned by check_availability. Never invent guest details. Ask the person for their real name, email and phone first. If the result status is pending_confirmation, show the guest the confirmation_url.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYes
emailYes
notesNo
phoneYes
startYesThe slot's `start` value, copied exactly as check_availability returned it.
sourceNoWhich assistant is booking. Defaults to other_ai. proof_video is our own channel: bookings made while filming a proof clip.
languageNoThe guest's language as an ISO 639-1 code: en, nl, de, fr, es, it, id or bg. The confirmation, the reminders and the manage page are sent in it. Defaults to English.
party_sizeYes
idempotency_keyNoRetry safety: pick any unique string for this booking attempt and reuse it on retries. The same key always returns the same booking, never a duplicate.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.0
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Retry safety: pick any unique string for this booking attempt and reuse it on retries — the same key always returns the same booking, never a duplicate."New value: +"Retry safety: pick any unique string for this booking attempt and reuse it on retries. The same key always returns the same booking, never a duplicate."
  2. Changed1 schema field changedv1.0.2
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "The guest's language as an ISO 639-1 code: en, nl, de, fr, es, it, id or bg. The confirmation, the reminders and the manage page are sent in it. Defaults to English.",
      +  "type": "string"
      +}
  3. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden and does so well: it flags that this creates a real reservation, a consequential irreversible side effect, and forbids fabricating guest data. It also reveals response behavior — the pending_confirmation status and confirmation_url field — which an agent needs to act correctly on the result.

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?

Four short sentences, each earning its place: purpose, prerequisite, data-integrity rule, and post-call handling. The core operating constraints ('real reservation', 'never invent guest details') are front-loaded ahead of workflow details, with zero filler.

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 10-param mutation tool with no annotations and no output schema, the description covers the full call sequence: obtaining a valid start, collecting honest guest data, creating the booking, and reacting to the pending_confirmation result. The only notable gap is the lack of guidance for other possible result statuses or failure handling, which is a minor omission given the overall clarity.

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 only 40%, and the description compensates where it matters most: start must come verbatim from check_availability, and name/email/phone must be real details supplied by the person rather than invented. It leaves party_size, slug, and notes semantically uncovered, but the riskiest hallucination-prone fields are addressed.

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+resource ('Create a real reservation') up front, and the qualifier 'real' signals live side effects. The verb set clearly differentiates it from siblings such as cancel_booking, check_booking, and check_availability without needing to open any 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 routes the agent to check_availability as the required source of the start value, establishing a clear precondition and naming the sibling to call first. It also sequences the workflow — ask the guest for real name/email/phone before calling — and specifies how to handle the pending_confirmation response. It stops short of a full when-not-to-use inventory, but the context is unambiguous.

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