Western Sky Heating and Cooling (Montana)
Server Details
Book HVAC and plumbing service with Western Sky in Montana's Flathead and Gallatin valleys.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools target distinct actions: area check, time lookup, business info, and appointment submission. The only mild overlap is that get_business_info also returns service-area cities, which could partially duplicate check_service_area, but the dedicated tool is clearly the authoritative one.
All names follow a clean snake_case verb_noun pattern (check_service_area, get_available_times, get_business_info, request_appointment). Verb choices are consistent and predictable for each action type.
Four tools is well-scoped for a narrow appointment-booking workflow, and each earns its place. It is slightly lean but not thin enough to be a problem for this focused domain.
The core flow (verify area, view times, gather info, request appointment) is fully covered. Minor gaps exist, such as no way to check status or cancel/reschedule an existing request, but the primary lifecycle is intact.
Available Tools
4 toolscheck_service_areaCheck service areaARead-onlyInspect
Check whether Western Sky Heating and Cooling serves a city in MT, 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=true, destructiveHint=false and openWorldHint=false, so safety and world-scope are covered. The description adds the closed-world constraint that coverage is limited to MT and that the response resolves an office, but it says nothing about failure behavior or what 'not served' looks like. Modest added value over the annotations.
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 front-loaded sentence with no filler; every clause (business, scope, outcome) carries information.
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 one-parameter read tool with full schema coverage and annotations covering safety, the description is nearly sufficient and hints at return semantics (served/not served, covering office). Only the ambiguity of unserved cities and its relationship to the appointment siblings keeps it short of complete.
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% ('City of the service address'), so the schema already carries the parameter meaning. The description only adds the implicit MT scope for the city value. Baseline 3 is appropriate when the schema does the heavy lifting.
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?
Specific verb (check) plus resource (service area) plus a named business and geographic scope (MT), and it even states the outcome dimension ('which office covers it'). None of the siblings (get_available_times, get_business_info, request_appointment) could be confused with this lookup, so differentiation is achieved by domain specificity even without naming a sibling.
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 only implied: an agent can infer this is a pre-booking eligibility check, but the description never says when to call it, whether it should precede request_appointment, or what to do when a city is not served. No exclusions or alternatives are stated.
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 MT 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 cover safety (readOnly, non-destructive). Description adds key behavioral context — results are in MT local time and capped at 21 days — plus a fallback behavior when availability isn't available. Does not mention pagination or response shape, but that's minor for a read-only list.
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 tight sentences, front-loaded with what the tool returns, then the practical fallback. No filler.
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 timezone, cap, and fallback behavior for a simple read-only tool with full param schema coverage. Could note the typical next step (request_appointment) to fully close the loop, but nothing critical is missing.
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%, with defaults and min/max documented in the schema. The description mentions the 21-day cap but otherwise adds nothing about parameter usage beyond the schema.
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?
Specific verb+resource: 'Open arrival windows' clearly states what is returned. Distinguishes from siblings like get_business_info and request_appointment — this retrieves available slots, not appointments or info.
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?
Adds a decision rule: 'If online availability is unavailable, ask the customer for a preferred day and time instead' — a clear fallback for when not to use the tool's output. Lacks explicit mention of the sibling request_appointment as the next step after selecting a window.
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 and Cooling infoARead-onlyInspect
Services, service-area cities, and phone numbers for Western Sky Heating and Cooling (MT).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, non-destructive, closed-world), so the description need not restate those. It adds the concrete content of the return payload, but does not mention caching, freshness, or formatting. Adequate but not rich.
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 that front-loads the content categories and names the business. No filler.
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 parameters, full schema coverage, and annotations carrying the safety profile, this is nearly complete. A brief note on whether results are static or could change would make it fully self-sufficient, but nothing essential is missing.
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?
There are zero parameters, so the baseline is 4. The description correctly identifies this as a no-argument lookup by not implying any inputs.
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 resource (Western Sky Heating and Cooling) and enumerates exactly what it returns: services, service-area cities, and phone numbers. An agent can distinguish it from siblings like check_service_area because it describes a static info lookup rather than an area check or booking action.
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?
Lists what info is available, which implies this is the tool for basic business details, but there is no explicit when-to-use versus siblings. The relationship to check_service_area (which handles area queries) is left to inference.
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 Fishers and the Indianapolis area.
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.
Johnson Bros. Plumbing: check coverage, services, pricing, availability, and book by SMS.
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
- FlicenseAqualityDmaintenanceEnables AI-assisted field service management through the Service Fusion API, including job lookup, customer management, dispatch, invoicing, and equipment tracking.161-
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive access to the FieldEdge field service management platform through over 87 tools and 16 React applications. It enables users to manage customers, jobs, scheduling, and invoicing through natural language or integrated UI components.-
Glama MCP Gateway
Add one secure layer between your agents and this server.