Skip to main content
Glama

Book an appointment

book_appointment

Book one free time for a person, paid at the clinic. Give option_id, clinic_id, date and time from find_free_times, and the person's name and mobile number (practitioner_id and add_on_ids if chosen). Nothing is booked yet: a code goes to the person by SMS, and the answer has the price, the place and the cancellation notice. Tell the person these and that the clinic's terms apply, ask for the code, then call confirm_with_code.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "option_id": "<option_id>",
      "date": "<date>",
      "time": "<time>",
      "name": "<name>",
      "phone": "<phone>"
    },
    "name": "book_appointment"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateYesThe day (YYYY-MM-DD) of a free time find_free_times returned.
nameYesThe person's full name, as they say it.
noteNoA short note to the clinic in the person's words. Never health details.
timeYesThe start (HH:MM) of a free time find_free_times returned.
emailNoThe person's email address. Optional.
phoneYesThe person's mobile number. The code goes there by SMS.
localeNoAnswer language: nb (Norwegian) or en.nb
clinic_idNoThe clinic_id find_clinics returns. Never build it from a name. A clinic site needs none.
option_idYesThe option_id get_treatment returns.
add_on_idsNoAdd-on ids from get_booking_choices. Their minutes lengthen each time.
package_idNoA package_id from get_booking_choices: the visit is the first session of the package.
guest_namesNoThe other guests, for a treatment booked for several guests at once (party_size above 1).
practitioner_idNoA practitioner free at that time; omit for the first one free.

Output Schema

NameRequiredDescriptionDefault
statusYescode_sent: ask the person for the code, then call confirm_with_code.
bookingYesTell the person this before asking for the code.
channelYessms or email.
expires_atYesWhen the code stops working.
code_sent_toYesThe masked phone or email the code went to.
confirmation_idYesPass it to confirm_with_code with the code.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.2/5.0
Behavior3/5

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

The description adds real behavior beyond the annotations: the call is only a provisional step, an SMS code is dispatched to the person, and the answer carries price, location and cancellation notice. That is valuable, but the annotations already declare non-read-only, non-idempotent, open-world, and the description never warns that repeating the call may create a duplicate pending booking (the non-idempotent risk is the highest-value missing detail). With annotation coverage this strong, a 3 is appropriate.

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 action, then the inputs, then the workflow, with no filler sentences. The prose is telegraphic ("Book one free time for a person, paid at the clinic") and a single paragraph packs booking, SMS, disclosure and confirmation steps together, which is dense but still scannable.

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 13-parameter, multi-step booking tool the description covers the input sources, the side effect (SMS code), the required human disclosure, and the follow-up call, and an output schema exists so return structure needn't be detailed. Nothing an agent needs in order to invoke it 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 description coverage is 100%, including provenance hints like "The option_id get_treatment returns" and "Never build it from a name," so the schema does the heavy lifting. The description's mention of option_id, clinic_id, date/time, name, phone and optional practitioner_id/add_on_ids largely restates parameter names and origins, adding no syntax or edge-case meaning. Baseline 3 is correct.

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?

"Book one free time for a person, paid at the clinic" names the verb, the resource and the payment/scope model in one clause, and the follow-up sentence ("Nothing is booked yet...") separates it from confirm_with_code. An agent can distinguish this from every sibling without opening a schema.

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 states the prerequisite source of inputs (find_free_times, get_treatment, get_booking_choices) and the exact next step in the workflow (ask for the SMS code, then call confirm_with_code). It also flags the human-facing obligation to relay price, place and terms, which is when-to-use context an agent cannot infer elsewhere.

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