Skip to main content
Glama

Book for the customer

request_booking
Idempotent

HomeMaster's one booking tool, for every service: only the one the customer asked for, never an extra. Never fill a field with a guess or a placeholder. The answer's outcome says what was done; which one you get depends on the service and on whether HomeMaster has cleared this connection to book directly (the connect answer says so). (1) checkout_link: a link to HomeMaster's checkout with the address and the visit filled in, to give to the customer exactly as it is. Nothing is booked, sent or charged. On the page the customer picks the start time (it is held for 7 minutes), enters their name and phone, types the 6-digit code we send to their WhatsApp, and pays on our payment page. Without that clearance this is how every service but home cleaning is booked online: send service, postal_code, and the job_type and unit_count the customer agreed to (the page starts on them; they can still change them). For home cleaning, or on a connection cleared to book directly, send checkout_link: true for it: when the customer would rather book on the page themselves, or for a weekly or every-2-weeks clean paid as a prepaid pack (postal_code, hours, frequency). Needs no phone number. A refused address is answered with no link. (2) whatsapp_card, home cleaning: ask for their name, their WhatsApp number and their OK first. We sent the customer Helen's booking card on WhatsApp, showing the date, their address, the clean and their price; nothing is booked until they tap "Yes, book it" within 60 minutes, then they pay by the payment link Helen sends, and the time is not held while they decide. Needs phone, postal_code, unit, date with its weekday, a start_time from find_times, and the hours the customer chose. A weekly or every-2-weeks clean is sent as paying visit by visit (get_quote's pay_per_visit). Returns a reference for booking_status. (3) call_back_booked, any other service: a call back from our team, only for an address we do not cover online, a service under more_services, or a customer who asks to speak to our team before booking, so do not offer it as a choice. It is free for a service with a price list; for a service quoted for each job, the quotation has a fee, stated on its card and in the answer, which our team collects. Tell the customer that, ask when they are free for a call, and send a 2-hour window (call_back_date, its call_back_weekday, and call_back_from) with their phone, customer_name and details. Our team calls them in that window with the price and a time for the job. No message is sent and nothing is paid through this booking. Returns a reference (hmc_) for booking_status. To move the call, call this again with a new window. For a customer with several such jobs, book each service in the same window: our team makes one call. After booking, read back to the customer the day and the number in the answer (booked_for, or sent_to for a clean): if either is not what they said, book again with the right one. HomeMaster has no emergency service: for someone who needs help now, say so, and offer the call back only as a follow-up. A refusal means nothing is booked. (4) pick_a_call_back_time: a call back asked for without a window, or a service under more_services; nothing is saved, and the answer holds the question to ask and the windows we take. (5) payment_link, only on a connection HomeMaster has cleared to book directly: any service booked online is booked at once, with no WhatsApp card or code. Ask for the customer's name, phone and OK first. Needs postal_code, unit, date with its weekday, a start_time from find_times, customer_name, phone, and the hours (cleaning) or job_type and unit_count (any other service). Give the customer payment_url: the booking is confirmed when they pay. Returns a reference (hmb_) for booking_status.

Input Schema

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD, Singapore date.
unitNoThe floor AND unit number of the address, e.g. #05-12 (for a landed house, the house number), for Helen's card and for a direct booking of any service. The floor alone is not a unit number. Ask the customer; never make one up.
hoursNoCleaning only: visit length in hours (see find_services for the lengths we sell, e.g. 2, 3 or 4). When the customer has not said, use usual_hours on the cleaning entry of find_services (find_times and get_quote use it when hours is left out) and say it in your proposal; do not ask. Only if they ask how long their home needs, suggest from hours_by_home.
phoneNoThe customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. Needed for every outcome but checkout_link. For cleaning it must be on WhatsApp. Why it is needed, to tell the customer: HomeMaster needs the customer's number to confirm the booking and send the receipt on WhatsApp, and to reach them about the visit: if the expert is running late or cannot find the unit or get in, if the expert falls ill and another time is needed, or if the job turns out different from what was booked.
detailsNoA call back: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up. If the customer cannot say which job on the price list is theirs, describe the problem and book: do not make them choose.
serviceYesRequired: the code of the service the customer asked for, from find_services (e.g. cleaning, aircon, pipe_leak_repair). cleaning = home cleaning, general housekeeping only. Every other service is booked by the job: give job_type and unit_count from its card.
weekdayNoAny booking: the weekday the customer agreed to, e.g. Saturday. Required with date; we refuse a date that is not that weekday.
job_typeNoThe checkout link and a direct booking (outcomes checkout_link, payment_link): Every service but cleaning: the job, a job_type from the service's card (find_services with its code), e.g. general_service for aircon. A service quoted for each job has one: its quotation visit (quotation_visit) or consultation.
frequencyNoCleaning only: one-time, weekly, or bi-weekly (every 2 weeks).one-time
agent_nameNoOptional, cleaning: your name as the customer knows you (letters, digits and spaces), shown on the card as "<name> asked us to book this for you".
start_timeNoCleaning: HH:MM in Singapore time, one of the start times from find_times.
unit_countNoThe checkout link and a direct booking (outcomes checkout_link, payment_link): Every service but cleaning: how many, in the service's own unit from its card (units, pieces, hours, panels...). 1 for a quotation visit or a consultation.
postal_codeNo6-digit Singapore postal code, e.g. 238823. Required for every outcome but a call back. A call back: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details.
checkout_linkNotrue: answer with the checkout link (outcome checkout_link) and book nothing, for a customer who will book and pay on the page themselves, or for the prepaid pack of a weekly or every-2-weeks clean. Not needed for a service other than cleaning on a connection without direct booking: the link is its answer anyway.
customer_nameNoThe customer's name. Required for a call back (any service but cleaning). For cleaning: recommended, saved only once they confirm, and never over a name we already have.
call_back_dateNoA call back: the day the customer is free for our call, YYYY-MM-DD, Singapore date, today to 14 days ahead.
call_back_fromNoA call back: the start of the 2-hour window for our call, HH:MM in Singapore time, on the hour or half hour, 09:00 to 19:00 (so the latest window is 7pm to 9pm).
call_back_weekdayNoA call back: the weekday the customer agreed to for the call, e.g. Saturday. Required with call_back_date; we refuse a date that is not that weekday.
customer_confirmedYesRequired. true only when the customer themselves gave you every detail you are sending (their number, the unit, the day, the hours or the job) and said yes to this booking. A default you said in your proposal counts as theirs once they say yes to it, and giving their details in answer to the proposal is a yes. If you filled in or guessed any of it without saying it, do not send: ask them first.
preferred_job_timeNoA call back, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks, on 31 October), and how often if they want it regularly (e.g. every week). It can be later than 14 days: the call-back window is only for the call.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / customer_confirmed / description
      Previous value: -"Required. true only when the customer themselves gave you every detail you are sending (their number, the unit, the day, the hours or the job) and said yes to this booking. If you filled in or guessed any of it, do not send: ask them first."New value: +"Required. true only when the customer themselves gave you every detail you are sending (their number, the unit, the day, the hours or the job) and said yes to this booking. A default you said in your proposal counts as theirs once they say yes to it, and giving their details in answer to the proposal is a yes. If you filled in or guessed any of it without saying it, do not send: ask them first."
    • changedInput schema / properties / hours / description
      Previous value: -"Cleaning only: visit length in hours (see find_services for the lengths we sell, e.g. 2, 3 or 4). A customer unsure how long their home needs: the suggestion by home is hours_by_home on the cleaning entry of find_services."New value: +"Cleaning only: visit length in hours (see find_services for the lengths we sell, e.g. 2, 3 or 4). When the customer has not said, use usual_hours on the cleaning entry of find_services (find_times and get_quote use it when hours is left out) and say it in your proposal; do not ask. Only if they ask how long their home needs, suggest from hours_by_home."
    • changedInput schema / properties / weekday / description
      Previous value: -"Cleaning: the weekday the customer agreed to, e.g. Saturday. Required with date; we refuse a date that is not that weekday."New value: +"Any booking: the weekday the customer agreed to, e.g. Saturday. Required with date; we refuse a date that is not that weekday."
    • changedInput schema / required
      Previous value: -[
      -  "service"
      -]New value: +[
      +  "service",
      +  "customer_confirmed"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / unit / description
      Previous value: -"Cleaning: floor AND unit number, e.g. #05-12 (for a landed house, the house number). The floor alone is not a unit number. Ask the customer; never make one up."New value: +"The floor AND unit number of the address, e.g. #05-12 (for a landed house, the house number), for Helen's card and for a direct booking of any service. The floor alone is not a unit number. Ask the customer; never make one up."
  3. Changed7 schema fields changed
    • addedInput schema / properties / checkout_link
      Added value: +{
      +  "description": "true: answer with the checkout link (outcome checkout_link) and book nothing, for a customer who will book and pay on the page themselves, or for the prepaid pack of a weekly or every-2-weeks clean. Not needed for a service other than cleaning on a connection without direct booking: the link is its answer anyway.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / job_type / description
      Previous value: -"Only on a connection cleared to book directly (outcome payment_link): Every service but cleaning: the job, a job_type from the service's card (find_services with its code), e.g. general_service for aircon. A service quoted for each job has one: its quotation visit (quotation_visit) or consultation."New value: +"The checkout link and a direct booking (outcomes checkout_link, payment_link): Every service but cleaning: the job, a job_type from the service's card (find_services with its code), e.g. general_service for aircon. A service quoted for each job has one: its quotation visit (quotation_visit) or consultation."
    • changedInput schema / properties / phone / description
      Previous value: -"The customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. For cleaning it must be on WhatsApp. Why it is needed, to tell the customer: HomeMaster needs the customer's number to confirm the booking and send the receipt on WhatsApp, and to reach them about the visit: if the expert is running late or cannot find the unit or get in, if the expert falls ill and another time is needed, or if the job turns out different from what was booked."New value: +"The customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. Needed for every outcome but checkout_link. For cleaning it must be on WhatsApp. Why it is needed, to tell the customer: HomeMaster needs the customer's number to confirm the booking and send the receipt on WhatsApp, and to reach them about the visit: if the expert is running late or cannot find the unit or get in, if the expert falls ill and another time is needed, or if the job turns out different from what was booked."
    • changedInput schema / properties / postal_code / description
      Previous value: -"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A call back: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details."New value: +"6-digit Singapore postal code, e.g. 238823. Required for every outcome but a call back. A call back: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details."
    • changedInput schema / properties / service / description
      Previous value: -"Required: the service the customer asked for, from find_services. cleaning (general housekeeping only) for Helen's WhatsApp card, or the code of any other service for a call back, e.g. pipe_leak_repair."New value: +"Required: the code of the service the customer asked for, from find_services (e.g. cleaning, aircon, pipe_leak_repair). cleaning = home cleaning, general housekeeping only. Every other service is booked by the job: give job_type and unit_count from its card."
    • changedInput schema / properties / unit_count / description
      Previous value: -"Only on a connection cleared to book directly (outcome payment_link): Every service but cleaning: how many, in the service's own unit from its card (units, pieces, hours, panels...). 1 for a quotation visit or a consultation."New value: +"The checkout link and a direct booking (outcomes checkout_link, payment_link): Every service but cleaning: how many, in the service's own unit from its card (units, pieces, hours, panels...). 1 for a quotation visit or a consultation."
    • changedInput schema / required
      Previous value: -[
      -  "service",
      -  "phone"
      -]New value: +[
      +  "service"
      +]
  4. Changed2 schema fields changed
    • addedInput schema / properties / job_type
      Added value: +{
      +  "description": "Only on a connection cleared to book directly (outcome payment_link): Every service but cleaning: the job, a job_type from the service's card (find_services with its code), e.g. general_service for aircon. A service quoted for each job has one: its quotation visit (quotation_visit) or consultation.",
      +  "type": "string"
      +}
    • addedInput schema / properties / unit_count
      Added value: +{
      +  "description": "Only on a connection cleared to book directly (outcome payment_link): Every service but cleaning: how many, in the service's own unit from its card (units, pieces, hours, panels...). 1 for a quotation visit or a consultation.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / hours / description
      Previous value: -"Cleaning only: visit length in hours (see find_services for the lengths we sell, e.g. 2, 3 or 4)."New value: +"Cleaning only: visit length in hours (see find_services for the lengths we sell, e.g. 2, 3 or 4). A customer unsure how long their home needs: the suggestion by home is hours_by_home on the cleaning entry of find_services."
  6. Changed1 schema field changed
    • changedInput schema / properties / phone / description
      Previous value: -"The customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. For cleaning it must be on WhatsApp."New value: +"The customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. For cleaning it must be on WhatsApp. Why it is needed, to tell the customer: HomeMaster needs the customer's number to confirm the booking and send the receipt on WhatsApp, and to reach them about the visit: if the expert is running late or cannot find the unit or get in, if the expert falls ill and another time is needed, or if the job turns out different from what was booked."
  7. Changed8 schema fields changed
    • changedInput schema / properties / call_back_date / description
      Previous value: -"A service under more_services: the day the customer is free for our call, YYYY-MM-DD, Singapore date, today to 14 days ahead."New value: +"A call back: the day the customer is free for our call, YYYY-MM-DD, Singapore date, today to 14 days ahead."
    • changedInput schema / properties / call_back_from / description
      Previous value: -"A service under more_services: the start of the 2-hour window for our call, HH:MM in Singapore time, on the hour or half hour, 09:00 to 19:00 (so the latest window is 7pm to 9pm)."New value: +"A call back: the start of the 2-hour window for our call, HH:MM in Singapore time, on the hour or half hour, 09:00 to 19:00 (so the latest window is 7pm to 9pm)."
    • changedInput schema / properties / call_back_weekday / description
      Previous value: -"A service under more_services: the weekday the customer agreed to for the call, e.g. Saturday. Required with call_back_date; we refuse a date that is not that weekday."New value: +"A call back: the weekday the customer agreed to for the call, e.g. Saturday. Required with call_back_date; we refuse a date that is not that weekday."
    • changedInput schema / properties / customer_name / description
      Previous value: -"The customer's name. Required for a service under more_services. For cleaning: recommended, saved only once they confirm, and never over a name we already have."New value: +"The customer's name. Required for a call back (any service but cleaning). For cleaning: recommended, saved only once they confirm, and never over a name we already have."
    • changedInput schema / properties / details / description
      Previous value: -"A service under more_services: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up. If the customer cannot say which job on the price list is theirs, describe the problem and book: do not make them choose."New value: +"A call back: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up. If the customer cannot say which job on the price list is theirs, describe the problem and book: do not make them choose."
    • changedInput schema / properties / postal_code / description
      Previous value: -"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A service under more_services: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details."New value: +"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A call back: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details."
    • changedInput schema / properties / preferred_job_time / description
      Previous value: -"A service under more_services, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks, on 31 October), and how often if they want it regularly (e.g. every week). It can be later than 14 days: the call-back window is only for the call."New value: +"A call back, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks, on 31 October), and how often if they want it regularly (e.g. every week). It can be later than 14 days: the call-back window is only for the call."
    • changedInput schema / properties / service / description
      Previous value: -"Required: the service the customer asked for, from find_services. cleaning (general housekeeping only), or the code of a service under more_services, e.g. pipe_leak_repair."New value: +"Required: the service the customer asked for, from find_services. cleaning (general housekeeping only) for Helen's WhatsApp card, or the code of any other service for a call back, e.g. pipe_leak_repair."
  8. Changed3 schema fields changed
    • changedInput schema / properties / details / description
      Previous value: -"A service under more_services: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up."New value: +"A service under more_services: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up. If the customer cannot say which job on the price list is theirs, describe the problem and book: do not make them choose."
    • changedInput schema / properties / postal_code / description
      Previous value: -"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A service under more_services: send it too, when the customer gives it; our team confirms on the call whether we serve the address."New value: +"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A service under more_services: send it too, when the customer gives it; our team confirms on the call whether we serve the address. A job with two addresses (a move, a delivery): the address it starts from here, the other one in details."
    • changedInput schema / properties / preferred_job_time / description
      Previous value: -"A service under more_services, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks). The call-back window is only for the call."New value: +"A service under more_services, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks, on 31 October), and how often if they want it regularly (e.g. every week). It can be later than 14 days: the call-back window is only for the call."
  9. Changed1 schema field changed
    • changedInput schema / properties / postal_code / description
      Previous value: -"6-digit Singapore postal code, e.g. 238823."New value: +"6-digit Singapore postal code, e.g. 238823. Cleaning: required. A service under more_services: send it too, when the customer gives it; our team confirms on the call whether we serve the address."
  10. Changed14 schema fields changed
    • changedInput schema / properties / agent_name / description
      Previous value: -"Optional: your name as the customer knows you (letters, digits and spaces), shown on the card as \"<name> asked us to book this for you\"."New value: +"Optional, cleaning: your name as the customer knows you (letters, digits and spaces), shown on the card as \"<name> asked us to book this for you\"."
    • addedInput schema / properties / call_back_date
      Added value: +{
      +  "description": "A service under more_services: the day the customer is free for our call, YYYY-MM-DD, Singapore date, today to 14 days ahead.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / call_back_from
      Added value: +{
      +  "description": "A service under more_services: the start of the 2-hour window for our call, HH:MM in Singapore time, on the hour or half hour, 09:00 to 19:00 (so the latest window is 7pm to 9pm).",
      +  "pattern": "^\\d{2}:\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / call_back_weekday
      Added value: +{
      +  "description": "A service under more_services: the weekday the customer agreed to for the call, e.g. Saturday. Required with call_back_date; we refuse a date that is not that weekday.",
      +  "enum": [
      +    "Monday",
      +    "Tuesday",
      +    "Wednesday",
      +    "Thursday",
      +    "Friday",
      +    "Saturday",
      +    "Sunday"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / customer_confirmed
      Added value: +{
      +  "description": "Required. true only when the customer themselves gave you every detail you are sending (their number, the unit, the day, the hours or the job) and said yes to this booking. If you filled in or guessed any of it, do not send: ask them first.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / customer_name / description
      Previous value: -"Recommended: the customer's name, so their cleaning expert and receipt can greet them. Saved only once they confirm, and never over a name we already have."New value: +"The customer's name. Required for a service under more_services. For cleaning: recommended, saved only once they confirm, and never over a name we already have."
    • addedInput schema / properties / details
      Added value: +{
      +  "description": "A service under more_services: the job in the customer's words, with what the price depends on (see its service card): what, how many, what size, what is wrong. Never make a detail up.",
      +  "maxLength": 600,
      +  "type": "string"
      +}
    • changedInput schema / properties / phone / description
      Previous value: -"The customer's WhatsApp number, e.g. +6591234567."New value: +"The customer's 8-digit Singapore number, exactly as they gave it, e.g. 9123 4567. We add +65 ourselves: do not add, repeat or drop a digit. For cleaning it must be on WhatsApp."
    • addedInput schema / properties / preferred_job_time
      Added value: +{
      +  "description": "A service under more_services, optional: when the customer would like the JOB done, in their words (e.g. Saturday mornings, within two weeks). The call-back window is only for the call.",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • addedInput schema / properties / service
      Added value: +{
      +  "description": "Required: the service the customer asked for, from find_services. cleaning (general housekeeping only), or the code of a service under more_services, e.g. pipe_leak_repair.",
      +  "type": "string"
      +}
    • changedInput schema / properties / start_time / description
      Previous value: -"HH:MM in Singapore time, one of the start times from find_times."New value: +"Cleaning: HH:MM in Singapore time, one of the start times from find_times."
    • changedInput schema / properties / unit / description
      Previous value: -"Floor and unit number, e.g. #05-12."New value: +"Cleaning: floor AND unit number, e.g. #05-12 (for a landed house, the house number). The floor alone is not a unit number. Ask the customer; never make one up."
    • addedInput schema / properties / weekday
      Added value: +{
      +  "description": "Cleaning: the weekday the customer agreed to, e.g. Saturday. Required with date; we refuse a date that is not that weekday.",
      +  "enum": [
      +    "Monday",
      +    "Tuesday",
      +    "Wednesday",
      +    "Thursday",
      +    "Friday",
      +    "Saturday",
      +    "Sunday"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "postal_code",
      -  "unit",
      -  "date",
      -  "start_time",
      -  "hours",
      -  "phone"
      -]New value: +[
      +  "service",
      +  "phone"
      +]
  11. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that checkout_link books nothing, the WhatsApp card holds nothing until the customer taps 'Yes, book it' within 60 minutes, call backs may carry a fee for quoted jobs, refusals mean nothing is booked, and no emergency service exists. It also explains return references (hmc_, hmb_) for booking_status and what happens after booking.

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?

The description is long, but the complexity of five distinct outcomes and 20 parameters justifies substantial detail. It is front-loaded with the core rule and organized into numbered outcome sections, though some sentences are dense and could be trimmed without losing invocation-critical meaning.

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?

Given the tool's complexity and the absence of an output schema, the description is complete: it explains the outcome field, the reference values returned, refusal behavior, and the post-booking read-back instruction. An agent has enough context to choose the right outcome and call the tool correctly.

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 schema already documents all 20 parameters. The description still adds meaningful routing semantics by mapping each outcome to its required fields, e.g., 'Needs phone, postal_code, unit, date with its weekday, a start_time from find_times, and the hours' for the WhatsApp card, and explaining when checkout_link: true applies.

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 by naming the tool as HomeMaster's single booking tool for every service and then enumerates its five outcomes (checkout_link, whatsapp_card, call_back_booked, pick_a_call_back_time, payment_link), making the verb and resource unmistakable. It also distinguishes itself from siblings by referencing find_times, get_quote, booking_status, and more_services in context.

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?

It gives explicit when-to-use rules for every outcome: checkout_link for services without direct-booking clearance or when the customer prefers the page, whatsapp_card for home cleaning, call_back_booked for uncovered addresses or customer requests, and payment_link only on cleared connections. It also includes exclusions such as 'do not offer it as a choice' and prerequisites like asking for the customer's OK first.

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