Skip to main content
Glama

DoctoFam Medical Clinic

Book a patient appointment

book_appointment
DestructiveIdempotent

Use this when someone asks to book a patient in at their clinic. Returns the new appointment with its time, providers and number of procedures; it takes the clinic's usual length, room and reminders, so the clinic's reminder messages go to the patient. Not for finding free slots.

Input Schema

NameRequiredDescriptionDefault
clinicIdNoId of the clinic, from list_clinics. Leave it out when the user has one clinic.
patientIdYesId of the patient, from find_patient or create_patient.
requestIdYesA unique id you choose for this booking, such as a UUID. Calling again with the same requestId returns the first booking instead of booking twice.
startTimeYesStart as an ISO 8601 time with the clinic's UTC offset, such as 2026-11-20T10:00:00+01:00.
providerIdsNoIds of the doctors, nurses or assistants who take it, from list_providers. Leave it out when the clinic has one provider or the user is the provider.
procedureIdsNoIds of the procedures booked, from list_procedures.
durationMinutesNoLength in minutes. Leave it out for the clinic's usual length.

Output Schema

NameRequiredDescriptionDefault
statusYes
appointmentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description contributes real extra context: the tool fills in the clinic's usual length, room and reminders, and reminder messages are sent to the patient. It never addresses conflict/double-booking behavior or what happens when a requested slot is unavailable, which matters most for a write tool flagged destructive.

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?

Three compact sentences with the use condition front-loaded, then the return value, then the exclusion — a sensible order with little waste. The clause 'so the clinic's reminder messages go to the patient' is slightly awkward but conveys a genuine side effect rather than 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?

With an output schema present and annotations covering safety and idempotency, the description is close to sufficient: it covers purpose, trigger, defaults and the reminder side effect. The remaining gap is failure semantics — nothing says how slot conflicts or validation errors surface, which is notable for a booking tool marked destructive.

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%, so every parameter (including the requestId idempotency contract and omission defaults for clinicId, providerIds and durationMinutes) is already documented. The description only echoes the defaulting behavior at a high level ('takes the clinic's usual length, room and reminders') without adding format or constraint detail. Baseline 3 applies where the schema carries the load.

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 a patient in at their clinic') and immediately names what is returned ('the new appointment with its time, providers and number of procedures'), so the agent knows the outcome shape as well as the action. The closing exclusion ('Not for finding free slots') separates it from the availability/slot siblings.

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?

Gives an explicit trigger ('when someone asks to book a patient in') and an explicit exclusion ('Not for finding free slots'), which routes slot discovery elsewhere in the sibling set. It does not name the alternative tool or cover adjacent cases such as rescheduling or cancelling, so it falls short of full routing guidance.

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