Western Sky Heating, Cooling & Plumbing (Indiana)
Server Details
Book HVAC and plumbing service with Western Sky in Fishers and the Indianapolis area.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct purpose: service area verification, time slot retrieval, general business info, and appointment submission. There is minor overlap between get_business_info and check_service_area regarding service areas, but descriptions make the intended use clear. No two tools could be confused for the same action.
All tool names follow a consistent snake_case verb_noun pattern: check_service_area, get_available_times, get_business_info, request_appointment. The verbs are appropriate and predictable for each action. No mixing of conventions.
Four tools are well-scoped for a localized appointment-booking assistant. Each tool earns its place by covering a necessary step in the customer journey. The count is neither bloated nor thin for the narrow domain.
The core booking workflow is covered: check service area, see availability, get business info, and submit a request. Minor gaps exist—no tool to reschedule, cancel, or check the status of an existing request—but these may be out of scope since confirmation happens via phone. Agents can work around these limitations.
Available Tools
4 toolscheck_service_areaCheck service areaARead-onlyInspect
Check whether Western Sky Heating, Cooling & Plumbing serves a city in IN, and which office covers it.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City of the service address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint false, and closed-world scope. The description adds two useful behavioral facts beyond that: the service region is limited to Indiana, and the response identifies the covering office. It does not describe failure/not-served behavior, so it stops short of a 5.
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?
One sentence, front-loaded with the verb and scope, with the return value appended. Every clause earns its place; nothing is padded.
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 single-parameter read-only lookup with no output schema, the description covers what is being asked and what comes back. Only the negative case (city not served) and any ambiguity resolution are left implicit, which is a minor gap.
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% for the single 'city' parameter, so the schema already carries the semantics. The description reinforces the Indiana constraint but adds no format, casing, or lookup-syntax detail beyond the schema. Baseline 3 is correct here.
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 ('Check whether... serves'), a specific resource (a city in IN), and the return value (which office covers it). An agent can distinguish this lookup from sibling booking/scheduling tools 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?
Usage is implied by the nature of the tool (validate coverage before requesting an appointment), but the description names no when-to-use condition, prerequisites, or alternatives among the siblings (get_available_times, request_appointment, get_business_info). It is adequate rather than helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_timesGet open arrival windowsARead-onlyInspect
Open arrival windows for the next few days (up to 21), in IN local time. If online availability is unavailable, ask the customer for a preferred day and time instead.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days to search (default 7) | |
| start_date | No | YYYY-MM-DD to start from (default: today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds value beyond them by disclosing the timezone of returned windows and a fallback behavior for the agent when live availability is missing, though it says nothing about pagination or result shape.
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?
Two short sentences, front-loaded with the core capability and followed by the one exception rule. Every clause earns its place with no restatement of the title or schema.
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 two-optional-parameter read tool with no output schema, the description covers scope, timezone, the day cap, and the fallback path. The remaining gap is what a returned window looks like (slot format/ordering), which an agent might benefit from given no output schema exists, but the essentials are present.
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 100%, so the schema already documents `days` (default 7, max 21) and `start_date` (default today). The description's 'IN local time' note is the only added meaning, and it applies loosely to `start_date` interpretation, so this sits at the 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 names the resource (open arrival windows) and the scope (next few days, up to 21, in local time), which is clearer than the title alone. However, the verb is implicit and it never distinguishes itself from siblings like request_appointment or check_service_area, so the agent must infer which one to pick.
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?
It supplies one concrete usage rule — if online availability is unavailable, ask the customer for a preferred day and time instead — which is a real decision point. But it gives no guidance on when to prefer this over check_service_area or request_appointment, so the when-to-use story is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_infoWestern Sky Heating, Cooling & Plumbing infoARead-onlyInspect
Services, service-area cities, and phone numbers for Western Sky Heating, Cooling & Plumbing (IN).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the return-content scope (services, cities, phones), which is useful, but says nothing about caching, freshness, or output shape beyond that.
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?
A single tight sentence with no filler, and the returned data categories are front-loaded. It loses a point only for being a fragment lacking a leading verb, which slightly weakens the framing of the action.
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?
With no output schema present, the description carries the burden of hinting at returns and does so by enumerating the three content categories. For a zero-parameter read-only tool this is nearly complete, though it omits output format and how the result should be consumed.
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?
The schema is an empty object, so per the baseline a 4 applies. The description correctly adds no parameter narrative because there is nothing to parameterize.
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 resource set (services, service-area cities, phone numbers) for a named business, so an agent can tell this is the general business-profile lookup rather than the scheduling siblings. It stops short of explicitly distinguishing itself from check_service_area or get_available_times, and the phrasing is a noun list rather than a verb-led statement.
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?
There is no explicit when/when-not statement or named alternative among the siblings. Usage is only implied by the content (fetch business basics like phone/service area), which is enough for an agent to infer intent but leaves routing among the sibling tools unguided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_appointmentRequest an appointmentAIdempotentInspect
Submit an appointment request. A Western Sky team member calls the customer to confirm the time; it is not final until then. Only call this after the customer has confirmed every detail.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | Yes | 5-digit ZIP | |
| city | Yes | ||
| name | Yes | Customer full name | |
| unit | No | ||
| No | |||
| phone | Yes | Best phone number, 10-digit US | |
| street | Yes | ||
| problem | Yes | What's going on, in the customer's words: equipment, symptoms, how long | |
| service | Yes | ||
| new_customer | No | True if Western Sky has never been to this address | |
| window_start | No | window_start from get_available_times, if the customer picked one | |
| preferred_time | No | Customer's preferred day/time in their words, if no window was picked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, idempotent, open-world write with no destructive hint. The description adds genuine behavioral context beyond that: a team member calls to confirm and the time is not final until then, which meaningfully shapes agent expectations about what happens after submission.
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, each doing work: action, post-submission behavior, and precondition. Front-loaded with the core action and free of filler, though it is terse enough to forgo any parameter or routing detail.
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 12-parameter mutation tool with no output schema, the description conveys the essential nuance (request is provisional pending a confirmation call) and the precondition for calling. Given annotations already carry the safety profile and the schema documents most parameters, remaining gaps are minor.
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 mid-range (58%), so a 3 baseline applies. The description adds no parameter-level meaning—it never explains window_start vs preferred_time, the new_customer flag, or service enum—leaving that to the schema, which does document several fields.
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+resource ('Submit an appointment request'), which is clear and distinct from the read-oriented siblings get_available_times and check_service_area. It does not explicitly name or route away from any sibling, but the mutation intent 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?
'Only call this after the customer has confirmed every detail' gives an explicit precondition for invocation, and the confirmation-call note implies the appointment is provisional. It lacks an explicit named alternative (e.g., 'schedule only after get_available_times'), so it stops short of full routing guidance.
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.
4 tool updates
- First observed
check_service_area - First observed
get_available_times - First observed
get_business_info - First observed
request_appointment
Related MCP Connectors
Book HVAC and plumbing service with Western Sky in Montana's Flathead and Gallatin valleys.
Book window & gutter cleaning in Colorado and New Mexico: instant firm quote, real calendar slot
Book local tradespeople — plumber, electrician, HVAC, and 7 more — via your AI agent. All US.
Find and book local service businesses (plumbers, HVAC, detailers) at real prices, with approval.
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
- 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
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search for businesses, check availability and pricing, and book appointments after user confirmation through trusted WebMCP tools.3 npmMIT
- 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
Glama MCP Gateway
Add one secure layer between your agents and this server.