Skip to main content
Glama

Book an appointment

book_appointment

Book one appointment for a customer. This creates a real booking: the business is notified, and if it has connected Cal.com the booking is created there too. With the demo key it's a dry run that books nothing. Not idempotent: booking the same time twice fails the second time. Only call it after the customer has confirmed the time and service; needs a 'start' from list_open_times and the customer's email or phone. Errors: 404 the time is no longer offered (call list_open_times again), 409 it was just taken, 400 missing start, service, or both email and phone, or the business's connected calendar needs a detail the customer didn't give (the message says which, e.g. an email). Returns JSON { booked, id, start, label }; keep 'id' if the customer may want to cancel.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoThe customer's name as they gave it; shown to the business.
emailNoThe customer's email. Give email or phone (at least one is required).
phoneNoThe customer's phone in international format, e.g. +6591234567. Give email or phone (at least one is required).
startYesThe exact 'start' value returned by list_open_times (ISO 8601 UTC), unchanged.
remarksNoOptional note for the business, up to 500 characters (e.g. 'first visit').
serviceYesWhat the customer is booking; use one of the 'services' returned by list_open_times.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (which only flag non-read-only, non-idempotent, open-world): it explains the demo-key dry run, the not-idempotent duplicate-booking failure, the external notification/Cal.com side effects, and a full 404/409/400 error taxonomy with meanings. Rich behavioral context the agent could not infer.

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 the core action and side effects, then prerequisites, then error semantics. Every sentence carries information, though the error catalogue and demo-key note make it longer than strictly minimal.

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?

Despite no output schema, the description names the return shape ({ booked, id, start, label }) and advises retaining 'id' for cancellation. Combined with prerequisites and error handling, nothing needed to invoke this mutation correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and already documents each field, including the email-or-phone requirement and the provenance of 'start'. The description restates those rules rather than adding new syntax or format detail, so it sits at the baseline for a fully documented schema.

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 ('Book one appointment for a customer') and immediately characterizes the side effects (real booking, business notified, Cal.com sync), which clearly separates it from cancel_appointment, list_open_times and answer_customer_question.

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?

Explicitly says to call it only after the customer has confirmed the time and service, names the required prerequisite source ('start' from list_open_times), and routes recovery on 404 back to list_open_times. Alternatives and conditions are fully specified.

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.