Skip to main content
Glama

Server Details

Johnson Bros. Plumbing: check coverage, services, pricing, availability, and book by SMS.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have distinct purposes (booking flow, availability, emergency, service-area check are clearly separated). The main overlap is get_quote vs get_services_pricing, which both return non-binding price ranges, and business_info partly duplicates the pricing/service-area content available via search/fetch. These are clarified in descriptions but still require reading carefully to choose correctly.

Naming Consistency3/5

The dominant pattern is verb_noun (check_service_area, confirm_booking, request_booking, request_callback, get_availability, get_quote, get_services_pricing). However, business_info and emergency_help are bare nouns and fetch/search are bare verbs, breaking the convention. Readable overall but mixed.

Tool Count5/5

11 tools is well-scoped for a plumbing booking domain, covering discovery, quoting, availability, booking, confirmation, callbacks, and emergency guidance. No obvious redundant or filler tools.

Completeness3/5

The booking lifecycle covers create (request_booking) and confirm, but there is no cancel or reschedule tool, which is a notable gap for a booking system. Pricing, availability, dispatch fee, and emergency coverage are otherwise thorough.

Available Tools

11 tools
business_infoGet Business InformationA
Read-onlyIdempotent
Inspect

Start here for a self-contained Johnson Bros. business briefing: locations, services, hours, service area, dispatch fee, pricing and booking policies, credentials, payment methods, and how to get further information through MCP without browsing the website. Not live availability or private customer records.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
hoursYes
bookingYes
successYes
businessYes
review_sandboxNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantive context beyond annotations: it states the response is a self-contained briefing covering pricing, dispatch fee, and booking policies, and explicitly disclaims live availability and private records. Annotations already cover the read-only/idempotent safety profile, so the extra scoping content is the value-added part. It does not note caching/staleness of the briefing content, which would push it to a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The 'Start here' call to action is front-loaded, the content inventory follows, and the exclusion closes the sentence. Every clause carries information.

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?

An output schema exists, so the description correctly does not describe return-value structure, focusing instead on content scope and boundaries. With annotations covering safety, the description is complete for an agent deciding whether to call this tool first.

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?

Zero parameters, so the baseline is 4. The description correctly implies no inputs are needed by framing this as a fetch of a static briefing, though it doesn't explicitly say 'no parameters required'.

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 names the resource (Johnson Bros. business briefing) and enumerates exactly what it returns: locations, services, hours, service area, dispatch fee, pricing, booking policies, credentials, payment methods, and further-info routing. Its explicit exclusion ('Not live availability or private customer records') cleanly distinguishes it from siblings like get_availability and check_service_area.

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 instruction 'Start here' gives an unambiguous entry point, and the exclusion of live availability and private records names the boundary against siblings get_availability, request_booking, and customer-record tools. When-to-use and when-not-to-use are both present.

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

TDQS

A4.5/5.0
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

TDQS

A4.7/5.0
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

TDQS

A4.7/5.0
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

TDQS

A3.8/5.0
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

TDQS

A3.9/5.0
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

  • The $99 service fee covers sending a technician out to diagnose the problem and give you an estimate before repair work starts. If you approve the repair, we waive the service fee and you pay only the price the technician quoted. If you decline the repair, the $99 service fee is due.

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

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide strong cues (readOnlyHint=true, idempotentHint=true, destructiveHint=false), meaning the tool is safe and non-mutating. The description adds useful context by explaining that estimates are non-binding and final pricing is on-site, which is beyond annotations. However, it does not describe any rate limits, authentication, or return format details beyond what the output schema likely covers. Given the annotations, the description's extra context is valuable but not rich enough to exceed a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/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) and is front-loaded with the core purpose and caveat. However, the PRICING NOTES section is somewhat lengthy and includes the $99 fee detail, which could be considered extra but does add value. No sentence is wasteful, but the length is slightly above ideal for a tool description.

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 (4 params, enums, output schema) and strong annotations, the description is mostly complete. It covers usage context, pricing limitations, and workflow sequencing, but does not explicitly state what happens if required parameters are missing or handle edge cases like unsupported service types. Since the output schema exists, return values are covered, but the integration with other tools is well addressed. Slight gap in error handling or prerequisites.

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 description coverage is 100%, so the schema fully documents all four parameters. The description goes further by clarifying the $99 service fee detail, which is not in the schema and affects the estimate context. It also advises specificity for issue_description and mentions pricing notes that relate to parameters like urgency and property_type. This adds meaningful context beyond the schema, pushing the score above baseline.

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 purpose: providing a non-binding estimate for a plumbing issue, with clear output components (price range, duration, next step). It explicitly distinguishes itself from related tools like get_services_pricing by focusing on per-issue quotes versus general pricing. This is more specific than the title, giving the agent a clear understanding of what the tool does and does not do.

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 explicit WHEN TO USE guidance, including example phrasings from customers, and a workflow: use this tool early for pricing queries, then transition to get_availability and booking tools. It also provides important exclusions, such as not inventing surcharges and not presenting the range as guaranteed. This is exemplary guidance for an agent to select this tool over siblings.

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

TDQS

A4.4/5.0
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
referral_codeNo
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

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral details beyond the annotations: sending an SMS is an external side effect, the tool does not create an appointment, and the booking is not final until confirm_booking confirms it. The annotations already signal non-read-only and non-idempotent, so the description's extra clarity about the actual workflow is valuable and does not contradict any annotation.

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 three crisp sentences: precondition, core action/side effect, and confirmation caveat. Every sentence earns its place and the most important usage restriction is front-loaded.

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?

Given the presence of an output schema, the description does not need to explain return values. It covers the essential preconditions, the SMS side effect, the fact that no appointment is scheduled, and the downstream dependency on confirm_booking—enough for an agent to invoke the tool correctly and avoid misrepresenting state.

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 input schema already provides good descriptions for key parameters like name, phone, notes, service, address, confirmed, and preferred_windows. Schema coverage is about 64%, and while the description refers conceptually to contact details, service address, issue, and preferred windows, it does not explain individual parameters. This is acceptable because the schema handles most of the semantic load.

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 names a specific action ('request a booking'), states it sends a six-digit SMS code, and explicitly clarifies it does not schedule a visit. This clearly differentiates it from confirm_booking, which is the sibling that actually confirms an appointment.

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 a precise precondition: use only after the user explicitly asks to start a Johnson Bros. booking and confirms their contact details, service address, issue, and preferred windows. It also tells the agent not to claim an appointment exists until confirm_booking returns status:confirmed and booked:true, effectively naming the alternative tool and the handoff condition.

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

TDQS

A4.4/5.0
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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedrequest_booking1 field changed
      • addedInput schema / properties / referral_code
        Added value: +{
        +  "maxLength": 300,
        +  "type": "string"
        +}
  2. 11 tool updates
    • First observedbusiness_info
    • First observedcheck_service_area
    • First observedconfirm_booking
    • First observedemergency_help
    • First observedfetch
    • First observedget_availability
    • First observedget_quote
    • First observedget_services_pricing
    • First observedrequest_booking
    • First observedrequest_callback
    • First observedsearch

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to check whether an Australian field-service job can be worked at a location on a given day for a specific trade, using live weather forecasts, daylight hours, and public holiday data.
    MIT
  • 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources