Skip to main content
Glama

HairDora Salon Scheduling

Book a salon appointment

book_appointment
DestructiveIdempotent

Use this when someone asks to book a client in at their salon. Returns the new appointment with its time, stylist and services; it takes the salon's usual length, chair and reminders, so the salon's reminder messages go to the client. Not for finding free slots.

Input Schema

NameRequiredDescriptionDefault
noteNoA note for the salon team.
salonIdNoId of the salon, from list_salons. Leave it out when the user has one salon.
clientIdYesId of the client, from list_clients or create_client.
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 salon's UTC offset, such as 2026-11-20T10:00:00+01:00.
serviceIdsNoIds of the services booked, from list_services.
providerIdsNoIds of the stylists who take it, from list_providers. Leave it out when the salon has one stylist or the user is the stylist.
durationMinutesNoLength in minutes. Leave it out for the salon's usual length.

Output Schema

NameRequiredDescriptionDefault
statusYes
appointmentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the bar is lower, yet the description still adds real behavior: the booking inherits the salon's usual length, chair and reminders, and reminder messages go to the client. It does not spell out the side effects that make this 'destructive' (slot consumption, notifications to stylist) or reference idempotent replay, so it stops short of full disclosure.

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 short, front-loaded sentences: trigger first, then return value and inherited defaults, then the exclusion. The only waste is the return-value sentence ('Returns the new appointment with its time, stylist and services'), which duplicates what the output schema already provides.

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 a full output schema, complete parameter descriptions and rich annotations, the description only needs to cover intent, defaults and boundaries, and it does all three. The remaining gap is that it never hints at the destructive/idempotent semantics declared in annotations, which matter for an agent retrying a booking.

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 requestId idempotency and the UTC-offset time format is already documented in the schema. The description's line about taking 'the salon's usual length, chair and reminders' explains why durationMinutes and providerIds can be omitted, but this largely restates the schema's own 'leave it out' notes rather than adding new semantics.

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?

The description gives a specific verb and resource ('book a client in at their salon' -> creates an appointment) and immediately delimits scope with 'Not for finding free slots', which routes the agent away from get_salon_availability. An agent can distinguish it from reschedule_appointment and the list_* siblings 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a clear trigger condition ('when someone asks to book a client in at their salon') and one explicit exclusion ('Not for finding free slots'). It does not name the alternative tool (get_salon_availability) or say what to do first, e.g. resolve client/salon ids, so it falls short of full when/when-not/alternatives 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