Skip to main content
Glama

Server Details

Find real businesses and book appointments. Books via Cal.com; imports 12 platforms.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.4% over 39 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
basilalshukaili/agentbroker
GitHub Stars
0
Server Listing
Agent Broker

TDQS

A4.1/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but a few pairs sit close together: check_booking_link vs import_booking_url (pre-flight vs actual import) and find_business vs verify_business (OSM geosearch vs supply-network directory). The descriptions do explicitly differentiate these, so an agent can resolve them, but the boundaries still require reading the description.

Naming Consistency5/5

All nine tools use a consistent snake_case verb_noun pattern (check_booking_link, import_booking_url, schedule_appointment, preview_cost, verify_business, get_status, get_outcome, find_business, self_test). No mixing of conventions and verbs are predictable.

Tool Count5/5

Nine tools is well-scoped for a booking pipeline spanning discovery, pre-flight classification, import, cost preview, execution, and async result retrieval. Each tool appears to earn its place without redundancy.

Completeness4/5

The surface covers a coherent lifecycle: find/verify a business, import and pre-check a booking link, preview cost, schedule, then poll status and fetch the outcome receipt. There is no way to list existing appointments or reschedule as a distinct operation, and functionality is heavily limited to one Cal.com account, but the core booking workflow is covered.

Available Tools

9 tools
find_businessA
Read-onlyIdempotent
Inspect

Find real businesses near a place, sorted by distance (nearest of those examined; see result.search). Data: OpenStreetMap (ODbL, (c) OSM contributors); phone, website, hours only when mapped. Coverage varies; community-mapped, NOT verified by us; source=openstreetmap rows cannot be booked. Answers within about 5 s: status partial (search_in_progress) means repeat the call. If OSM is down: retriable 'temporarily unavailable', never invented rows. [free, no key] [beta]

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoInstead of location: a city, e.g. 'Muscat, Oman'.
regionNoWith city: a state or region.
locationYesCity/town or ZIP, optionally with country ('Nizwa, Oman'). Geocoded by OSM.
verticalNo
capabilityNoKind of business: 'dentist', 'cafe', 'plumber'. Use it or vertical.
price_bandNoSupply-network rows only (OpenStreetMap has no prices).
max_resultsNo
availability_windowNoAccepted but NOT APPLIED: it does not narrow results (no live calendars). The…

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses ~5s latency, that partial/search_in_progress means the call must be repeated, that an OSM outage yields a retriable 'temporarily unavailable' rather than fabricated rows, and that results are community-mapped and NOT verified by the provider. These are exactly the operational traits an agent needs and none are in the annotations.

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

Conciseness4/5

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

Front-loaded with the core verb+resource, then grouped caveats (data provenance, latency/status, failure mode, tags). Dense but nearly every clause carries information; the trailing '[free, no key] [beta]' tags are slightly cluttered but useful.

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?

With 8 params, nested objects, and no output schema, the definition adequately covers provenance, retry semantics, latency, and the booking limitation, and points at result.search for ordering. It stops short of describing result fields or pagination, leaving a small gap for a discovery tool.

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 75%, so the schema already carries most parameter meaning (radius_miles default/max, price_band scope, availability_window not applied). The description adds little parameter-specific detail of its own beyond the booking constraint tied to source rows, so the baseline 3 applies.

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?

Specific verb+resource: 'Find real businesses near a place, sorted by distance', with the result ordering and the fact that sorting covers only examined rows made explicit. This cleanly separates it from siblings like verify_business, call_business, and capture_lead, which act on a business rather than discovering one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied context is present: it is the discovery step ('find real businesses'), and the caveat that source=openstreetmap rows cannot be booked hints at a downstream booking/verification flow. However it never explicitly states when to prefer this over siblings such as verify_business, nor does it name any alternative or exclusion condition, so usage must be inferred.

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

get_outcomeA
Read-onlyIdempotent
Inspect

Retrieve the final OutcomeReceipt for a completed operation. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful context beyond annotations: the operation must be completed, and the call is free with no key required.

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?

One tight sentence plus a bracket note. Every element earns its place, and the core purpose is front-loaded before the access note.

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 single-parameter retrieval tool with strong annotations, the description is mostly complete: it identifies what to pass, when it is valid, and the access requirements. It does not describe the return shape, but no output schema exists and the resource name 'OutcomeReceipt' is reasonably self-descriptive.

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 0% and the schema only says operation_id is a required string. The description adds context by tying operation_id to the completed operation whose OutcomeReceipt is requested, but it does not specify where the ID comes from or its format.

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?

