Skip to main content
Glama

Schedule hotel pickup

book_hotel_pickup
Destructive

Schedule a laundry pickup for a hotel guest. Creates an order without requiring a Fold account. Returns an order tracking code (FHL-XXXXXX) and a Stripe payment-setup URL. The user must visit the Stripe URL to enter their card before pickup. The card is NOT charged when scheduling — only after intake when the actual price is known.

Hotel guest pricing: wash & fold is $49.99 flat for up to 15 lb, then $2.65/lb over 15 lb; dry cleaning is priced per garment. $49.99 hotel order minimum (covers wash & fold and dry cleaning — smaller orders are billed at $49.99). A flat $9.99 hotel service charge is added to every hotel order on top of that, and the $30 Express surcharge (when chosen) is also on top — neither counts toward the minimum.

Return-time tiers: • same_day — guest must drop the bag before 9 AM Pacific. Standard same-day return (back by 8 PM), no surcharge. Covers wash & fold AND dry cleaning. • express_same_day — drop between 9 AM and 12 PM. ⚡ Express same-day (back by 8 PM tonight). $30 flat surcharge. • next_day — drop any time. Standard next-day return (back by 8 PM tomorrow). No surcharge. Most common choice. • flexible — 48+ hours. No surcharge.

Same-day options are not available after 12 PM Pacific time (Los Angeles / San Francisco); requests after noon are next_day or later. The server enforces these cut-offs on its own clock: a same_day request between 9 AM and noon is refused with a message to use express_same_day (+$30) — confirm the $30 with the guest before retrying — and any same-day request after noon is refused (use next_day). It never adds a surcharge or changes the day silently.

Input Schema

NameRequiredDescriptionDefault
notesNoOptional special instructions (e.g. "no fabric softener", "handle silk delicately").
servicesYesWhat services to perform. Most guests pick WASH_AND_FOLD.
hotelNameYesHotel display name (from search_hotels result). Required.
guestEmailYesGuest email (used for tracking + receipts)
guestPhoneYesGuest phone in E.164 format (+1XXXXXXXXXX) or US 10-digit
roomNumberYesGuest room number at the hotel
hotelPlaceIdYesGoogle Place ID for the hotel, obtained from search_hotels. Required.
guestLastNameYesGuest last name
guestFirstNameYesGuest first name
idempotencyKeyNoOPTIONAL — pass a unique identifier (UUID recommended) to make this call safe to retry. If we have already seen this key, we return the EXISTING order code instead of creating a duplicate. Highly recommended for production agents that may retry on network errors.
returnPreferenceYesWhen the guest wants the laundry back. same_day requires drop-off before 9 AM (no surcharge). express_same_day works for drop-off between 9 AM and 12 PM noon (+$30 surcharge, back by 8 PM tonight). next_day is the typical choice — drop any time, back by 8 PM tomorrow (no surcharge). flexible = 48hr+. Pick same_day or express_same_day only if local time clearly allows it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / returnPreference / description
      Previous value: -"When the guest wants the laundry back. same_day requires drop-off before 9 AM (no surcharge). express_same_day works for drop-off between 9 AM and 12 PM noon (+$30 surcharge, back by 7 PM tonight). next_day is the typical choice — drop any time, back by 7 PM tomorrow (no surcharge). flexible = 48hr+. Pick same_day or express_same_day only if local time clearly allows it."New value: +"When the guest wants the laundry back. same_day requires drop-off before 9 AM (no surcharge). express_same_day works for drop-off between 9 AM and 12 PM noon (+$30 surcharge, back by 8 PM tonight). next_day is the typical choice — drop any time, back by 8 PM tomorrow (no surcharge). flexible = 48hr+. Pick same_day or express_same_day only if local time clearly allows it."
  2. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that no Fold account is needed, that the card is NOT charged at scheduling time (only after intake), that the guest must visit the Stripe URL, that the server enforces cut-offs on its own clock, and that it will never silently add a surcharge or shift the day. This is exactly the mutation-safety context a destructiveHint tool needs.

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-loads purpose, account requirement, and return values, then organizes pricing and tier rules under clear headers and bullets. It is long, and the return-tier block restates the schema's returnPreference description nearly verbatim, which is the main wasted payload.

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?

With 11 parameters, no output schema, and a destructive mutation, the description covers everything an agent needs: the booking prerequisite (hotel Place ID from search_hotels, stated in schema), payment flow, what is returned (FHL code + Stripe URL), pricing/minimums, tier cut-offs, and retry behavior. The only residual gap is sibling differentiation, scored elsewhere.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: how pricing interacts with services (wash & fold flat vs per-garment dry cleaning), the $49.99 minimum, the $9.99 hotel service charge, and which surcharges do/don't count toward the minimum. That informs real parameter choices, though the return-tier text largely duplicates the returnPreference schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Schedule a laundry pickup for a hotel guest') plus a concrete side effect (creates an order, returns FHL tracking code + Stripe setup URL). However, a sibling named 'book_for_hotel_guest' exists and the description never distinguishes the two, leaving the agent to guess which hotel booking tool to call.

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 strong operational guidance for the return-time tiers (which to pick given drop-off time) and explicitly tells the agent how to handle server refusals (confirm the $30 express surcharge with the guest before retrying, fall back to next_day after noon). It does not address when to use this tool versus the near-identical book_for_hotel_guest sibling, so exclusivity is missing.

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