plumbing-booking
Server Details
Johnson Bros. Plumbing: check coverage, services, pricing, availability, and book by SMS.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 11 of 11 tools scored. Lowest: 3.8/5.
Most tools have clear, distinct purposes: business_info vs search vs get_services_pricing are separable. However, get_services_pricing and get_quote overlap somewhat—both provide pricing info, though one is for general browsing and the other for specific estimates. The descriptions do help distinguish them, so the ambiguity is low.
Tool names generally follow a verb_noun pattern (e.g., business_info, check_service_area, confirm_booking, get_availability, get_quote). Some names are single verbs or nouns (e.g., fetch, search) which deviate slightly, but overall the pattern is consistent and predictable.
11 tools is within the ideal range for a booking-focused MCP server. Each tool covers a distinct part of the customer journey: info lookup, service area check, pricing, availability, booking, confirmation, callbacks, emergencies, and document retrieval. No tool seems redundant or unnecessary.
The tool set covers the core booking lifecycle: check service area, get availability, request booking, confirm booking, request callback, and get quotes. Emergency help is also provided. Minor gaps include lack of a cancel/update booking tool, but the server context suggests that might not be needed for the public-facing purpose.
Available Tools
11 toolsbusiness_infoGet Business InformationARead-onlyIdempotentInspect
Use this when the user asks about Johnson Bros. contact details, credentials, hours, payment methods, service area, or booking process. Do not use it for live availability or a customer-specific record.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| hours | Yes | |
| booking | Yes | |
| success | Yes | |
| business | Yes | |
| review_sandbox | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds context about the information scope (e.g., hours, payment methods) but does not mention any additional behavioral traits like rate limits or auth requirements, which are not needed here given the read-only nature.
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 concise sentences: first states the purpose, second gives the exclusion. No filler, front-loaded with the main use case.
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 zero-parameter, read-only tool with an output schema, the description fully covers when to use it and what it provides. No missing guidance for an agent to call it correctly.
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?
Tool takes zero parameters, so there is nothing to explain. Baseline of 4 is appropriate given no parameter documentation is needed.
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?
Description clearly states the tool provides Johnson Bros. contact details, credentials, hours, payment methods, service area, and booking process. It uses specific verbs and names the resource, making it distinct from siblings like check_service_area or get_availability.
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?
Explicitly states when to use the tool and when not to: 'Do not use it for live availability or a customer-specific record.' This gives clear routing guidance against siblings that handle those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_service_areaCheck Service AreaARead-onlyIdempotentInspect
Use this when the user gives a Massachusetts ZIP code or town and wants to know whether Johnson Bros. serves it. Do not use this as proof that a specific appointment is available.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| town | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| zip | No | |
| town | No | |
| error | No | |
| message | No | |
| success | Yes | |
| counties | No | |
| error_code | No | |
| matched_by | No | |
| review_sandbox | No | |
| in_service_area | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not mention side effects or permissions, but the annotations already provide readOnlyHint and idempotentHint. It adds a caution about not using it for appointment proof, which is a useful behavioral note, but it does not go beyond what annotations already cover.
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?
The description is two sentences, efficiently combining purpose and usage guidance. It is well-structured with a positive statement followed by a negative constraint, with no unnecessary wording.
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?
The description provides enough context for an agent to decide when to call the tool, what parameters to provide, and what outcome to expect (whether Johnson Bros. serves the area). It also differentiates from sibling tools like request_booking and get_availability.
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 includes 'zip' and 'town' without descriptions. The tool description clarifies that these refer to a Massachusetts ZIP code or town, giving them meaning and indicating they are alternative inputs. This adds value beyond the raw 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?
The description clearly states the tool's function: given a Massachusetts ZIP code or town, it checks whether Johnson Bros. serves that area. It uses a specific verb ('serves') and distinguishes itself from related tools like get_availability.
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 explicitly states when to use the tool (when a MA ZIP or town is provided to check service area) and when not to use it (not as proof of appointment availability), giving clear guidance relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_bookingConfirm a Booking with the SMS CodeAIdempotentInspect
Use this after the customer supplies the six-digit SMS code from request_booking. Only status:confirmed with booked:true means the visit is scheduled. status:callback_pending with booked:false means the office must follow up and must never be described as an appointment. Replaying the same valid confirmation is safe and returns the stored result.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| booking_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| booked | Yes | |
| status | Yes | |
| message | Yes | |
| success | Yes | |
| replayed | No | |
| timezone | No | |
| next_step | Yes | |
| error_code | No | |
| needs_manual | Yes | |
| service_city | No | |
| customer_name | No | |
| scheduled_end | No | |
| business_phone | Yes | |
| review_sandbox | No | |
| scheduled_start | No | |
| location_summary | No | |
| attempts_remaining | No | |
| business_phone_href | Yes | |
| confirmation_number | No | |
| service_description | No | |
| formatted_arrival_window | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with idempotentHint already present, the description adds concrete behavioral detail: replaying a valid confirmation is safe and returns the stored result. It also explains the meaning of status:confirmed/booked:true versus status:callback_pending/booked:false, which is crucial beyond 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?
Three dense sentences, all front-loaded with the most important trigger condition first. No filler, and every sentence adds distinct value: when to use, how to interpret results, and that replay is safe.
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?
The description covers the essential workflow: sourcing the code, interpreting the two possible status outcomes, and safe retry behavior. With an output schema present, return-value details are already handled, so 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 coverage is 0%, so the description must compensate. It clearly identifies 'code' as the six-digit SMS code from request_booking, but 'booking_id' is only inferred from the tool name and request_booking context. That partial clarification earns a 4.
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 clearly states the tool confirms a booking using a six-digit SMS code and explicitly ties it to request_booking. It differentiates the action from siblings like request_callback by defining what counts as a scheduled visit versus a follow-up situation.
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 description provides a clear trigger condition: use it after the customer supplies the SMS code from request_booking. It does not explicitly name an alternative tool or state 'do not use when...', but it does clarify that callback_pending must not be treated as an appointment, which guides routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emergency_helpEmergency Plumbing HelpARead-onlyIdempotentInspect
Use this immediately when the user describes an urgent plumbing safety or damage situation. Give bounded mitigation guidance and direct them to call Johnson Bros.; for gas, fire, or immediate danger, direct them to leave and call 911 first. Do not treat this tool as monitored emergency dispatch or create an online emergency appointment.
WHEN TO USE: Immediately when a customer mentions an emergency situation like:
Burst pipe, flooding, or water damage
Gas smell or suspected gas leak (CRITICAL - may need to call 911)
Sewage backup or overflow
No water or sudden loss of water
Water heater leaking or not working
PRIORITY ORDER:
First ensure customer safety (especially for gas leaks)
Provide immediate mitigation steps (how to shut off water, etc.)
Then tell the user to call Johnson Bros. for emergency service
RETURNS: Step-by-step immediate actions, safety warnings, things NOT to do, urgency level, and whether emergency dispatch is recommended.
IMPORTANT: For gas leaks, always advise leaving the house and calling 911 first.
| Name | Required | Description | Default |
|---|---|---|---|
| emergency_type | Yes | Type of plumbing emergency (required). Examples: 'burst pipe', 'flooding', 'gas leak', 'sewage backup', 'no hot water', 'no water' | |
| additional_details | No | Additional context about the emergency (optional). Include location, duration, actions already taken. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| success | Yes | |
| call_now | No | |
| urgency_level | No | |
| emergency_type | No | |
| recommendation | No | |
| review_sandbox | No | |
| immediate_steps | No | |
| safety_warnings | No | |
| emergency_contact | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnly, idempotent) and adds behavioral context: it describes the nature of the tool as giving bounded guidance and the output through the 'RETURNS' section. There is no contradiction with 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?
The description is concise and well-structured, with a clear directive, specific conditions, and a 'RETURNS' summary. It avoids unnecessary verbosity while covering essential aspects.
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?
The description is complete for the tool's scope: it covers purpose, usage, parameters, output, and edge cases (gas/fire). Given the tool's simplicity and existing schema coverage, no critical information 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?
The schema already provides descriptions for both parameters, including examples for emergency_type and guidance for additional_details. The description does not add further semantic detail beyond the schema, so it meets the baseline without enhancement.
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 clearly states a specific verb ('Use this immediately') and the resource ('urgent plumbing safety or damage situation'), and distinguishes it from sibling tools like booking and info tools by focusing on emergency guidance. It also provides explicit conditions for gas/fire/immediate danger, making the purpose 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?
The description explicitly states when to use (for urgent plumbing safety/damage) and what to do (bounded mitigation guidance, direct to call Johnson Bros., and for gas/fire/immediate danger, leave and call 911). It also excludes using it for monitored emergency dispatch or online appointment creation, clarifying boundaries relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch Johnson Bros. DocumentARead-onlyIdempotentInspect
Use this to read the full text of a document returned by search. Takes the exact id from a search result. Returns public business information only -- it never returns customer records.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id from a search result, e.g. 'faq:pricing-service-fee' |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| text | No | |
| error | No | |
| title | No | |
| success | Yes | |
| metadata | No | |
| error_code | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the valuable constraint that it never returns customer records, which is a significant behavioral limit not evident from annotations. However, it does not disclose any other behaviors like rate limits or error handling. No contradiction; it aligns with 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?
The description is two sentences, front-loads the primary action and input requirement, and includes a crucial limitation in the second sentence. Every word earns its place with no redundancy.
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?
The tool is simple (1 param, no nesting) and the schema and annotations cover safety and parameters. The description adds the key scoping that it only returns public business info, not customer records. With an output schema present, the return format is handled. Minor gaps like whether it can return null or how errors are presented are not critical given the simplicity.
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 description provides 100% coverage for the single parameter 'id', clearly explaining it is a document id from a search result with an example. The description restates the requirement to use the exact id, which adds minimal extra value but is not harmful. Baseline 3 is appropriate because the schema already carries the explanatory burden.
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 clearly states the verb 'read' and the resource 'full text of a document', and specifies the input is the exact id from a search result. It distinguishes from siblings like search (which returns results) and business_info (which likely returns broader info), but does not name these alternatives explicitly.
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 description provides clear context: use when you have a document id from a search result. It implies not to use for customer records by stating it never returns them. It does not explicitly mention alternative tools, but the context is sufficient given the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_availabilityGet Open Booking WindowsARead-onlyIdempotentInspect
Use this when the user wants live Johnson Bros. appointment availability. Returns customer-facing arrival windows and capacity only, never customer data. Do not use it to promise or create an appointment; use request_booking and confirm_booking for that.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| start_date | No | ||
| time_preference | No | any |
Output Schema
| Name | Required | Description |
|---|---|---|
| privacy | Yes | |
| success | Yes | |
| windows | Yes | |
| timezone | Yes | |
| booking_flow | Yes | |
| open_windows | Yes | |
| total_windows | Yes | |
| requested_days | Yes | |
| review_sandbox | No | |
| time_preference | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is disclosed. The description adds valuable context beyond that: it specifies the return data is customer-facing and that it never includes customer data, which is a privacy-related behavioral trait not present in the annotations. This goes a notch beyond the minimum, hence a 4.
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?
The description is two sentences with no filler. It front-loads the primary use case and immediately states the exclusion, making it easy to parse. Every word earns its place.
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?
While the output schema covers return format and annotations cover safety, the description fails to explain what the parameters actually do. The agent cannot correctly specify 'days' or 'start_date' without guessing semantics. For a tool with no required parameters and a clear output schema, the missing parameter context leaves a significant gap in actionable completeness.
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 0% and the description provides zero explanation of the parameters (days, start_date, time_preference). The tool's description does not add any meaning beyond the raw schema, which only gives names and types. With 0% coverage, the description carries the full burden of explaining parameter usage, and it fails to do so.
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 states a specific verb ('get'), resource ('live Johnson Bros. appointment availability'), and explicitly scopes the return to 'customer-facing arrival windows and capacity only, never customer data'. It clearly differentiates from the sibling tools 'request_booking' and 'confirm_booking' by stating what it is not for, so an agent can select it correctly.
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 description gives an explicit condition for use ('when the user wants live appointment availability') and an explicit exclusion with named alternatives ('Do not use it to promise or create an appointment; use request_booking and confirm_booking for that'). This provides clear routing guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteGet Plumbing Service QuoteARead-onlyIdempotentInspect
Use this when the user wants a non-binding estimate for a specific plumbing issue. Returns a price range, typical duration, and next step. Do not present the range as a guaranteed repair price; final pricing is confirmed on-site before work begins.
WHEN TO USE: When a customer asks "How much does it cost?", "What's the price?", or wants to know pricing before booking. Use this early in the conversation to set expectations.
PRICING NOTES:
Estimates are ranges; final price depends on on-site assessment
Do not invent urgency, after-hours, or commercial surcharges
The office or technician confirms any timing- or property-related pricing before work
We charge a $99 service call fee that applies toward work we complete
WORKFLOW:
Use this tool when customer asks about pricing
Share the estimate with appropriate caveats
If they want to proceed, use get_availability, request_booking, and confirm_booking
RETURNS: Service name, price range (min/max in USD), estimated duration, urgency notes, and suggested next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| urgency | No | How urgent is the repair? | |
| service_type | Yes | Type of plumbing service (required). Examples: 'drain cleaning', 'water heater repair', 'toilet repair' | |
| property_type | No | Type of property (default: 'residential') | |
| issue_description | Yes | Description of the plumbing problem (required). Be specific about symptoms and location. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| notes | No | |
| service | No | |
| success | Yes | |
| next_steps | No | |
| description | No | |
| service_fee | No | |
| property_type | No | |
| urgency_level | No | |
| review_sandbox | No | |
| estimated_duration | No | |
| estimated_price_range | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's job is to add context. It does: it emphasizes the estimate is non-binding, warns not to present the range as guaranteed, and notes the $99 service call fee. It also mentions that pricing depends on on-site assessment. This is valuable context that exceeds annotations; a 4 is appropriate because it adds significant behavioral nuance without being exhaustive.
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?
The description is well-structured with clear sections (WHEN TO USE, PRICING NOTES, WORKFLOW, RETURNS) and front-loads the key caveat. However, it is somewhat verbose, with redundant statements like 'Estimates are ranges; final price depends on on-site assessment' repeated a few times. Each sentence adds value, but it could be tightened. A 3 reflects that it's longer than necessary but well-organized.
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?
Given the tool's moderate complexity, the description covers: when to use, what to avoid, return values, and next steps. The output schema exists, so return format is covered. The only minor gap is that it doesn't explicitly state what happens if service_type is not recognized, but that's not critical. The description is sufficient for an agent to invoke it correctly.
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 description doesn't need to explain individual parameters. However, it adds meaning for the parameter values: the pricing notes explain how 'urgency' and 'property_type' affect pricing (e.g., do not invent urgency surcharges, commercial vs residential), which goes beyond the schema's generic 'How urgent is the repair?'. This adds operational context, justifying a 4.
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 clearly states this tool provides a non-binding estimate for a plumbing issue, with an explicit verb ('use'), resource ('plumbing service quote'), and details on what it returns (price range, duration, next step). It distinguishes itself from siblings by noting it's for estimates, not booking or confirmation, and includes a caveat about final pricing.
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 description explicitly says 'Use this early in the conversation' and lists the WHEN TO USE section with customer phrases like 'How much does it cost?'. It guides the workflow: after sharing the estimate, use get_availability, request_booking, and confirm_booking. This clearly differentiates from sibling tools like get_services_pricing (for general pricing) and confirms when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_services_pricingGet Services & PricingARead-onlyIdempotentInspect
Use this when the user wants to browse Johnson Bros. services or general non-binding price ranges. Do not use it for an issue-specific estimate; use get_quote. Final pricing is confirmed on-site before work begins.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search term, e.g. "water heater", "drain" | |
| category | No | Filter by category: 'emergency', 'maintenance', 'repair', 'installation', 'specialty' |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | |
| services | Yes | |
| categories | Yes | |
| service_fee | Yes | |
| review_sandbox | No | |
| total_services | Yes | |
| pricing_disclaimer | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, non-destructive, and idempotent behavior, so the bar is lower. The description adds the non-binding nature of the price ranges and the on-site confirmation, which is useful context. It does not disclose pagination or exact output structure, but given the annotations, this is sufficient transparency for a browsing tool.
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?
The description is concise at two sentences, with clear intent and no filler. It front-loads the main use case, then the exclusion, then the caveat. No wasted words.
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?
The description covers the purpose, the alternative, and the non-binding nature of results. With an output schema present and read-only annotations, nothing critical is missing for an agent to correctly invoke this tool. Minor omissions like pagination exist but are not essential for a browsing operation.
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 has 100% description coverage for both search and category parameters, so the schema already documents the parameters well. The description mentions 'browse services' and 'price ranges' but does not add extra parameter-level detail. Since the schema does the heavy lifting, a baseline score of 3 is appropriate.
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 clearly states the verb (browse) and resource (Johnson Bros. services and price ranges), and explicitly names the alternative tool (get_quote) for issue-specific estimates Alert Alerting agents to what this tool is not for. This differentiates it from siblings like get_quote and browse_catalog.
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 description precisely specifies when to use this tool (browsing services or general non-binding price ranges) and when not to (issue-specific estimates, use get_quote). It also adds a practical constraint: final pricing is confirmed on-site before work begins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_bookingRequest a Booking (sends SMS confirmation code)AInspect
Use this only after the user explicitly asks to start a Johnson Bros. booking and confirms their own contact details, service address, issue, and preferred windows. It sends a six-digit SMS code and does not schedule a visit. Do not claim an appointment exists until confirm_booking returns status:confirmed and booked:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Customer full name | |
| No | |||
| notes | No | Issue description / anything the technician should know | |
| phone | Yes | Customer mobile number — receives the 6-digit confirmation code | |
| address | Yes | ||
| service | Yes | Requested service, e.g. "water heater replacement" | |
| confirmed | Yes | True only after the user explicitly asks to start this booking request and send the SMS code | |
| time_preference | No | Fallback time-of-day preference if none of the preferred windows is open | any |
| preferred_windows | No | Preferred arrival windows from get_availability (start_time/end_time ISO strings) | |
| promotion_review_requested | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | Yes | |
| success | Yes | |
| next_step | Yes | |
| booking_id | No | |
| error_code | No | |
| expires_at | No | |
| code_sent_to | No | |
| review_sandbox | No | |
| in_service_area | No | |
| attempts_allowed | No | |
| service_area_notice | No | |
| sandbox_verification_code | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a significant side effect (SMS sending) beyond what annotations capture, which is operationally important (cost/spam). Reasonably covers the non-idempotent behavior hinted by idempotentHint: false, though it could further warn against double-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 sentences: when to call, what happens, when to claim success. Every word earns its place and the importance of the SMS side effect is front and center.
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 tool with 10 parameters, nested objects, and a two-phase confirmation flow, the description clearly defines the overall flow and the exact condition indicating successful booking. It doesn't cover cancellation/error paths, but those are likely in 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 coverage is 70%, so some burden rests on the description, which provides an overall collection checklist. However, it doesn't flag that address and time_preference are nested/optional, so the description's added value over the schema is limited.
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?
Highlights the tool's exact purpose: it sends a six-digit SMS code and explicitly states what it does not do, i.e., schedule a visit. Clearly differentiates from sibling confirm_booking by naming it, and the resource (booking initiation flow) 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?
States a concrete precondition (only after user explicitly initiates) and explains when not to use it (do not treat as scheduled). Even names the sibling tool and the exact response conditions required to proceed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_callbackRequest a Johnson Bros. CallbackAInspect
Use this only after the user explicitly asks Johnson Bros. to call them about a plumbing need and provides their own contact details. This creates a callback lead, not an appointment. Do not use it for emergency dispatch; tell emergency users to call (617) 479-9911.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Customer full name, for example "Jane Smith" | |
| No | |||
| phone | Yes | Customer phone number for the callback | |
| urgency | No | routine | |
| confirmed | Yes | True only after the user explicitly asks Johnson Bros. to contact them | |
| issue_description | Yes | Short description of the plumbing issue | |
| preferred_callback_time | No | Optional preference such as "weekday morning" |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| success | Yes | |
| next_step | Yes | |
| error_code | No | |
| phone_last4 | No | |
| review_sandbox | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already reveal readOnlyHint=false (mutation), openWorldHint=true, idempotentHint=false. The description adds context that the tool 'creates a callback lead, not an appointment' and does not handle emergencies. This goes beyond the annotations by clarifying the type of side effect (lead creation) and what it does not do, which is valuable for an agent deciding among similar tools.
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 sentences, no wasted words. The primary use condition is front-loaded, followed by a clarification of what the tool creates and a clear exclusion with a fallback action. Every sentence contributes to correct selection and usage.
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?
The description covers the essential context: the trigger condition, the type of result (lead vs appointment), and the emergency exclusion. There is an output schema present, so return value details need not be in the description. The only minor gap is not detailing optional parameters like preferred_callback_time, but those are self-explanatory and covered by the schema. Overall sufficient for an agent to use correctly.
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 71% (5 of 7 params documented). The description does not explicitly reference specific parameters by name but implies the requirement for contact details ('their own contact details') and the confirmed flag via 'explicitly asks'. It adds minimal semantic value over the schema, which already covers most parameters. Baseline of 3 is appropriate given high schema coverage.
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 uses a specific verb ('request a callback') and names the resource (Johnson Bros. callback). It clearly distinguishes this from an appointment and from emergency dispatch, which sets it apart from sibling tools like request_booking and emergency_help. The purpose 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?
The description explicitly states when to use it: 'only after the user explicitly asks Johnson Bros. to call them' and that the user must provide their own contact details. It also gives a clear exclusion: 'Do not use it for emergency dispatch' and directs emergency users to call a phone number. This is model guidance for when/when-not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch Johnson Bros. KnowledgeARead-onlyIdempotentInspect
Use this to find Johnson Bros. Plumbing pages about services, service area, pricing policy, or common questions. Returns ids, titles and URLs only -- call fetch with an id to read the full text. Do not use it to check live appointment availability (use get_availability) or to look up a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language search terms, e.g. 'water heater Quincy' |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| success | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by disclosing the return format ('ids, titles and URLs only') and the limitation that full text requires a separate fetch call. It also clarifies that the tool does not cover live availability or customer data, which is useful behavioral context not present in 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?
The description is three tight sentences, each earning its place: purpose, return format plus next step, and exclusions with alternatives. It is front-loaded with the core purpose and contains no filler or redundant restatement of the tool name.
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 search tool with full schema coverage and annotations indicating read-only/idempotent behavior, the description covers all necessary invocation details: what to search, what results look like, how to get full content, and when to use a different tool. Nothing an agent needs for correct use 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?
The schema already describes the query parameter fully with an example, so the baseline is 3. The description enriches it by specifying the domain and scope of valid queries ('Johnson Bros. Plumbing pages about services, service area, pricing policy, or common questions'), helping an agent formulate appropriate queries beyond the generic schema text.
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 states a precise verb ('find') and resource ('Johnson Bros. Plumbing pages'), and specifies the topical scope (services, service area, pricing policy, common questions). It also distinguishes itself from sibling tools by noting it returns only ids, titles, and URLs, and that fetch should be used for full text.
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 gives explicit when-to-use guidance (searching knowledge pages) and explicit when-not-to-use guidance with named alternatives ('Do not use it to check live appointment availability (use get_availability) or to look up a customer'). It also directs users to 'call fetch with an id' after searching, providing a clear workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAutomates tennis court bookings on San Francisco Recreation websites, enabling users to check availability and book courts via SMS verification.
- AlicenseNot gradedqualityBmaintenanceValidates SMS-capable phone numbers via x402 pay-per-call, detecting mobile vs landline, carrier type, and E.164 format.MIT
- AlicenseAqualityAmaintenanceA deterministic preflight checker for outbound SMS/iMessage that catches silent filtering, segment blowups, and dropped iMessage features before sending.1311MIT
- FlicenseNot gradedqualityCmaintenanceHome 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.