HomeMaster For AI assistants REST API llms.txt

HomeMaster MCP server

Book home cleaning and aircon servicing in Singapore from any AI assistant.

HomeMaster's Model Context Protocol server lets an assistant check coverage, open times and exact prices, then either hand the customer a checkout link with their visit already filled in, or send the customer Helen's booking card on WhatsApp to confirm with one tap. Either way the customer confirms it is their phone and pays on our page. After booking, Helen, our assistant on WhatsApp, handles reminders and changes.

Endpointhttps://homemaster.co/mcp
TransportStreamable HTTP (stateless JSON responses, no SSE stream)
AuthNone. No key, no sign-in
Tools8: seven read-only, and request_booking, which sends the customer a WhatsApp card to confirm
Protocol versions2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05
Docs for peoplehomemaster.co/agents · llms.txt

Connect

Claude (claude.ai, Claude Desktop): add a custom connector with the URL https://homemaster.co/mcp.

Claude Code:

claude mcp add --transport http homemaster https://homemaster.co/mcp

ChatGPT: in developer mode, add a connector with the URL https://homemaster.co/mcp.

Cursor (~/.cursor/mcp.json) and most clients that take a JSON config:

{ "mcpServers": { "homemaster": { "url": "https://homemaster.co/mcp" } } }

VS Code (.vscode/mcp.json):

{ "servers": { "homemaster": { "type": "http", "url": "https://homemaster.co/mcp" } } }

Try it from a terminal with the official inspector:

npx @modelcontextprotocol/inspector --cli https://homemaster.co/mcp --transport http --method tools/list
npx @modelcontextprotocol/inspector --cli https://homemaster.co/mcp --transport http \
  --method tools/call --tool-name get_quote --tool-arg hours=3

Tools

ToolWhat it doesInputs
find_servicesWhat we sell, the options and list prices (SGD, GST included)none
check_areaWhether we cover a Singapore postal codepostal_code, service
find_timesOpen dates for the next 14 days, or one day's start times, each with its pricepostal_code, service, hours + frequency (cleaning) or job_type + unit_count (aircon), optional date, end_date
get_quoteThe exact price our checkout will show a new customer, with any evening rate or public voucherservice, hours, frequency (or job_type, unit_count), optional date + start_time
start_bookingA checkout link with the address and visit filled in (refused for an address we cannot serve)postal_code, service, optional hours, frequency
ask_homemasterPolicies and what a clean includes, answered only from our service guidequestion
request_bookingSends the customer Helen's booking card on WhatsApp. Nothing is booked until they tap "Yes, book it" within 60 minutes; they then pay by link. Returns a reference. Cleaning onlypostal_code, unit, date, start_time, hours, phone, optional frequency, agent_name
booking_statusWhere a request_booking request stands: waiting for the customer, declined, expired, awaiting payment (with the payment link), finding a cleaning expert, booked (with the next visit), done or cancelledreference

service is cleaning (by the hour: 2, 3 or 4 hours; one-time, weekly or bi-weekly) or aircon (per job and number of units; see find_services for the jobs).

A typical booking

  1. check_area {"postal_code": "238823"}
  2. find_times {"postal_code": "238823", "hours": 3}, then with a date for that day's times
  3. get_quote {"hours": 3, "date": "2026-10-03", "start_time": "09:00"}
  4. start_booking {"postal_code": "238823", "hours": 3, "frequency": "one-time"}
  5. Give the customer the link. They pick the time, confirm their phone and pay.

Example get_quote result (one-time, 3 hours, no time chosen):

{
  "service": "cleaning", "hours": 3, "frequency": "one-time", "currency": "SGD", "gst_included": true,
  "pay_now": 57, "list_price": 75, "saving": 18,
  "offer": "voucher \"You're invited to HomeMaster\" applied (saves S$18.00), for customers booking with us for the first time",
  "evening_rate": "One-time visits starting from 6:00 PM in the next 3 days cost S$18/hour (S$54.00 for 3 hours) when that is cheaper. ...",
  "caveat": "This is what the checkout shows a new customer before their phone is checked. ..."
}

Example start_booking result (trimmed):

{
  "bookable": true,
  "booking_url": "https://homemaster.co/book/clean?postal=238823&hours=3&frequency=one-time&utm_source=your-client&utm_medium=ai_agent&utm_campaign=mcp",
  "link_note": "Give the customer this link exactly as it is. ...",
  "customer_steps": ["Open the link. ...", "Pick a start time. It is held for 7 minutes ...", "..."]
}

Booking for the customer

With the customer's agreement, request_booking does the booking for them. Use a start time from find_times:

  1. request_booking {"postal_code": "238823", "unit": "#05-12", "date": "2026-10-03", "start_time": "09:00", "hours": 3, "phone": "+6591234567", "agent_name": "Claude"}
  2. We send the customer Helen's booking card on WhatsApp: "Claude asked us to book this for you", the date, their address, the clean and their price, with Yes, book it and No, cancel.
  3. Tell the customer to tap Yes, book it there within 60 minutes. Helen then sends them a payment link. The time is not held while they decide; if it has gone by then, Helen offers other times.
  4. booking_status {"reference": "hmr_..."} at any time.

Example request_booking result (trimmed):

{
  "reference": "hmr_2yq...",
  "status": "waiting_for_customer",
  "expires_at": "2026-10-01T07:05:00.000Z",
  "when": "Saturday, 3 October at 9:00 AM",
  "price": "$75 - $18 = $57",
  "total": 57
}

Figures above are illustrative; the tools always return today's prices.

What it will and will not do

Without MCP

Limits

Per caller (by IP address): 60 tool calls a minute and 300 an hour; 3,000 an hour across all callers; ask_homemaster 20 an hour per caller; request_booking 10 an hour per caller. One phone number can have one request waiting at a time, and at most 3 a day. A limited call returns a tool error saying so. initialize, tools/list and ping are not counted.

Privacy

The tools ask for a postal code and booking choices, never a name or payment detail. request_booking also asks for the customer's WhatsApp number and unit number: we message that number once, and keep the request so the customer's tap can book it. booking_status never returns the customer's name, phone, address or cleaning expert. No other tool reads customer records. The text of an ask_homemaster question is answered by our AI model provider, so do not put personal details in it. For rate limiting we keep a salted hash of the caller's IP address (never the address itself), deleted within 7 days. The name your client sends at initialize is used only to credit bookings made through the link (utm_source).

Errors

Invalid input and limits come back as tool results with isError: true and a plain message the model can act on. Unknown tools and malformed requests get standard JSON-RPC errors.

Contact

Partners and developers: partnership@homemaster.co. Customers: Helen on WhatsApp, https://wa.me/6589154889.