States a specific verb ('Retrieve') and a specific resource ('final OutcomeReceipt') for a 'completed operation'. This clearly distinguishes it from siblings like get_status, which would naturally map to intermediate status rather than the final receipt.

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 gives clear context: this is for retrieving the outcome only after an operation has completed. It does not explicitly name alternatives or exclusions, but the completed-operation condition is a meaningful usage signal.

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

get_statusA
Read-onlyIdempotent
Inspect

Query the current state of any in-flight async operation by operation_id. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description only needs to add context. It adds that the operation is free, requires no API key, and applies to in-flight async operations, which provides useful behavioral context 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?

The description is compact and front-loaded. The primary purpose is stated in one clear sentence, and the cost/auth note is appended succinctly. Every element earns its place.

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 simple, one-parameter, read-only status tool, the description provides enough to call it correctly: the target resource, the identifier, and the cost/auth constraints. It does not detail the output shape or possible statuses, and it does not explain what happens if the operation is not in-flight, but these are not critical for a basic status query given the annotations.

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 input schema only specifies 'operation_id' as a string with no description, so the description carries the semantic burden. It clarifies that operation_id references an in-flight async operation and that the tool queries its state, which gives the parameter meaningful context. It could be stronger by explaining how to obtain the operation_id, but it is adequate.

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 specifies a verb ('Query'), a resource ('the current state of any in-flight async operation'), and the key identifier ('operation_id'). It also implicitly differentiates from the sibling 'get_outcome' by focusing on in-flight operations rather than completed outcomes.

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 gives clear context: use this when you need the current state of an in-flight operation identified by operation_id. It also notes the operation is free and requires no key. It does not explicitly mention exclusions or alternatives, but the usage context is unambiguous.

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

import_booking_urlA
Idempotent
Inspect

Turn a public booking URL into a callable smb_id for send_message and capture_lead. But schedule_appointment only completes on Cal.com bound to our one connected account — the other 11 always fail schedule_appointment honestly, uncharged. Detects 12 platforms (Cal.com, Calendly, Doctolib, Booksy, Fresha, OpenTable, Setmore, Square, Acuity, Schedulista, Squarespace, BookMyCity). Idempotent — calling twice returns the same smb_id. [free, requires key] [limited]

ParametersJSON Schema
NameRequiredDescriptionDefault
verticalNoIf omitted, inferred from the booking platform.
booking_urlYesFull URL the user supplied. Must point at one of the 12 supported booking…
capabilitiesNoFree-form capability tags (e.g., ['haircut','color','blowdry']).
country_codeNoISO 3166-1 alpha-2 (e.g. 'US', 'FR'); routes compliance on later sends.
business_nameNoIf omitted, auto-extracted from the page's <title> or og:title.
contact_emailNo
contact_phoneNoIf omitted, the platform integration handles outreach.
idempotency_keyNoRetry key: a 24h replay returns the original receipt, not re-run or charged.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover readOnlyHint=false, idempotentHint=true, openWorldHint=false, destructiveHint=false. The description adds real value beyond these: it discloses the scheduling capability gap per platform, states idempotency semantics ('calling twice returns the same smb_id'), lists the 12 supported platforms, and flags cost ('free') and rate limiting ('[limited]'). This is exactly the kind of behavioral context annotations can't express.

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 with purpose, but the sentence about schedule_appointment completing only on Cal.com is dense and syntactically awkward ('only completes on Cal.com bound to our one connected account — the other 11 always fail schedule_appointment honestly, uncharged'). The trailing bracket tags ([free, requires key] [limited]) are cryptic stubs rather than integrated information. Information density is high but structure suffers.

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 an 8-param import tool with no output schema, the description covers platform support, idempotency, cost, rate limits, auth requirement, and downstream-consumer semantics. The main gap is it does not describe the returned smb_id shape or any error semantics when the URL is on an unsupported platform — relevant since there's no output schema to fall back on.

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 88%, so the schema carries the bulk of parameter documentation. The description adds little parameter-level detail beyond the schema except the platform-count constraint on booking_url. Baseline 3 is appropriate when the schema does the heavy lifting and the description does not compensate further.

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?

Clear specific verb+resource: 'Turn a public booking URL into a callable smb_id'. Names the consumer tools (send_message, capture_lead), which distinguishes it from siblings. Lacks a direct contrast to check_booking_link, which is the nearest sibling, but the operation is unmistakably distinct.

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?

Strong routing guidance: states the smb_id is used by send_message and capture_lead, and warns that schedule_appointment only works on a Cal.com account bound to the service (the other 11 platforms fail). That's actionable when/when-not. No explicit mention of check_booking_link as an alternative for pre-flight validation, which would have made it a 5.

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

preview_costA
Read-onlyIdempotent
Inspect

Return an expected cost estimate, latency estimate, and success-probability estimate for a proposed call before execution. Returns the exact price when it is fixed, and a min/max range when the cost depends on channel or outcome. It does not promise an accuracy percentage - check cost_range. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesThe same request body you would pass to the operation
operationYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond that: it returns exact prices when fixed, min/max ranges when variable, does not promise accuracy, and requires no API key ('[free, no key]'). 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?

Three focused sentences with no filler. The first sentence front-loads the core purpose, the second explains the exact-vs-range behavior, and the third adds a crucial caveat plus auth note. Every sentence earns its place.

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 what the tool returns, how pricing varies, and the free/no-key requirement. With no output schema, the return-value description is useful and mostly sufficient. Minor gaps remain around expected operation naming and the exact output shape, but the tool is simple enough that this is not a major deficiency.

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 documents params as 'the same request body you would pass to the operation,' and the description reinforces the 'proposed call' idea. However, the operation parameter is only a bare string with no allowed values or format, and the description does not elaborate on how operations are specified. Schema coverage is exactly 50%, so the description only partially compensates.

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 verb ('Return') and a precise resource: cost, latency, and success-probability estimates for a proposed call before execution. This clearly distinguishes it from siblings like get_outcome, get_status, or verify_company_record, which address different concerns.

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 clearly signals this tool is for pre-execution estimation ('before execution') and cautions that accuracy is not promised, directing the user to cost_range. It does not explicitly name alternatives or state when not to use it, but the context is clear enough given the sibling set.

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

schedule_appointmentA
Destructive
Inspect

Check availability, book, or cancel via Cal.com. Only completes when the SMB's imported booking link is bound to this deployment's ONE connected Cal.com account; otherwise fails honestly (booking_destination_unmapped) with no charge. No working booking path exists yet for non-Cal.com platforms (voice AI, web form) — those SMBs fail honestly instead of a fabricated confirmation. [from $0.15/call, variable, not charged while no payment rail is on] [async→get_outcome] [limited]

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
actionYes
smb_idYes
serviceNo
customerNo
requested_timeNo
idempotency_keyNoRetry key: a 24h replay returns the original receipt, not re-run or charged.
existing_appointment_idNoRequired for cancel

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only supply the generic safety profile (destructive/openWorld/non-idempotent); the description adds concrete failure semantics (booking_destination_unmapped, honest failure instead of fabricated confirmation), the no-charge guarantee, platform limitations, and async behavior. This is exactly the beyond-annotation context an agent needs.

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?

Front-loaded with the core verb set, then dense but each clause carries distinct information (precondition, failure mode, platform limit, price, async tag). Slightly overloaded with bracket tags, but no wasted sentence.

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?

With no output schema, the description correctly focuses on behavior and failure modes and is fairly complete for a complex, destructive, async tool. Its one real gap is the undocumented parameter surface, which the description leaves entirely to a low-coverage schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% across 8 params with nested objects, yet the description explains no individual parameter. It implies the action set and no-charge behavior but never clarifies smb_id, service, customer, requested_time, or how the idempotency_key interacts with the 24h replay.

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?

States a specific verb set (check availability, book, cancel) against a specific resource (Cal.com appointment) and the enum matches exactly. It is immediately distinguishable from siblings like check_booking_link or import_booking_url.

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?

Gives a clear precondition (the SMB's imported booking link must be bound to the one connected Cal.com account) and routes async callers to get_outcome via '[async→get_outcome]'. It does not, however, say when to prefer check_booking_link or import_booking_url over this tool.

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

self_testA
Read-onlyIdempotent
Inspect

Service health probe: runs 6 internal checks and reports how many passed. Confirms the server is up and responding - it does NOT probe each tool individually. Use to verify connectivity before production use. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by disclosing the internal check count (6), the aggregate pass/fail nature, and the free/no-key requirement, which are not in the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the core function first, then the limitation, then the use case, then the free/no-key note. Every sentence 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?

For a zero-parameter, read-only health probe with no output schema, the description covers the essential information: what it checks, what it reports, what it does not do, and when to use it. The only minor gap is not describing the exact output format, but that is not critical for a simple health probe.

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 tool has zero parameters, so the schema is trivially complete. The description adds no parameter details because none are needed; the baseline of 4 for zero-parameter tools applies.

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: it runs 6 internal checks and reports how many passed, confirming the server is up. It explicitly distinguishes itself from per-tool probing, which differentiates it from sibling tools like get_status or verify_company_record.

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 says to use it to verify connectivity before production use, which gives a clear context. It does not explicitly name alternative tools or state when not to use it, but the 'does NOT probe each tool individually' exclusion provides useful guidance.

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

verify_businessA
Read-onlyIdempotent
Inspect

Look up what we know about a business in our supply network: contact channels, capabilities, last verification. A DIRECTORY LOOKUP - it does not contact the business. Supply-network ids only, not osm:... ids. [free, no key] [limited]

ParametersJSON Schema
NameRequiredDescriptionDefault
smb_idYes
capability_to_verifyNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world behavior, so the bar is low. The description still adds genuinely new facts: that it performs no contact, the acceptable id namespace, and cost/access tags '[free, no key] [limited]' signaling no credentials but constrained availability. The '[limited]' tag is left undefined, which keeps it from 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.

Conciseness4/5

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

Front-loads the lookup scope, then the disambiguating negative, then the id constraint and cost tags - a sensible ordering with no filler sentences. The bracketed tags are terse and functional, though '[limited]' is vague enough to cost a point.

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?

With no output schema, the description compensates by naming the returned content (contact channels, capabilities, last verification), and annotations carry the safety profile. The remaining gap is the unexplained capability_to_verify parameter, which an agent may need to call the tool 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 coverage is 0%, so the description must carry both parameters. It does document the smb_id namespace constraint ('Supply-network ids only, not osm:... ids'), which is real added meaning. However, capability_to_verify is never explained - no hint of what capabilities exist or what verification means for them - leaving half the parameters undocumented.

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?

States a specific verb and resource ('Look up what we know about a business in our supply network') and enumerates the fields returned (contact channels, capabilities, last verification). It also draws the key boundary against siblings by declaring 'A DIRECTORY LOOKUP - it does not contact the business', which separates it from call_business without opening either schema.

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?

Gives clear context for when the tool applies: read-only directory inspection rather than outreach, and id-namespace restriction ('Supply-network ids only, not osm:... ids'). The alternative (call_business) is implied by the negation but never named explicitly, so an agent must infer the routing rather than being told it.

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
    • Changedfind_business7 fields changed
      • changedInput schema / properties / availability_window / description
        Previous value: -"Accepted but NOT APPLIED - it does not narrow results. We do not hold live…"New value: +"Accepted but NOT APPLIED: it does not narrow results (no live calendars). The…"
      • changedInput schema / properties / capability / description
        Previous value: -"Kind of business, e.g. 'haircut', 'plumber', 'dentist'. Mapped to OSM tags."New value: +"Kind of business: 'dentist', 'cafe', 'plumber'. Use it or vertical."
      • changedInput schema / properties / city / description
        Previous value: -"Alternative to location: a top-level city, normalised into…"New value: +"Instead of location: a city, e.g. 'Muscat, Oman'."
      • changedInput schema / properties / location / properties / zip_or_city / description
        Previous value: -"City, town, address or postal code, optionally with the country, e.g. 'Nizwa, Oman'. A bare 5-digit ZIP is read as a US ZIP; give any non-US postal code with its country (e.g. '10115, Germany')."New value: +"Town, city, address or postal code, with the country if not US: 'Nizwa, Oman'. A bare 5-digit ZIP is a US ZIP; add the country for any other postal code."
      • changedInput schema / properties / price_band / description
        Previous value: -"Supply-network rows only; OpenStreetMap has no prices."New value: +"Supply-network rows only (OpenStreetMap has no prices)."
      • changedInput schema / properties / region / description
        Previous value: -"Alternative to location: a top-level state/region, normalised into…"New value: +"With city: a state or region."
      • changedInput schema / required
        Previous value: -[
        -  "vertical",
        -  "location"
        -]New value: +[
        +  "location"
        +]
  2. 1 tool update
    • Changedfind_business5 fields changed
      • changedInput schema / properties / capability / description
        Previous value: -"Specific service capability required, e.g. 'haircut', 'plumbing',…"New value: +"Kind of business, e.g. 'haircut', 'plumber', 'dentist'. Mapped to OSM tags."
      • changedInput schema / properties / location / description
        Previous value: -"Where to search. Matched against the business's city, state and ZIP as text -…"New value: +"City/town or ZIP, optionally with country ('Nizwa, Oman'). Geocoded by OSM."
      • changedInput schema / properties / location / properties / radius_miles / description
        Previous value: -"Accepted but NOT applied - no coordinates exist, so results are not restricted to this radius. Disclosed back as radius_miles_applied: false."New value: +"Radius in miles (default 3.1, max 25); applies to OpenStreetMap results only."
      • addedInput schema / properties / location / properties / zip_or_city / description
        Added value: +"City, town, address or postal code, optionally with the country, e.g. 'Nizwa, Oman'. A bare 5-digit ZIP is read as a US ZIP; give any non-US postal code with its country (e.g. '10115, Germany')."
      • addedInput schema / properties / price_band / description
        Added value: +"Supply-network rows only; OpenStreetMap has no prices."
  3. 1 tool update
    • Changedfind_business2 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Alternative to location: a top-level city, normalised into…",
        +  "type": "string"
        +}
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Alternative to location: a top-level state/region, normalised into…",
        +  "type": "string"
        +}
  4. 1 tool update
    • Changedfind_business2 fields changed
      • removedInput schema / properties / city
        Removed value: -{
        -  "description": "Alternative to location: a top-level city, normalised into…",
        -  "type": "string"
        -}
      • removedInput schema / properties / region
        Removed value: -{
        -  "description": "Alternative to location: a top-level state/region, normalised into…",
        -  "type": "string"
        -}
  5. 1 tool update
    • Changedfind_business1 field changed
      • changedInput schema / properties / location / properties / radius_miles / description
        Previous value: -"Accepted but NOT applied. The supply directory holds no coordinates, so no distance filter can be honoured; results are not restricted to this radius. Sending it is recorded and disclosed back as radius_miles_applied: false."New value: +"Accepted but NOT applied - no coordinates exist, so results are not restricted to this radius. Disclosed back as radius_miles_applied: false."
  6. 1 tool update
    • Changedfind_business1 field changed
      • addedInput schema / properties / location / properties / radius_miles / description
        Added value: +"Accepted but NOT applied. The supply directory holds no coordinates, so no distance filter can be honoured; results are not restricted to this radius. Sending it is recorded and disclosed back as radius_miles_applied: false."
  7. 2 tool updates
    • Changedfind_business6 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Alternative to location: a top-level city, normalised into…",
        +  "type": "string"
        +}
      • addedInput schema / properties / location / description
        Added value: +"Where to search. Matched against the business's city, state and ZIP as text -…"
      • removedInput schema / properties / location / properties / radius_miles / default
        Removed value: -10
      • addedInput schema / properties / location / properties / radius_miles / minimum
        Added value: +0
      • addedInput schema / properties / max_results / minimum
        Added value: +1
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Alternative to location: a top-level state/region, normalised into…",
        +  "type": "string"
        +}
    • Changedschedule_appointment2 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "book",
        -  "reschedule",
        -  "cancel",
        -  "check_availability"
        -]New value: +[
        +  "book",
        +  "cancel",
        +  "check_availability"
        +]
      • changedInput schema / properties / existing_appointment_id / description
        Previous value: -"Required for reschedule/cancel"New value: +"Required for cancel"
  8. 3 tool updates
    • Changedfind_business1 field changed
      • removedInput schema / properties / vertical / description
        Removed value: -"Service vertical to search within"
    • Changedimport_booking_url6 fields changed
      • changedInput schema / properties / business_name / description
        Previous value: -"Optional override. If omitted, the business name is auto-extracted from the…"New value: +"If omitted, auto-extracted from the page's <title> or og:title."
      • removedInput schema / properties / contact_email / description
        Removed value: -"Optional."
      • changedInput schema / properties / contact_phone / description
        Previous value: -"Optional. If omitted, the platform integration handles outreach."New value: +"If omitted, the platform integration handles outreach."
      • changedInput schema / properties / country_code / description
        Previous value: -"ISO 3166-1 alpha-2 (e.g. 'US', 'FR'). Used for compliance routing on later…"New value: +"ISO 3166-1 alpha-2 (e.g. 'US', 'FR'); routes compliance on later sends."
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"Optional client-supplied key for safe retries. Replaying the same key within 24h returns the original receipt - the operation is NOT re-executed and NOT re-charged."New value: +"Retry key: a 24h replay returns the original receipt, not re-run or charged."
      • changedInput schema / properties / vertical / description
        Previous value: -"Best-guess vertical. If omitted, inferred from the platform (e.g., Doctolib ->…"New value: +"If omitted, inferred from the booking platform."
    • Changedschedule_appointment1 field changed
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"Optional client-supplied key for safe retries. Replaying the same key within 24h returns the original receipt - the operation is NOT re-executed and NOT re-charged."New value: +"Retry key: a 24h replay returns the original receipt, not re-run or charged."
  9. 3 tool updates
    • Changedcheck_booking_link1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Full http(s) URL to classify, e.g. 'https://cal.com/jane' or 'https://www.opentable.com/r/acme'."New value: +"Full http(s) URL to classify, e.g. 'https://cal.com/jane' or…"
    • Changedfind_business2 fields changed
      • changedInput schema / properties / availability_window / description
        Previous value: -"Accepted but NOT APPLIED - it does not narrow results. We do not hold live calendars for the supply network. The response carries availability_window_applied: false when you send one. To book a specific slot use schedule_appointment with requested_time, which checks real availability."New value: +"Accepted but NOT APPLIED - it does not narrow results. We do not hold live…"
      • changedInput schema / properties / capability / description
        Previous value: -"Specific service capability required, e.g. 'haircut', 'plumbing', 'tax_consultation'"New value: +"Specific service capability required, e.g. 'haircut', 'plumbing',…"
    • Changedimport_booking_url4 fields changed
      • changedInput schema / properties / booking_url / description
        Previous value: -"Full URL the user supplied. Must point at one of the 12 supported booking platforms; auto-detected from the host."New value: +"Full URL the user supplied. Must point at one of the 12 supported booking…"
      • changedInput schema / properties / business_name / description
        Previous value: -"Optional override. If omitted, the business name is auto-extracted from the page's <title> or og:title."New value: +"Optional override. If omitted, the business name is auto-extracted from the…"
      • changedInput schema / properties / country_code / description
        Previous value: -"ISO 3166-1 alpha-2 (e.g. 'US', 'FR'). Used for compliance routing on later send_message calls."New value: +"ISO 3166-1 alpha-2 (e.g. 'US', 'FR'). Used for compliance routing on later…"
      • changedInput schema / properties / vertical / description
        Previous value: -"Best-guess vertical. If omitted, inferred from the platform (e.g., Doctolib -> healthcare, OpenTable -> restaurants)."New value: +"Best-guess vertical. If omitted, inferred from the platform (e.g., Doctolib ->…"
  10. 9 tool updates
    • First observedcheck_booking_link
    • First observedfind_business
    • First observedget_outcome
    • First observedget_status
    • First observedimport_booking_url
    • First observedpreview_cost
    • First observedschedule_appointment
    • First observedself_test
    • First observedverify_business

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to look up businesses, find free appointment slots, book, list and cancel appointments at salons, barbershops, nail and brow studios and clinics. Works read-only without a customer login by returning a pre-filled booking link, and can also run against a built-in demo with sample businesses.
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Book a table, an appointment or a place in a class at a real local business. Live availability, instant confirmation, no account and no API key. Eight tools: search, fetch, get_business, check_availability, create_booking, check_booking, cancel_booking and request_listing. Guest emails in eight languages. Hosted at https://g-guest.app/api/mcp
    8
    12 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Country-agnostic MCP-callable directory for AI agents to find local SMBs — realtors, insurance agents, medical practitioners — by category, location, or natural-language query. Returns business catalog data and UTM-tagged booking URLs (zero PII).
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.