Skip to main content
Glama

Reserve Time Slot

reserve_slot
DestructiveIdempotent

Reserve a time slot at a business. Returns a pending_offer reservation and sends a 6-digit confirmation code to the customer's email or phone. The customer reads the code back to confirm via the confirm_booking tool. The reservation expires in 15 minutes if not confirmed. Idempotent: re-using the same idempotency_key returns the original reservation without resending the code.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesBusiness slug identifier
agent_idNoOptional agent identifier
offer_idNoOptional id of a signed get_quote offer to redeem against this reservation. Omit for a business with no exact-priced service — authentication is a capability upgrade here, never a toll.
window_endYesSlot end (Unix seconds)
window_startYesSlot start (Unix seconds)
idempotency_keyYesUnique key for idempotent reservation
customer_contactYesHow to reach the customer. MUST include at least one of email or phone — the confirmation code is delivered there, and a hold nobody can confirm is unreachable from both sides. Email is used when both are present.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYesReservation state — 'pending_offer' on a fresh hold; a replay returns the existing row's state
expires_atYesISO-8601. When this hold lapses if the code is not confirmed
confirmationYes
reservation_idYes
idempotent_replayNoPresent and true when this idempotency_key already had a reservation; no new code was sent

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true and destructiveHint=true, and the description deepens both: it reveals the exact 15-minute expiry window, that a 6-digit code is deployed to email or phone, and the precise idempotent behavior (returns the original reservation without resending the code). This is exactly the kind of behavioral context that goes beyond structured hints, and nothing contradicts the annotations.

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 sentences, every one earns its place: purpose, return value and side effect (code sending), workflow routing, expiry, and idempotency. Critical information is front-loaded (what it does) before secondary detail (idempotency). Zero filler or repeated schema content.

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 complex 7-parameter tool with nested objects, the description plus a 100%-covered schema and an output schema cover everything an agent needs: return shape (already in output schema), contact delivery semantics, expiry, idempotency, and follow-up routing. Nothing material 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 the schema is extraordinarily rich, even embedding flow guidance ('a hold nobody can confirm is worse than a refused call') inside the phone parameter. The description adds marginal param-level value — it ties customer_contact to code delivery and idempotency_key to the re-call behavior — but mostly reinforces what the schema already states. Baseline 3 is correct given the high schema coverage.

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 opens with a specific verb and resource ('Reserve a time slot at a business') and immediately orients the agent in the broader workflow by naming the follow-up tool (confirm_booking) and the pending_offer state. This clearly separates it from siblings: get_availability (checking slots) and confirm_booking (finalizing) are distinct steps in the same flow, so an agent can tell exactly where this tool sits.

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?

The description explicitly routes the agent forward to confirm_booking ('The customer reads the code back to confirm via the confirm_booking tool') and explains the lifecycle (pending offer, 15-minute expiry). It does not explicitly state negative conditions such as 'use get_availability before reserving' or when NOT to call it, so the guidance is strong on sequence but slightly short on exclusion criteria.

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.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a distinct action or resource: searching, quoting, reserving, confirming, payment handoff, callback, subscription, and business queries. Even related tools like reserve_slot and confirm_booking have clearly separated roles (holding vs. claiming). No overlapping purposes or ambiguous boundaries.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_businesses, get_quote, reserve_slot, confirm_booking). The verbs are varied but each is intuitive and fits the action. There are no mixed naming conventions or vague verb choices.

Tool Count5/5

13 tools cover the core booking and business-intelligence workflow without redundancy. The scope is well-defined—discovery, pricing, reservation, confirmation, payment, handoff, and subscription—so each tool earns its place. Not too thin, not overloaded.

Completeness3/5

The surface covers search, pricing, reservation, confirmation, payment, and handoff, but missing explicit cancellation or modification tools for bookings. A user asking to cancel a reservation would have no direct tool; get_cancellation_policy only provides text. Also no way to list a customer's existing bookings. This leaves notable gaps for a booking-focused server.