AI Home Services Booking
Server Details
Agent-first booking of home-service contractors in Canada and the US: quotes, availability, booking.
- Status
- Healthy
- Uptime
- 100.0% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: get_coverage checks trade/city support before requesting, request_quotes creates the service request, and get_request_status tracks an existing request. The descriptions explicitly state pre-request vs. post-request usage, so an agent cannot reasonably misselect.
All names are snake_case verb_noun, which is readable and predictable. There is a minor split between the get_ prefix used for the two read-only tools and the bare action verb request_quotes for the mutating tool, though this read/write distinction is arguably intentional.
Three tools is on the low edge, but each one earns its place because the actual matching, outreach and booking work happens on the backend with human operators. It is slightly thin for a full booking lifecycle rather than being bloated.
The surface covers coverage lookup, request creation and status polling, but there is no way to cancel, modify, or list a request, and no tool to retrieve the returned quotes or confirm a booking. These are notable gaps in a booking lifecycle that agents would likely hit.
Available Tools
3 toolsget_coverageCheck home-service coverageARead-onlyIdempotentInspect
Read-only. Lists the trades supported and tells you whether a city in Canada or the United States is covered, and whether we already have a ranked provider shortlist there (pre_ranked) or will source providers when the request arrives (live_sourced). Call this before request_quotes if you are unsure the trade or city is supported. It does not create a request or contact anyone.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City or municipality, for example 'Mississauga' or 'Austin'. | |
| trade | No | Home-service trade. Use 'other' with trade_detail for anything not listed. | |
| region | No | Province or state, for example 'ON' or 'TX'. | |
| country | No | CA or US. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| coverage | No | |
| supported_trades | Yes | |
| supported_countries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, so 'Read-only' is largely redundant, but the description adds genuine behavioral context by explaining the two coverage outcomes (pre_ranked shortlist vs live_sourced) and confirming it is side-effect free. It stops short of describing response shape or partial-match behavior, which with a rich output schema is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and efficient: purpose, then the pre_ranked/live_sourced distinction, then the when-to-call rule and the exclusion. The leading 'Read-only.' restates the annotation rather than adding information, a small piece of waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what the tool does, its safety profile and its call-ordering relative to request_quotes, and an output schema exists so return values need not be explained. It never notes that all four parameters are optional (zero required), which would help an agent understand a bare no-arg call is valid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so city, trade, region and country are already fully documented with examples and enum guidance. The description adds no parameter-level syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Lists the trades supported and tells you whether a city ... is covered') and even distinguishes the two coverage modes (pre_ranked vs live_sourced). An agent can tell it apart from request_quotes and get_request_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: 'Call this before request_quotes if you are unsure the trade or city is supported,' names the alternative sibling and the condition that selects it, and closes with a negative boundary ('It does not create a request or contact anyone').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_request_statusCheck a request's statusARead-onlyIdempotentInspect
Read-only. Returns the current status of a request created with request_quotes. Requires the request_id and either the email or the phone number given on the request. It never returns the customer's details.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| phone | No | ||
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false; the description's "Read-only" restates that but adds a genuine behavioral fact an agent cannot get from annotations: the identity proof required (email or phone on file) and the privacy guarantee that customer details are never returned. Output schema exists, so return-format detail is not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the read-only nature and the primary requirement front-loaded before the caveat about returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with an output schema and full annotation coverage, the description supplies purpose, preconditions, identity requirement and a data-privacy note. Only minor gaps remain (no mention of error behavior when identity doesn't match, no acceptance format for email/phone).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameter meaning — and it does the most important work: it restates the `anyOf` requirement in plain language ("requires the request_id and either the email or the phone number given on the request"). It adds no format or validation hints for email/phone, so it stops short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("returns the current status of a request") and anchors it to the sibling `request_quotes` that creates those requests, so the agent can place it in the workflow. It does not explicitly contrast with `get_coverage`, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition for invocation: the caller must supply request_id plus either the email or the phone used at creation time. It stops short of stating when-not to use it or naming alternatives such as `get_coverage`, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_quotesFind providers and request quotesAInspect
Use when a customer wants an agent to find and book a home-service contractor (plumber, HVAC, electrician, roofer, appliance repair, locksmith, garage door, pest control, handyman, house cleaning, or another trade) at an address in Canada or the United States. We contact multiple independent providers by email, SMS and phone, ask for price and availability, check the options with the customer, and coordinate the booking the customer approves. Human operators assist as needed. We aim to return viable options within one hour for urgent requests, but response time, quote count, price and availability are not guaranteed and may be slower where we have no pre-built provider shortlist. This call creates a service request; it does not confirm an appointment or authorize work. The customer chooses and pays the provider directly. Collect every required field from the customer first, including explicit consent to be contacted.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City or municipality where service is needed. | |
| No | |||
| phone | No | ||
| trade | Yes | Home-service trade. Use 'other' with trade_detail for anything not listed. | |
| region | Yes | Province or state code or name, for example 'ON' or 'Texas'. | |
| country | Yes | ||
| problem | Yes | What is needed or wrong, with relevant details. | |
| urgency | Yes | ||
| postal_code | No | Postal or ZIP code. | |
| contact_name | Yes | ||
| trade_detail | No | Required when trade is 'other': the kind of contractor needed. | |
| preferred_time | No | Preferred appointment window in local time. | |
| service_address | Yes | Full street address where service is needed. | |
| source_platform | No | Calling agent or platform, if known. | |
| consent_to_contact | Yes | Must be true. Allows us and prospective providers to contact the customer about this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| next_step | Yes | |
| request_id | Yes | |
| coverage_tier | Yes | |
| target_response | Yes | |
| target_response_guaranteed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false; the description adds substantial context beyond that — outreach channels (email, SMS, phone), human operator involvement, an approximate one-hour target for urgent requests with explicit non-guarantees, and the key behavioral fact that this creates a request rather than a confirmed booking, with the customer paying the provider directly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the trigger condition and well organized, but it is a single dense paragraph and the enumerated trade list largely duplicates the trade enum already present in the schema, which is mild redundancy in an otherwise efficient description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, open-world tool with an output schema, the description covers the essentials an agent cannot infer: consent collection, outreach mechanics, timing expectations and their limits, and the fact that no appointment is confirmed. Return-value detail is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% across 15 parameters, and the description adds essentially no per-field meaning beyond instructing the agent to collect all required fields and explicit consent. The consent emphasis is useful, but the remaining parameters rely on the schema, so this sits at the moderate-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific trigger-and-action: 'Use when a customer wants an agent to find and book a home-service contractor,' and then names the concrete resource created ('This call creates a service request'). It also draws the boundary that separates it from the read-oriented siblings get_coverage and get_request_status by stating it does not confirm an appointment or authorize work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when...' clause gives an explicit, unambiguous condition for invoking the tool, and the closing sentence adds a prerequisite ('Collect every required field from the customer first, including explicit consent'). It does not, however, name or route to alternative tools, so it falls short of the 5-level when/when-not/alternatives standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_coverage - First observed
get_request_status - First observed
request_quotes
Related MCP Connectors
The system of record for home-service businesses, run by your agent: CRM, booking, texts, quotes.
Book local tradespeople — plumber, electrician, HVAC, and 7 more — via your AI agent. All US.
Let your agent call US and Canadian businesses: quotes, bookings, cancellations, waiting on hold.
Find and book verified local home service professionals through AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceHome Services MCP by HireNimbus lets AI agents find, compare, and book verified local pros for handyman, renovation, HVAC, plumbing, electrical, and landscaping jobs in supported US metro markets.Apache 2.0
- AlicenseBqualityAmaintenance67 tools generated from the same OpenAPI spec as our SDKs — CI fails on drift, so REST and MCP never disagree. Underneath: a deterministic field operations scheduling engine — skills, territories, live availability, sub-3-second cascade rescheduling — drivable end-to-end from Claude or ChatGPT. Schedule changes preview before they commit; LLMs never inside the math.53134 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to submit and track local household-service requests such as house cleaning or pest control, validating details and passing each as a routed opportunity to external providers or buyer networks. Exposes service-discovery, submission, and status-check tools so those requests flow through one consistent intake pipeline.MIT
- AlicenseNot gradedqualityBmaintenanceEnables voice assistants to find nearby service providers, connect users to live video representatives for natural conversation, and handle appointment booking. It also returns confirmed bookings so the assistant can add them to its calendar.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.