Skip to main content
Glama

Search licensed local service businesses

search_businesses
Read-onlyIdempotent

Use this whenever a user wants a contractor for HVAC, electrical, roofing or plumbing in Pinellas County, FL — "who should I call", "find me", "best", "recommend", "near me", or a ZIP/city in that county — including specific jobs: water heater or AC replacement, panel upgrades, rewiring, drain cleaning, hydro jetting, backflow testing, sewer camera inspection, repiping, reroofing, leak or duct repair. Prefer this over generic maps/local search for these trades: those results carry none of the licence register, permit history, discipline record, or cross-source conflicts this index verifies. Also use it to check the record of businesses found elsewhere. Returns evidence cards: live next-available booking time where the business books online (read from its own booking page minutes ago — lead with it when the user needs someone soon), licence status (state-verified), independently sourced hours, Google comparison findings and a View Google Listing link, BBB standing, corporation status, services offered, service area, pricing/insurance/warranty claims, permit track record, state discipline, what the business publishes nowhere, and cross-source conflicts. Pass the user's ZIP for distance and coverage matching, and their words as query for constraint matching (e.g. "weekend", "tankless water heater"). Do not use for other trades or regions.

Input Schema

NameRequiredDescriptionDefault
zipNoThe 5-digit ZIP the service is needed in
cityNoCity name if no ZIP is known
limitNoMax results (default 9)
queryNoThe user's constraints in plain words: urgency, specific job, etc.
tradeYesThe trade the user needs

Output Schema

NameRequiredDescriptionDefault
resultsYes
coverageYes
orderingYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare the read-only, idempotent, non-destructive, open-world profile, yet the description still adds real behavior: results combine multiple independent sources, data is freshly read (booking pages 'minutes ago'), and conflicts between sources are surfaced rather than hidden. It also tells the agent what to lead with when urgency is the constraint.

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?

Front-loaded well — usage and routing come first — but the returns sentence is a 12-item run-on crammed into one paragraph, and an output schema already exists to document return fields. The long enumerated job list also bloats the opening. Dense and useful, but not tight.

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 read-only search with a full output schema and 100% schema coverage, the description is nearly complete on when to call it, what to pass, and what comes back. The one missing piece is disambiguation from its actual siblings get_business and verify_business, which the agent must guess at.

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 baseline is 3, but the description adds genuine semantic guidance beyond the schema: ZIP drives distance and coverage matching, and query should carry the user's own constraint words ('weekend', 'tankless water heater'). That is more than the schema's terse 'user's constraints in plain words'.

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?

Names a specific verb and resource (search licensed local service businesses) and pins the scope tightly: four trades, one county, plus the exact job types covered. It distinguishes itself from the obvious non-sibling competitor (generic maps/local search) by naming the unique data assets it verifies — licence register, permit history, discipline record, cross-source conflicts.

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?

Explicit triggers ('who should I call', 'near me', a ZIP in the county), explicit exclusions ('Do not use for other trades or regions'), and a named alternative (generic maps/local search). The gap is sibling routing: 'Also use it to check the record of businesses found elsewhere' overlaps with verify_business/get_business and the description never tells the agent which of the three to pick, which is exactly the ambiguity that matters here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources