Skip to main content
Glama

SMS and WhatsApp Messaging

Server Details

Send WhatsApp, SMS, email or voice to a business with the compliance gate enforced.

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
Uptime
99.5% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
basilalshukaili/agentbroker
GitHub Stars
0
Server Listing
Agent Broker

TDQS

A3.8/5.0

Scored across 10 tools

Disambiguation3/5

Most tools have distinct purposes, but send_message and send_transactional_confirmation overlap since send_message already covers transactional messages. get_status and get_outcome are separated by lifecycle stage but could still be confused by an agent.

Naming Consistency4/5

Tool names mostly follow a clean snake_case verb_noun pattern: get_*, send_*, check_compliance, verify_business. self_test breaks the pattern slightly as a noun-style health check rather than an imperative verb, but this is a minor deviation.

Tool Count4/5

Ten tools is within the ideal range and covers sending, status, conversation, cost, compliance, health, and business lookup. The count is slightly broadened by self_test and the directory tools, which are tangential to messaging, but each still earns some place.

Completeness3/5

Core send/status/conversation/cost/compliance workflows are represented, including async result retrieval. Notable gaps remain: no consent-record management even though the compliance gate depends on it, no conversation listing, and no channel or template configuration.

Available Tools

10 tools
check_complianceA
Read-onlyIdempotent
Inspect

Free, instant pre-flight for the compliance gate. Runs the SAME TCPA / GDPR / CASL / CAN-SPAM / 10DLC gate that send_message and call_business run — but in preview mode, so NO message is sent and NO state changes. Tells you whether a (recipient, channel, message_type, content) send would be permitted BEFORE you pay for it, and if not, names the exact rule and how to remediate. Use it to de-risk a paid send the same way check_booking_link… [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoDelivery channel. Omit to auto-infer sms/email from recipient_id; set 'voice'…
contentYesThe actual message body you intend to send. The gate classifies the real text,…
state_codeNoUS state code (e.g. 'CA') for state-specific rules.
country_codeNoISO 3166-1 alpha-2 (e.g. 'US', 'DE', 'CA'). Auto-inferred from phone if…
message_typeNoIntent tag: transactional, marketing, reminder, follow_up, notification.…transactional
recipient_idYesPhone in E.164 (e.g. '+14045550100') or email address the message would go to.

TDQS

A4/5.0
Behavior4/5

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

Annotations already carry readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is pre-declared. The description adds beyond that: preview mode, zero message delivery, no state changes, and informative output ('names the exact rule and how to remediate'). This aligns with the annotations and adds cost/de-risking context. No contradiction.

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

Conciseness3/5

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

The key facts are front-loaded (free, instant, pre-flight, same gate, no side effects), but the description carries rhetorical filler like 'de-risk' and the 'SAME... gate' emphasis, and it trails off awkwardly ('...the same way check_booking_link… [free, no key]'), which reads as a truncated thought. It earns a middle score: dense but not clean.

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 6-parameter tool with no output schema, the description covers the essentials: what it evaluates, in what mode, the safety profile, when to invoke it, and what the answer tells you (permitted, or exact rule + remediation). A fully explicit return structure or error-case discussion is absent, but the schema and annotations already carry the parameter and safety burden, so nothing critical 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?

Schema description coverage is 100%, so the schema already documents all six parameters in detail, meriting the baseline 3. The description adds only marginal framing by grouping the parameters into the send tuple '(recipient, channel, message_type, content)', which reinforces but does not materially extend the schema's per-parameter explanations.

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 function ('pre-flight for the compliance gate') and a specific resource: the TCPA/GDPR/CASL/CAN-SPAM/10DLC gate also used by send_message and call_business. It explicitly contrasts preview mode with real sends ('NO message is sent'), and tells an agent exactly what question it answers ('whether a (recipient, channel, message_type, content) send would be permitted'). This distinguishes it clearly from siblings.

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 when-to-use context: 'de-risk a paid send' and 'BEFORE you pay for it', plus the free/no-key appeal. It contrasts with the actual-send tools (send_message, call_business) and alludes to a same-pattern sibling (check_booking_link), though that reference is truncated mid-sentence. It does not enumerate exclusions versus the sanction/restriction siblings, but the preview-vs-execute distinction is the load-bearing guidance.

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

find_businessA
Read-onlyIdempotent
Inspect

Given criteria (vertical, location, capability, price band, availability window), return ranked candidate businesses from our supply network. THE NETWORK IS SMALL AND STILL MOSTLY SAMPLE DATA: entries that are not real are named [DEMO] and flagged is_demo - check that field before acting on a result. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes
verticalYes
capabilityNoSpecific service capability required, e.g. 'haircut', 'plumbing',…
price_bandNo
max_resultsNo
availability_windowNoAccepted but NOT APPLIED - it does not narrow results. We do not hold live…

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive. The description adds a genuinely useful caution that the network is small and mostly sample data, that non-real entries are named [DEMO] and flagged is_demo, and that the agent must check that field before acting. No contradiction with annotations exists.

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, front-loaded with the core purpose, and every sentence earns its place—especially the demo-data warning and the free/no-key note. There is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with six parameters, nested objects, and no output schema, the description is only partially complete. The demo-data warning and schema hints help, but the return shape, ranking semantics, and handling of availability_window are not explained in the description itself.

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 description coverage is only 33%, so the description should compensate, but it merely lists high-level criteria names already visible as property names. It adds no guidance on nested location/price_band structures, allowed verticals, max_results cap, or date formats.

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 a specific action: given criteria, return ranked candidate businesses from the supply network. This distinguishes it from booking/verification siblings by its search-and-ranking role, though it does not explicitly name alternatives.

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?

The phrase 'Given criteria...' implies when to use the tool: you have vertical/location/capability requirements and need candidate businesses. However, it gives no explicit guidance about when not to use it or when a sibling like verify_business or schedule_appointment would be more appropriate.

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

get_conversationA
Read-only
Inspect

Read a two-way conversation thread you started: its state, every message exchanged, and how many replies the business has sent. [free, no key]

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceNoThe 4-digit request reference, e.g. '4821'. Requires business_number.
business_numberNoScopes a `reference` to one business (references are reused across businesses).
conversation_idNoFrom the send_message receipt (preferred).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotations: it clarifies the tool only reads conversations the user started, and it discloses the '[free, no key]' property, which is useful operational context not present in the schema or annotations. It does not describe pagination or error behavior, but for a read-only conversation fetch, the added context is solid.

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 a single, front-loaded sentence that states the action, the resource, and the return contents, followed by a short parenthetical about cost/auth. Every word earns its place; there is no fluff or repetition of schema details.

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 tool with 100% schema coverage and no output schema, the description is nearly complete. It tells the agent what it will get (state, messages, reply count) and the access requirement (free, no key). It does not explain the relationship between the three parameters (e.g., which to prefer), but the schema already documents that, so the description does not need to repeat it. A small gap is the lack of any note about what happens if the conversation is not found, but that is minor.

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 100%, so the schema already documents all three parameters. The description adds the 'two-way conversation thread you started' context and the '[free, no key]' note, but it does not add meaning about how the parameters relate (e.g., reference requires business_number, conversation_id is preferred). The schema already covers those details, so the baseline 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 states a specific verb ('Read'), a specific resource ('a two-way conversation thread you started'), and enumerates exactly what is returned: state, every message exchanged, and reply count. It also distinguishes itself from siblings by scoping to conversations the user started, which is not evident from the tool name alone.

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 for when to use the tool: to read a two-way conversation thread you started. It does not explicitly name alternatives or exclusions, but the sibling list includes get_status, get_outcome, and check_compliance, and the description's focus on 'conversation thread' and 'messages' makes the usage context clear enough. It lacks an explicit 'use X instead when...' statement, so it falls short of a 5.

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.

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.

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.

send_messageA
Destructive
Inspect

Send a message on behalf of an agent's user or an SMB across WhatsApp (free during launch), SMS, email, or voice. Sends immediately; no scheduling. Five message types: transactional, reminder, follow_up, notification, marketing. Every send routes through a non-bypassable compliance gate (TCPA, GDPR, CASL, PDPL across 26 jurisdictions) that enforces opt-in consent for marketing/promotional content — marketing without recorded consent is rejected… [from $0.02/call, variable] [async→get_outcome]

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
recipientYes
business_idNoStable id for the recipient business; used for global demand shaping.
message_typeYesIntent tag for the message. Five permitted types. 'marketing' is allowed only…
on_behalf_ofNoWho this message is FOR (your end-user's name/label). On WhatsApp this opens a…
idempotency_keyNoRetry key: a 24h replay returns the original receipt, not re-run or charged.
preferred_channelNoauto

TDQS

A3.9/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the annotations: immediate send, no scheduling, non-bypassable compliance gate with consent enforcement, rejection of marketing without consent, async flow via get_outcome, and variable pricing. These are all beyond the readOnlyHint/destructiveHint flags and are crucial for correct usage.

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 moderately long but each sentence contributes value: channels, immediate send, message types, compliance, pricing, and async handling. It is front-loaded with the core action, though the trailing brackets with pricing and async hint could be integrated more cleanly. Overall, it is efficient for the information conveyed.

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 complexity (7 params, nested objects, async behavior, no output schema), the description covers essential operational details: channels, message types, compliance, async outcome, and pricing. It does not describe the return value, but the reference to get_outcome provides a path. The description is sufficiently complete for an agent to understand the tool's purpose and constraints.

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 57%, which is moderate. The description mentions channels and message types that map to the preferred_channel and message_type enums, but does not add detailed meaning for recipient, content, business_id, or idempotency_key. The description adds some context (e.g., on behalf of user) but not enough to compensate for the missing 43% of parameter descriptions.

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 tool's function: sending messages on behalf of an agent's user or SMB across multiple channels (WhatsApp, SMS, email, voice). It also lists the five message types, making the purpose specific and actionable. It does not explicitly differentiate from the sibling 'send_transactional_confirmation', but the general scope is clear.

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?

The description mentions 'Sends immediately; no scheduling', which implies a constraint but does not explicitly state when to use this tool versus alternatives. There is no mention of when to prefer send_transactional_confirmation or check_compliance, leaving the decision to the agent. The compliance gate is noted, but not framed as a selection criterion.

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

send_transactional_confirmationA
Destructive
Inspect

Idempotent transactional messages: OTPs, booking confirmations, payment receipts, cancellation notices. Falls back across configured channels; an unconfigured channel fails honestly rather than reporting a delivery that did not happen. [$0.02/per_call] [async→get_outcome]

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesType-specific payload; e.g., {otp_code} for otp, {appointment_time, smb_name}…
recipientYes
idempotency_keyNoRetry key: a 24h replay returns the original receipt, not re-run or charged.
confirmation_typeYes
preferred_channelNosms

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so mutation is known. The description adds value by explaining idempotency (replay returns original receipt, no re-charge) and honest failure on unconfigured channels, which are important behavioral traits beyond the annotations. However, it does not mention cost implications beyond the $0.02/per_call tag, which is minimal. 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 a compact three-sentence block that front-loads the core purpose and then adds crucial behavioral details. Every sentence carries weight: purpose, fallback/honest failure, idempotency and pricing/asynchronous pattern. No fluff or 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?

Given the tool's moderate complexity (5 params, nested objects, enums) and lack of output schema, the description is nearly complete. It explains idempotency, cost, async pattern, and type-specific data. Minor gaps: exact response format is not specified (no output schema), and the 'reminder' type is not described, but the description covers enough for a competent agent to invoke correctly.

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

Parameters4/5

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

Schema coverage is only 40%, so the description must compensate. It directly explains 'data' is type-specific (e.g., otp_code, appointment_time) and clarifies 'idempotency_key' semantics (24h replay returns original receipt). This adds meaning beyond the schema. However, it doesn't detail 'recipient' or 'preferred_channel' beyond the schema, but those are self-evident. Overall, it compensates well for the gap.

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 explicitly names the tool as 'Idempotent transactional messages' and enumerates concrete use cases (OTPs, booking confirmations, payment receipts, cancellation notices), clearly distinguishing it from the sibling 'send_message' which likely handles general messaging. The specific verb 'send' and clear resource scope make the purpose unmistakable.

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 implies usage for transactional messages and briefly mentions channel fallback behavior, but it does not explicitly state when NOT to use this tool or name alternatives like 'send_message' for non-transactional messages. The context is clear from the examples, but lacks explicit exclusions.

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: its contact channels, capabilities, and when the record was last verified. This is a DIRECTORY LOOKUP - it does not contact the business. [free, no key]

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 communicate read-only and idempotent behavior. The description adds value by clarifying this never contacts the business and that the data reflects a stored record ("when the record was last verified"). This is useful 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 two concise sentences, front-loaded with the core action and output, followed by a clarifying behavioral note. No filler or redundant detail.

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 names the returned data categories (contact channels, capabilities, last verified timestamp). It sufficiently sets expectations for a simple lookup tool, though it could clarify the optional capability parameter's role.

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 description coverage is 0%, so the description carries the full burden for parameterscy. It mentions 'a business' and 'capabilities' but does not explicitly explain what `smb_id` should contain or how `capability_to_verify` affects the lookup. The optional parameter's meaning remains ambiguous.

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 is for looking up known business information in the supply network, with specific outputs named (contact channels, capabilities, last verified record). The explicit 'DIRECTORY LOOKUP - it does not contact the business' removes ambiguity about whether this is a live verification or a passive query.

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 usage context: it is a read-only directory lookup, and explicitly says it does not contact the business. It does not name alternative sibling tools for comparison, but the exclusion is enough to prevent obvious misuse.

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. 3 tool updates
    • Changedfind_business1 field changed
      • removedInput schema / properties / vertical / description
        Removed value: -"Service vertical to search within"
    • Changedsend_message3 fields changed
      • changedInput schema / properties / business_id / description
        Previous value: -"Optional stable id for the recipient business. Enables global demand shaping…"New value: +"Stable id for the recipient business; used for global demand shaping."
      • 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."
      • removedInput schema / properties / send_at_iso
        Removed value: -{
        -  "description": "NOT SUPPORTED YET. We do not schedule messages. Supplying a time more than 2…",
        -  "format": "date-time",
        -  "type": "string"
        -}
    • Changedsend_transactional_confirmation1 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."
  2. 4 tool updates
    • Changedcheck_compliance4 fields changed
      • changedInput schema / properties / channel / description
        Previous value: -"Delivery channel. Omit to auto-infer sms/email from recipient_id; set 'voice' explicitly."New value: +"Delivery channel. Omit to auto-infer sms/email from recipient_id; set 'voice'…"
      • changedInput schema / properties / content / description
        Previous value: -"The actual message body you intend to send. The gate classifies the real text, so a meaningful preview needs the real content."New value: +"The actual message body you intend to send. The gate classifies the real text,…"
      • changedInput schema / properties / country_code / description
        Previous value: -"ISO 3166-1 alpha-2 (e.g. 'US', 'DE', 'CA'). Auto-inferred from phone if omitted; drives which jurisdiction rules apply."New value: +"ISO 3166-1 alpha-2 (e.g. 'US', 'DE', 'CA'). Auto-inferred from phone if…"
      • changedInput schema / properties / message_type / description
        Previous value: -"Intent tag: transactional, marketing, reminder, follow_up, notification. 'marketing' triggers the consent checks. Defaults to transactional."New value: +"Intent tag: transactional, marketing, reminder, follow_up, notification.…"
    • 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',…"
    • Changedsend_message4 fields changed
      • changedInput schema / properties / business_id / description
        Previous value: -"Optional stable id for the recipient business. Enables global demand shaping (we rate-limit total inbound across ALL agents so businesses stay responsive instead of blocking us)."New value: +"Optional stable id for the recipient business. Enables global demand shaping…"
      • changedInput schema / properties / message_type / description
        Previous value: -"Intent tag for the message. Five permitted types. 'marketing' is allowed only when paired with a valid consent_record_id; the compliance gate verifies the consent at send time and rejects (compliance_violation receipt) if it's missing, expired, or revoked."New value: +"Intent tag for the message. Five permitted types. 'marketing' is allowed only…"
      • changedInput schema / properties / on_behalf_of / description
        Previous value: -"Who this message is FOR (your end-user's name/label). On WhatsApp this opens a tracked conversation and travels in-message as '#4821 for Sara (via HatchLoop)', so the business knows who it is talking to and their reply is matched back to this exact request instead of guessed. Strongly recommended for two-way channels."New value: +"Who this message is FOR (your end-user's name/label). On WhatsApp this opens a…"
      • changedInput schema / properties / send_at_iso / description
        Previous value: -"NOT SUPPORTED YET. We do not schedule messages. Supplying a time more than 2 minutes in the future is REFUSED (reason_code scheduling_not_supported) rather than sent immediately, which is what used to happen. Call send_message at the moment you want delivery, or omit this field."New value: +"NOT SUPPORTED YET. We do not schedule messages. Supplying a time more than 2…"
    • Changedsend_transactional_confirmation1 field changed
      • changedInput schema / properties / data / description
        Previous value: -"Type-specific payload; e.g., {otp_code} for otp, {appointment_time, smb_name} for booking_confirmation"New value: +"Type-specific payload; e.g., {otp_code} for otp, {appointment_time, smb_name}…"
  3. 10 tool updates
    • First observedcheck_compliance
    • First observedfind_business
    • First observedget_conversation
    • First observedget_outcome
    • First observedget_status
    • First observedpreview_cost
    • First observedself_test
    • First observedsend_message
    • First observedsend_transactional_confirmation
    • First observedverify_business

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.