Skip to main content
Glama

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 11 of 11 tools scored. Lowest: 3.8/5.

Server CoherenceA
Disambiguation4/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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
business_infoGet Business InformationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
hoursYes
bookingYes
successYes
businessYes
review_sandboxNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 AreaA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo
townNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
zipNo
townNo
errorNo
messageNo
successYes
countiesNo
error_codeNo
matched_byNo
review_sandboxNo
in_service_areaNo
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 CodeA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
booking_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
bookedYes
statusYes
messageYes
successYes
replayedNo
timezoneNo
next_stepYes
error_codeNo
needs_manualYes
service_cityNo
customer_nameNo
scheduled_endNo
business_phoneYes
review_sandboxNo
scheduled_startNo
location_summaryNo
attempts_remainingNo
business_phone_hrefYes
confirmation_numberNo
service_descriptionNo
formatted_arrival_windowNo
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 HelpA
Read-onlyIdempotent
Inspect

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:

  1. First ensure customer safety (especially for gas leaks)

  2. Provide immediate mitigation steps (how to shut off water, etc.)

  3. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emergency_typeYesType of plumbing emergency (required). Examples: 'burst pipe', 'flooding', 'gas leak', 'sewage backup', 'no hot water', 'no water'
additional_detailsNoAdditional context about the emergency (optional). Include location, duration, actions already taken.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
call_nowNo
urgency_levelNo
emergency_typeNo
recommendationNo
review_sandboxNo
immediate_stepsNo
safety_warningsNo
emergency_contactNo
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. DocumentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument id from a search result, e.g. 'faq:pricing-service-fee'

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
textNo
errorNo
titleNo
successYes
metadataNo
error_codeNo
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 WindowsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
start_dateNo
time_preferenceNoany

Output Schema

ParametersJSON Schema
NameRequiredDescription
privacyYes
successYes
windowsYes
timezoneYes
booking_flowYes
open_windowsYes
total_windowsYes
requested_daysYes
review_sandboxNo
time_preferenceYes
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 QuoteA
Read-onlyIdempotent
Inspect

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:

  1. Use this tool when customer asks about pricing

  2. Share the estimate with appropriate caveats

  3. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urgencyNoHow urgent is the repair?
service_typeYesType of plumbing service (required). Examples: 'drain cleaning', 'water heater repair', 'toilet repair'
property_typeNoType of property (default: 'residential')
issue_descriptionYesDescription of the plumbing problem (required). Be specific about symptoms and location.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
notesNo
serviceNo
successYes
next_stepsNo
descriptionNo
service_feeNo
property_typeNo
urgency_levelNo
review_sandboxNo
estimated_durationNo
estimated_price_rangeNo
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 & PricingA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term, e.g. "water heater", "drain"
categoryNoFilter by category: 'emergency', 'maintenance', 'repair', 'installation', 'specialty'

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes
servicesYes
categoriesYes
service_feeYes
review_sandboxNo
total_servicesYes
pricing_disclaimerYes
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCustomer full name
emailNo
notesNoIssue description / anything the technician should know
phoneYesCustomer mobile number — receives the 6-digit confirmation code
addressYes
serviceYesRequested service, e.g. "water heater replacement"
confirmedYesTrue only after the user explicitly asks to start this booking request and send the SMS code
time_preferenceNoFallback time-of-day preference if none of the preferred windows is openany
preferred_windowsNoPreferred arrival windows from get_availability (start_time/end_time ISO strings)
promotion_review_requestedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
successYes
next_stepYes
booking_idNo
error_codeNo
expires_atNo
code_sent_toNo
review_sandboxNo
in_service_areaNo
attempts_allowedNo
service_area_noticeNo
sandbox_verification_codeNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCustomer full name, for example "Jane Smith"
emailNo
phoneYesCustomer phone number for the callback
urgencyNoroutine
confirmedYesTrue only after the user explicitly asks Johnson Bros. to contact them
issue_descriptionYesShort description of the plumbing issue
preferred_callback_timeNoOptional preference such as "weekday morning"

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
messageYes
successYes
next_stepYes
error_codeNo
phone_last4No
review_sandboxNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Validates SMS-capable phone numbers via x402 pay-per-call, detecting mobile vs landline, carrier type, and E.164 format.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A deterministic preflight checker for outbound SMS/iMessage that catches silent filtering, segment blowups, and dropped iMessage features before sending.
    1
    31
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Home 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.

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources