Agent Broker
Server Details
AI agents find, message & book SMBs; pay per call in USDC on Base via x402. 14 tools, compliant.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- basilalshukaili/agentbroker
- GitHub Stars
- 0
- Server Listing
- Agent Broker
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 14 of 14 tools scored. Lowest: 3.2/5.
Every tool targets a distinct resource and action: call_business for voice calls to businesses, schedule_appointment for booking, send_message vs send_transactional_confirmation for general vs critical messaging, find_business vs verify_business vs import_booking_url for different SMB identification paths. Detailed WHEN TO USE / WHEN NOT TO USE guidance removes boundary ambiguity.
All 14 tool names follow a consistent verb_noun snake_case pattern (call_business, find_business, get_status, send_message, etc.). Related operations share consistent prefixes (send_, get_, business), making the set predictable and easy to navigate.
14 tools is well within the ideal 3-15 range for a domain of this complexity. Each tool addresses a distinct need (discovery, verification, booking, messaging, inbound handling, escalation, monitoring, cost estimation, health check) with no redundant or excess entries.
The tool surface covers the full lifecycle: find/verify/import businesses, schedule/cancel/reschedule appointments, send messages and transactional confirmations, handle inbound, capture leads, escalate to humans, and monitor async operations. No critical dead ends or missing operations for the stated SMB-agent broker domain.
Available Tools
14 toolscall_businessADestructiveInspect
Place a conversational voice-AI phone call to a business on a consumer's behalf and return a structured answer. THE differentiated capability: reach the ~60M long-tail SMBs that have NO API and NO booking page — only a phone number. An AI agent cannot pick up a phone and hold a conversation; this tool does. Give a plain-language objective; the voice AI navigates the call and extracts the answer. Business-directed (B2B), far less restricted than calling consumers — but the compliance gate still enforces recording consent per jurisdiction. Async: returns a call handle; poll get_outcome for the transcript + extracted fields.
WHEN TO USE: Use when the target business has NO booking URL and NO API — only a phone number — and the consumer asked the agent to reach them (e.g. 'call this plumber and ask if they can come Tuesday', 'ask the salon if they take walk-ins this afternoon'). Also use to confirm details a booking page doesn't expose (real-time availability, custom quotes). WHEN NOT TO USE: Do NOT use when the business has a booking URL — use import_booking_url + schedule_appointment (cheaper, faster, deterministic). Do NOT use for calls to consumers/individuals (this tool is for reaching businesses). Do NOT use for marketing or telemarketing — the compliance gate and the B2B-only framing reject that. COST: $0.5 per_call LATENCY: ~45000ms EXECUTION: async_by_default (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| smb_id | No | Known SMB identifier with a phone on record. Provide this OR business_phone. | |
| objective | Yes | What the call should accomplish, in plain language. | |
| country_code | No | ISO 3166-1 alpha-2 for compliance + recording-consent routing. | |
| on_behalf_of | No | Name of the consumer the call is placed for. | |
| business_phone | No | Business phone in E.164 (e.g. +14045550123). Provide this OR smb_id. | |
| extract_fields | No | Structured fields to pull from the answer, e.g. ['available_tomorrow','price_quote','earliest_slot']. | |
| max_duration_seconds | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: async execution with a call handle, polling via get_outcome, cost ($0.5 per call), latency (~45s), and compliance gate for recording consent. However, it does not elaborate on the destructiveHint=true annotation—what specifically is destroyed or irreversible—so it falls short of fully transparent on that dimension.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear headers (WHEN TO USE, WHEN NOT TO USE, COST, LATENCY, EXECUTION) and front-loaded with the core purpose. However, phrases like 'THE differentiated capability' are slightly promotional and the length could be trimmed to only essential facts, though no section is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (aspects: real-world phone call, async, compliance, B2B-only), the description covers usage guidance, cost, latency, execution model, and retrieval of results. It lacks explicit failure-mode handling (e.g., what happens if the call fails) but is otherwise reasonably complete for an async tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (86%) and the schema already documents each parameter (e.g., smb_id vs business_phone, extract_fields, max_duration_seconds). The description adds only high-level guidance ('Give a plain-language objective') and does not provide deeper parameter-specific semantics beyond what the schema already contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Place a conversational voice-AI phone call to a business on a consumer's behalf and return a structured answer.' It also explicitly differentiates from siblings by targeting long-tail SMBs with no API/booking page, making it distinct from import_booking_url and schedule_appointment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections. It names concrete alternatives (import_booking_url, schedule_appointment) for businesses with booking URLs, and excludes consumer calls and marketing. This goes beyond implied usage to give clear decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_leadAInspect
Structured intake of a prospect into an SMB's funnel with validation, enrichment hooks, and deduplication. Inserts into the SMB's CRM or direct-booking pipeline if available.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Tell smb_xyz I'm interested and want a callback" -> call capture_lead({"smb_id": "smb_xyz", "prospect": {"name": "Jane", "phone": "+15551234567", "email": "jane@example.com"}, "source": "agent"})
WHEN TO USE: Use when a potential customer has expressed interest in an SMB's service and you want to ensure they are registered in the SMB's pipeline for follow-up. WHEN NOT TO USE: Do not use for confirmed bookings — use schedule_appointment. Do not use for bulk list imports. COST: $0.05 per_lead LATENCY: ~600ms EXECUTION: sync_fast (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| smb_id | Yes | ||
| source | No | Where the consumer-initiated request originated (e.g., 'consumer_request', 'inbound_quote_form', 'agent_referral_from_find_business'). | |
| prospect | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all false booleans), the description discloses validation, enrichment hooks, deduplication, insertion into CRM/booking pipeline, cost, latency, and the execution mode (sync_fast with result retrieval via get_outcome). This provides substantial behavioral context not available in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, example, when to use/not use, cost, latency, execution). It is informative without being redundant, and every section serves a purpose for correct agent usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and low parameter descriptions, the description covers purpose, usage, cost, latency, execution, and provides an example. It also directs the agent to get_outcome for results, making it operationally complete for a lead capture tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 33%, the description compensates by providing a concrete example call showing how to populate smb_id, prospect (name, phone, email), and source. It also implicitly indicates that the tool handles a single prospect, not bulk. However, it does not elaborate on fields like consent_record_id beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: structured intake of a prospect into an SMB's funnel with validation, enrichment, and deduplication, inserting into CRM or booking pipeline. It explicitly distinguishes from schedule_appointment for confirmed bookings, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit WHEN TO USE and WHEN NOT TO USE sections, naming schedule_appointment as an alternative for confirmed bookings and excluding bulk list imports. This gives the agent clear direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
escalate_to_humanADestructiveInspect
Hand off an in-flight task to a human operator with a full context bundle: transcript, prior actions, identifiers, and a recommended next step.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "I'm stuck — get a human at smb_xyz to call me back" -> call escalate_to_human({"smb_id": "smb_xyz", "reason": "agent_blocked", "summary": "Cannot resolve via automated channels"})
WHEN TO USE: Use when automated resolution has failed after channel-fallback exhaustion, when the task requires human judgment, or when the customer has explicitly requested human contact. WHEN NOT TO USE: Do not use as a first resort. Escalate only after automated resolution attempts. COST: $0.2 per_escalation LATENCY: ~2000ms EXECUTION: async_by_default (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| smb_id | Yes | ||
| context | Yes | ||
| priority | No | normal |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it discloses cost ($0.2), latency (~2000ms), default async execution, and directs users to get_outcome for results. This complements the destructiveHint annotation without contradicting it. It doesn't detail side effects like ticket creation or permission requirements, but it provides meaningful extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a purpose statement, example, WHEN sections, and cost/latency/execution bullets, making it scannable. It is somewhat long but each section adds value. The example query, however, contains an error and could be simplified, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key aspects: purpose, usage constraints, cost, latency, and async behavior. Yet it does not explain the return value or success criteria (beyond referencing get_outcome), nor does it clarify the priority parameter. Given the schema's complexity (nested objects and enums) and no output schema, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description partially explains parameters by describing the context bundle (transcript, prior actions, identifiers, recommended next step), which maps to the context object. However, schema coverage is 0%, and the description omits smb_id and priority semantics. More critically, the example is inconsistent with the schema: it uses 'agent_blocked' (not in the reason enum) and 'summary' instead of the required 'context' field, which can mislead the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Hand off an in-flight task to a human operator with a full context bundle.' It is specific about the action (handoff) and resource (in-flight task), and the included example queries further clarify the intended use. It is easily distinguished from sibling tools like send_message or get_outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit WHEN TO USE and WHEN NOT TO USE sections, stating to escalate only after automated resolution attempts and listing valid conditions such as customer-requested or human judgment. However, it does not name a specific alternative tool for automated resolution, so it falls slightly short of fully explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_businessARead-onlyIdempotentInspect
Given criteria (vertical, location, capability, price band, availability window), return ranked candidate SMBs from the verified supply network. Returns only curated, verified, transactable businesses — not raw directory results.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Find me a salon in Tokyo that does color" -> call find_business({"vertical": "personal_services", "location": {"zip_or_city": "Tokyo"}, "capability": "color"}) user: "I need a plumber near 30309" -> call find_business({"vertical": "home_services", "location": {"zip_or_city": "30309"}, "capability": "plumbing"}) user: "Show me dentists in London" -> call find_business({"vertical": "professional_services", "location": {"zip_or_city": "London"}, "capability": "dentist"})
WHEN TO USE: Use when an agent needs to identify which SMBs can fulfill a business task (booking, service, consultation) in a given location and vertical. Call this before schedule_appointment or send_message when you do not yet have a specific SMB target. WHEN NOT TO USE: Do not use as a general directory or browsing surface. Do not use when you already have a specific verified SMB identifier. Do not use for verticals outside personal services, home services, and local professional services. COST: from $0.01 per_call (see preview_cost for exact) LATENCY: ~200ms
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | ||
| vertical | Yes | Service vertical to search within | |
| capability | No | Specific service capability required, e.g. 'haircut', 'plumbing', 'tax_consultation' | |
| price_band | No | ||
| max_results | No | ||
| availability_window | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnly, idempotent, and non-destructive behavior, the description adds extra context: it returns only curated, verified, transactable businesses, not raw results, and includes cost and latency details. This exceeds the bare annotation hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose sentence, examples, when-to-use/not-use, and cost/latency. Every section adds value and is front-loaded with the core behavior. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain the return shape, but it only says "ranked candidate SMBs" without detailing fields or pagination. For a moderately complex tool with nested parameters, the description covers usage well but leaves the output representation under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate. It names the criteria (vertical, location, capability, price band, availability window) and provides examples for vertical, location, and capability, but does not explain the semantics of price_band, availability_window, max_results, or radius_miles beyond their names. This is partial but not complete compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-resource relationship: "return ranked candidate SMBs from the verified supply network." It explicitly differentiates itself from a raw directory and mentions it should be called before schedule_appointment or send_message, distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit WHEN TO USE and WHEN NOT TO USE sections, including concrete examples and exclusions like "Do not use when you already have a specific verified SMB identifier." It also gives three user query examples with mappings to parameters, offering clear guidance on invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outcomeARead-onlyIdempotentInspect
Retrieve the final OutcomeReceipt for a completed operation.
WHEN TO USE: Use after get_status returns success/failure/partial to retrieve the full result with cost and reason codes. WHEN NOT TO USE: Do not use for operations still in pending/executing state — use get_status first. COST: $0.001 per_call LATENCY: ~50ms
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds timing constraints (only after completion), result contents (cost and reason codes), and cost/latency metrics, which go 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the purpose upfront and clear labels for usage and cost. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description covers when to use, what to expect, and cost/latency. It could mention the origin of operation_id, but overall it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has zero description coverage for operation_id, and the description does not explicitly define the parameter. The context implies it identifies the operation, but the description should explicitly state this to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the final OutcomeReceipt for a completed operation, with a specific verb and resource. It distinguishes from siblings by specifying 'after completion' and mentioning cost and reason codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit WHEN TO USE and WHEN NOT TO USE sections, naming get_status as the prerequisite and alternative. This is exemplary guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusARead-onlyIdempotentInspect
Query the current state of any in-flight async operation by operation_id.
WHEN TO USE: Use to poll the state of a pending_async operation when no webhook callback has arrived or to check progress. WHEN NOT TO USE: Do not poll more frequently than once per 10 seconds — use webhook delivery for real-time updates instead. COST: $0.001 per_call LATENCY: ~50ms
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds valuable context on cost, latency, and polling frequency, which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into clear sections (purpose, when to use, when not to use, cost, latency) and is front-loaded with the main purpose. Every sentence provides distinct value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with strong annotations, the description covers usage, cost, latency, and rate limiting. However, it does not describe the response format or possible statuses, which would be useful since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'operation_id' without explaining its format, origin, or how it relates to async operations. The parameter name is self-explanatory, but the description adds little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Query the current state of any in-flight async operation by operation_id' with a specific verb and resource. It distinguishes itself from sibling tools like get_outcome by focusing on polling in-flight operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit WHEN TO USE and WHEN NOT TO USE sections provide clear context, including polling scenarios, rate limiting, and a webhook alternative. This fully meets the guideline criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handle_inboundAInspect
Receive, classify, and route inbound messages on behalf of an SMB. Classifies intent (booking request, cancellation, inquiry, complaint), enriches with context, and routes to the appropriate handler or escalation path.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Process this customer reply for me: 'Yes I want to book Tuesday'" -> call handle_inbound({"raw_message": "Yes I want to book Tuesday", "channel": "sms"})
WHEN TO USE: Use when an SMB needs inbound message triage — classifying incoming contact-form submissions, SMS replies, voicemails, or email inquiries. WHEN NOT TO USE: Do not use for outbound communications. Do not use for compliance-flagged recipient lists without verified opt-in records. COST: $0.03 per_inbound LATENCY: ~3000ms EXECUTION: async_by_default (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| sender | No | ||
| smb_id | Yes | ||
| raw_message | Yes | ||
| routing_rules | No | Optional override routing policy for this SMB | |
| inbound_channel | Yes | ||
| received_at_iso | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses async-by-default execution, cost ($0.03 per inbound), latency (~3000ms), and that result retrieval requires get_outcome. These go beyond the annotations (which only give hints like readOnlyHint=false) and provide actionable behavioral context. No contradiction exists with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (example, WHEN TO USE, WHEN NOT TO USE, cost, latency, execution). Each section conveys valuable information. The example, however, is a structural flaw because it contains an incorrect parameter name, reducing the overall quality from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, a nested sender object, and no output schema, the description is incomplete. It does not explain common parameters like smb_id, raw_message, or inbound_channel, nor the structure of the outcome. While async behavior is mentioned, the lack of return value guidance and poor param coverage leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is only 17% (just routing_rules), leaving most parameters undocumented. The description compensates with a concrete example, but that example is actively misleading: it uses 'channel' instead of the schema's 'inbound_channel' and omits the required 'smb_id'. This misdirects the agent and could cause invocation errors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Receive, classify, and route inbound messages on behalf of an SMB.' It specifies intent classification (booking request, cancellation, inquiry, complaint) and routing to handlers or escalation paths, making it distinct from outbound or lead-capture siblings. The WHEN NOT TO USE clause explicitly excludes outbound communications, reinforcing its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit WHEN TO USE and WHEN NOT TO USE sections, giving clear context for inbound triage across channels like SMS, email, voicemail, and web forms. It also names an alternative step: 'use get_outcome to retrieve result' for async execution, which guides the agent on follow-up.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_booking_urlAIdempotentInspect
Turn ANY public booking URL (Cal.com, Calendly, Doctolib, Booksy, Fresha, OpenTable, Setmore, Square, Acuity, Schedulista, Squarespace, BookMyCity) into a callable smb_id you can immediately use with schedule_appointment, send_message, or capture_lead. Idempotent — calling twice returns the same smb_id.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Book me a haircut at https://cal.com/jane-salon" -> call import_booking_url({"booking_url": "https://cal.com/jane-salon", "vertical": "personal_services"}) -> then schedule_appointment({"smb_id": "", "action": "book"}) user: "Schedule with this dentist: https://www.doctolib.fr/dentiste/paris/jean-dupont" -> call import_booking_url({"booking_url": "https://www.doctolib.fr/dentiste/paris/jean-dupont"}) user: "Reserve a table at https://www.opentable.com/r/acme-bistro" -> call import_booking_url({"booking_url": "https://www.opentable.com/r/acme-bistro", "vertical": "restaurants"})
WHEN TO USE: Call this FIRST whenever the user provides a specific booking URL (cal.com/handle, calendly.com/handle/event, doctolib.fr/..., booksy.com/..., opentable.com/r/..., etc.). User patterns that match: 'book me at https://cal.com/...', 'schedule with calendly.com/jane/intro', 'reserve a table at opentable.com/r/...', 'I want to book this dentist: https://www.doctolib.fr/...'. After importing, the returned smb_id can be passed straight to schedule_appointment. WHEN NOT TO USE: Do not use if the user only describes a business by name without a URL — call find_business instead. Do not use for arbitrary websites that are not on the supported booking-platform list (use /supply/platforms to see all 12). COST: $0.005 per_call LATENCY: ~600ms
| Name | Required | Description | Default |
|---|---|---|---|
| vertical | No | Best-guess vertical. If omitted, inferred from the platform (e.g., Doctolib -> healthcare, OpenTable -> restaurants). | |
| booking_url | Yes | Full URL the user supplied. Must point at one of the 12 supported booking platforms; auto-detected from the host. | |
| capabilities | No | Free-form capability tags (e.g., ['haircut','color','blowdry']). | |
| country_code | No | ISO 3166-1 alpha-2 (e.g. 'US', 'FR'). Used for compliance routing on later send_message calls. | |
| business_name | No | Optional override. If omitted, the business name is auto-extracted from the page's <title> or og:title. | |
| contact_email | No | Optional. | |
| contact_phone | No | Optional. If omitted, the platform integration handles outreach. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description adds concrete operating details: idempotent behavior ('calling twice returns the same smb_id'), cost ($0.005 per_call), latency (~600ms), and how the smb_id is used downstream. This exceeds annotation coverage without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, example queries, and distinct WHEN TO USE / WHEN NOT TO USE / COST / LATENCY sections. Every sentence serves a purpose, and the header-based layout makes it easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema, the description covers the tool's purpose, usage patterns, exclusions, supported platforms, cost, latency, and the nature of the returned smb_id. It provides sufficient operational context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds practical value with example parameter mappings (e.g., booking_url + vertical) and clarifies inference behavior for vertical and business_name auto-extraction. This pushes it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Turn ANY public booking URL ... into a callable smb_id you can immediately use'. It names the supported platforms and explicitly distinguishes the tool's import function from downstream tools like schedule_appointment, send_message, and capture_lead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections, including example user queries and the alternative tool (find_business) for non-URL cases. This clearly guides the agent on when to choose import_booking_url.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_costARead-onlyIdempotentInspect
Return an expected cost estimate, latency estimate, and success-probability estimate for a proposed call before execution. Accuracy SLO: actual cost within ±5% of preview.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "How much will this SMS cost me?" -> call preview_cost({"operation": "send_message", "params": {"channel_preference": "sms"}}) user: "Estimate the cost of booking via voice fallback" -> call preview_cost({"operation": "schedule_appointment"})
WHEN TO USE: Use before any operation when the agent is operating under a budget constraint and needs to decide whether to proceed. WHEN NOT TO USE: Do not use in a hot loop — cache the result for at least 60 seconds if repeating the same preview. COST: $0.001 per_call LATENCY: ~100ms
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | The same request body you would pass to the operation | |
| operation | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description adds no contradiction. It further discloses the accuracy SLO (±5%), per-call cost ($0.001), expected latency (~100ms), and caching advice, enriching behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, accuracy SLO, example queries, usage guidelines, cost, and latency. Every section provides useful information, is front-loaded with the core purpose, and contains no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains the return values (cost, latency, success-probability) and provides accuracy, cost, and latency details. It also covers when to use and when not to use, making the description self-sufficient for agent invocation without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes 'params' as the request body to pass, and the description supports this with concrete examples for send_message and schedule_appointment. The 'operation' parameter lacks an explicit description, but examples imply it corresponds to sibling operation names, partially compensating for the 50% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns cost, latency, and success-probability estimates for a proposed call before execution. It distinguishes itself from sibling execution tools by positioning it as a pre-flight preview, reinforced with concrete example queries mapping user intents to specific operation calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit WHEN TO USE and WHEN NOT TO USE sections, specifying it is for budget-constrained decisions and advising against hot looping with a 60-second cache recommendation. This provides clear, actionable guidance beyond simply invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_appointmentADestructiveInspect
Availability lookup, hold, confirm, reschedule, or cancel appointments with an SMB. Routes through the SMB's native booking system if available, falls back to voice AI or web form.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Book the haircut for next Tuesday at 3pm" -> call schedule_appointment({"smb_id": "smb_imp_abc", "action": "book", "service": "haircut"}) user: "Cancel my Friday appointment at smb_xyz" -> call schedule_appointment({"smb_id": "smb_xyz", "action": "cancel"}) user: "Reschedule my dental cleaning to next week" -> call schedule_appointment({"smb_id": "smb_imp_xyz", "action": "reschedule"})
WHEN TO USE: Use when an agent needs to book, reschedule, or cancel a specific appointment with a specific SMB. Requires a verified smb_id. WHEN NOT TO USE: Do not use for bulk scheduling. Do not use without a verified SMB — call find_business and verify_business first if needed. COST: from $0.15 per_booking_attempt (see preview_cost for exact) LATENCY: ~5000ms EXECUTION: async_by_default (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| action | Yes | ||
| smb_id | Yes | ||
| service | No | ||
| customer | No | ||
| requested_time | No | ||
| existing_appointment_id | No | Required for reschedule/cancel |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-read-only behavior, and the description adds valuable context: it routes through the SMB's native booking system with fallback to voice AI or web form, provides cost and latency estimates, and explains async execution with get_outcome for results. This goes well 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, examples, when-to-use/not, and cost/latency/execution sections. Every sentence adds value, and the front-loaded summary gives immediate purpose. The organization enhances readability without superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, nested objects, no output schema, and modest annotations. The description covers high-level behavior, fallback mechanisms, and execution mode, but does not explain how to construct the requested_time object or what the return structure looks like. It also does not detail the 'hold' action, leaving some gaps for a tool this complex.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, and the description does not compensate by explaining most parameters. The examples map a few fields (smb_id, action, service) but do not clarify requested_time, customer, notes, or the required existing_appointment_id for reschedule/cancel. This leaves significant ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles availability lookup, hold, confirm, reschedule, and cancel appointments for an SMB. It uses specific verbs and resources, and the example queries clarify the intended actions. It distinguishes from siblings by focusing on appointment scheduling specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' and 'WHEN NOT TO USE' sections explicitly provide context and exclusions, including requiring a verified smb_id and calling find_business/verify_business first. It also names alternatives for verification, giving clear guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
self_testARead-onlyIdempotentInspect
Live capability probe that verifies the service is healthy, each claimed operation is reachable, and supply network size is current. Use to verify integration before production use.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Run a health check before I send the broadcast" -> call self_test({})
WHEN TO USE: Use at agent startup, before high-stakes task sequences, or after receiving unexpected errors to check if the service is degraded. WHEN NOT TO USE: Do not call more than once per minute in production. COST: free LATENCY: ~200ms
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: rate limiting ('Do not call more than once per minute'), cost, latency (~200ms), and that it checks 'supply network size.' These are operational traits not present in the readOnlyHint or idempotentHint annotations, giving the agent richer expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded purpose, then usage guidance, and operational details. Each section (description, example, when-to-use, when-not-to-use, cost, latency) adds distinct value without redundancy, and the formatting improves scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool, the description is fully complete: it defines the probe's function, mentions integration verification, gives usage timing, sets rate limits, and notes cost/latency. No output schema is present, but the tool's simplicity means this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly omits parameter details as there are none, and the empty schema leaves no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as a 'Live capability probe' that verifies service health, reachability of operations, and supply network currency. This specific verb+resource phrasing immediately distinguishes it from sibling tools like send_message or call_business, which perform actual operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit WHEN TO USE and WHEN NOT TO USE sections provide clear guidance: use at startup, before high-stakes sequences, or after errors; avoid more than once per minute. This also includes a concrete example user query, making the tool's application obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageADestructiveInspect
Send a message on behalf of an agent's user or an SMB across SMS, email, or voice. Five message types: transactional, reminder, follow_up, notification, marketing. Every send routes through a non-bypassable compliance gate (TCPA, GDPR, CASL, PDPL across 22 jurisdictions) that enforces opt-in consent for marketing/promotional content — marketing without recorded consent is rejected at runtime with a structured compliance_violation receipt. Channel is abstracted: specify intent and recipient; the service selects and falls back across channels.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Text the salon I'll be 10 minutes late" -> call send_message({"recipient_id": "smb_xyz", "channel_preference": "sms", "message": {"body": "Will be 10 minutes late."}, "country_code": "US"}) user: "Email the dentist about insurance" -> call send_message({"recipient_id": "smb_xyz", "channel_preference": "email", "message": {"body": "Do you accept Cigna?"}})
WHEN TO USE: Use to: (a) confirm a booking the agent just made, (b) reply to a customer who messaged the SMB first, (c) follow up on a quote the user requested, (d) send appointment reminders the SMB owes its customer, (e) send marketing messages to recipients who have opted in (with consent_record_id). The gate verifies consent on every send. WHEN NOT TO USE: Do NOT use for OTPs or critical transactional confirmations — use send_transactional_confirmation. Do NOT attempt to send marketing without a consent_record_id pointing at a real opt-in — the gate will reject the send and log a compliance_violation. Do NOT attempt bulk / list-based / drip / cold outreach — those are out of scope and the rate limiter will throttle abuse. COST: from $0.02 per_message (see preview_cost for exact) LATENCY: ~800ms EXECUTION: sync_fast (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| recipient | Yes | ||
| send_at_iso | No | Schedule for future delivery; omit for immediate | |
| message_type | Yes | 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. | |
| preferred_channel | No | auto |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits beyond the generic annotations: the non-bypassable compliance gate that rejects unconsented marketing with a compliance_violation receipt, channel abstraction with fallback, cost from $0.02, latency ~800ms, sync_fast execution, and instruction to use get_outcome for results. These are significant operational details not inferable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with sections for examples, when to use, when not to use, cost, latency, and execution. Each section adds value, though there is minor repetition of the consent verification statement. The mismatched examples slightly detract from overall structure, but the organization is otherwise clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers a wide range of context: compliance, channel fallback, usage boundaries, cost, latency, and execution flow. However, it introduces consent_record_id as essential for marketing but does not include it in the schema, leaving a critical gap for the agent. The example parameter mismatches also undermine completeness. Without an output schema, the description points to get_outcome but does not clarify how to interpret the compliance_violation receipt. These gaps make it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The prose explains message types and consent requirements, adding meaning beyond the schema. However, the example calls use parameter names that directly contradict the schema: 'recipient_id' vs. 'recipient', 'channel_preference' vs. 'preferred_channel', and 'message' vs. 'content'. Additionally, consent_record_id is mentioned as required for marketing but is completely absent from the input schema. These inconsistencies can mislead an agent into constructing invalid calls, and with only 40% schema coverage, the description fails to reliably compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's core function: 'Send a message on behalf of an agent's user or an SMB across SMS, email, or voice.' It also differentiates from sibling tools by explicitly naming send_transactional_confirmation as the alternative for OTPs/critical confirmations. The message types and compliance gate are described, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
WHEN TO USE lists concrete scenarios (confirm booking, reply to customer, follow up on quote, appointment reminders, consented marketing). WHEN NOT TO USE explicitly excludes OTPs/critical transactional messages and directs to send_transactional_confirmation, and warns against bulk/drip/cold outreach. This provides strong guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_transactional_confirmationBDestructiveInspect
Idempotent transactional messages: OTPs, booking confirmations, payment receipts, cancellation notices. Guaranteed delivery via redundant channels.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Send the booking confirmation receipt to my email" -> call send_transactional_confirmation({"recipient_id": "user@example.com", "channel_preference": "email", "confirmation_type": "booking"})
WHEN TO USE: Use for any message that MUST be delivered reliably — OTPs, booking confirmations, receipts. Do not use for marketing. WHEN NOT TO USE: Do not use for marketing or promotional messages. Do not use for conversational messages. COST: $0.02 per_message LATENCY: ~500ms EXECUTION: sync_fast (use get_outcome to retrieve result)
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Type-specific payload; e.g., {otp_code} for otp, {appointment_time, smb_name} for booking_confirmation | |
| recipient | Yes | ||
| confirmation_type | Yes | ||
| preferred_channel | No | sms |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'Idempotent transactional messages' while the annotations set idempotentHint=false, a direct contradiction. This is an annotation contradiction and severely undermines trust in the behavioral description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections, but the EXAMPLE USER QUERIES section is lengthy and contains incorrect parameter usage. It could be shorter and more accurate, making the overall description less concise than it should be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers cost, latency, execution mode, and points to get_outcome for results, but lacks complete parameter details (especially for 'data') and includes a misleading example. Given no output schema, more complete and accurate parameter guidance would be needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema coverage, the description needed to clarify parameters, but it instead provides an example using wrong parameter names ('recipient_id', 'channel_preference') and an invalid confirmation_type value ('booking' instead of 'booking_confirmation'). This actively misleads agents about the actual schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as sending transactional messages (OTPs, booking confirmations, payment receipts, cancellation notices) with a specific verb and resource. The 'WHEN NOT TO USE' section further distinguishes it from marketing and conversational messages, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides dedicated 'WHEN TO USE' and 'WHEN NOT TO USE' sections, explicitly stating to use for reliable transactional messages and not for marketing or conversational messages. It also mentions retrieving the result via get_outcome, offering clear practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_businessARead-onlyIdempotentInspect
Confirm that an SMB is real, currently operating, and capable of the requested service. Performs a live capability probe against the business's channel.
EXAMPLE USER QUERIES THAT MATCH THIS TOOL: user: "Confirm smb_imp_abc actually does emergency plumbing" -> call verify_business({"smb_id": "smb_imp_abc", "capability_to_verify": "emergency_plumbing"})
WHEN TO USE: Use before sending communications or scheduling if you have an unverified SMB identifier, or if the agent's task requires confirmed capability (e.g., 'I need to be sure they do emergency plumbing'). WHEN NOT TO USE: Do not use if the SMB was returned from find_business within the last 24 hours — those results are already verified. COST: $0.02 per_call LATENCY: ~500ms
| Name | Required | Description | Default |
|---|---|---|---|
| smb_id | Yes | ||
| capability_to_verify | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses cost ($0.02 per call), latency (~500ms), and the fact that a live capability probe is performed, adding behavioral context beyond the annotations. The 'live probe' implies an external interaction with the business's channel, which is useful for the agent to anticipate side-effects. This does not contradict the readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise main sentence, an illustrative example, explicit usage guidance, and cost/latency details. Every sentence adds value, and the information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, example, when/not to use, cost, and latency, which is comprehensive for a tool with no output schema. However, it does not explicitly state the return value or result format (e.g., boolean), which would be useful for an agent to know what to expect after invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by providing an example query that maps user intent to parameter values, clarifying that smb_id is the identifier and capability_to_verify is the service to confirm. However, it does not enumerate valid capabilities or specify formats beyond the example, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with specific verbs: 'Confirm that an SMB is real, currently operating, and capable of the requested service' and 'Performs a live capability probe against the business's channel.' This distinguishes it from sibling tools like find_business by focusing on verification of existing SMBs rather than discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections, including a specific alternative (find_business) and a 24-hour verification window. This is exemplary guidance that clearly explains when to invoke the tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- FlicenseAqualityCmaintenancePay-per-call tools for AI agents including trust checks, due diligence, market data, and human-verified approvals, settled in USDC on Base via the x402 protocol.16
- AlicenseBqualityAmaintenancePay-per-call AI agent APIs on Base via x402. Multiple tools across patents, law, AI, geo, weather, crypto, and more. Always growing.1006MIT
- Alicense-qualityBmaintenanceThe open marketplace for the agent economy — Buy any of 24,000+ live x402 services with USDC on Base.2MIT

hyperd-mcpofficial
AlicenseAqualityBmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.23561MIT
Your Connectors
Sign in to create a connector for this server.