Skip to main content
Glama
Ownership verified

Server Details

AI phone secretary: place calls, read transcripts, list calls, agents, and stats.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4/5 across 21 of 21 tools scored. Lowest: 3.1/5.

Server CoherenceA
Disambiguation4/5

Most tools have distinct purposes (calls, leads, agents, messaging, analytics). Overlap exists between update_agent_config and configure_agent_business_rules, but descriptions clarify the latter is for specific operational rules. The meta-tool request_kaicalls_update defers to other tools for common operations, reducing ambiguity.

Naming Consistency4/5

Tools consistently use verb_noun pattern (get_, list_, configure_, send_, etc.) except for 'request_kaicalls_update' which mixes the server name and a less common verb. 'make_call' is slightly different but acceptable. Overall pattern is predictable.

Tool Count5/5

With 21 tools, the server covers a broad domain (telephony, leads, agents, messaging, analytics, configuration) without feeling bloated. Each tool serves a specific need and the count is well-scoped for the apparent purpose.

Completeness3/5

The tool surface covers core operations (create, read, list) for calls, leads, and agents, but lacks update/delete for calls and leads (though request_kaicalls_update may fill some gaps). Missing campaign management beyond listing, and no call disposition tools. Notable but not severe gaps.

Available Tools

46 tools
attach_numberAttach Phone NumberA
Idempotent
Inspect

Assign a phone number already in the KaiCalls registry pool to a business (and optionally route it directly to an agent). Does NOT purchase a new number — use search_available_numbers + buy_number for that. Mirrors POST /api/v1/phone-numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoAgent ID to route this number to directly (optional).
business_idNoBusiness ID (optional only when the token can access exactly one business).
phone_numberYesE.164 phone number already in the registry.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
numberNo
successYesWhether the tool completed successfully
business_idNo
Behavior3/5

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

Annotations provide readOnlyHint=false, destructiveHint=false, and idempotentHint=true, which are consistent with the description. The description adds no behavioral details beyond the annotation hints, such as error behavior if the number is already assigned or idempotency guarantees. With annotations already covering the safety profile, the description adds minimal additional transparency.

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

Conciseness5/5

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

The description is three sentences, each earned: first states the core action and optional routing, second clarifies what it does not do and directs to an alternative, third references the underlying API. No wasted words, front-loaded with the most important information.

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

Completeness5/5

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

The tool has an output schema (indicated by context), so return value explanation is not needed. All three parameters are documented in the schema, and the description covers purpose, usage guidance, and behavioral caveats. The tool is relatively simple, and the description is fully adequate for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by explaining that phone_number must be 'already in the registry' and that business_id is optional only when the token can access exactly one business. This context goes beyond the schema's descriptions, which only specify type and requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Assign' and the resource 'phone number already in the KaiCalls registry pool'. It explicitly distinguishes from purchasing a new number by directing to search_available_numbers + buy_number, which differentiates it from sibling tool buy_number.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when not to use this tool ('Does NOT purchase a new number — use search_available_numbers + buy_number for that'), giving clear context for alternatives. It also mentions the optional routing to an agent, but does not explicitly contrast with detach_number or other sibling tools.

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

buy_numberBuy Phone NumberA
Destructive
Inspect

Purchase a real phone number from the carrier and register it to a business. This spends real money — the number is billed by the carrier immediately. Does not auto-attach an agent; call attach_number afterward to route it. Mirrors POST /api/v1/phone-numbers/purchase. Compliance: KaiCalls automatically applies state-aware AI-disclosure and consent handling to numbers it provisions, and flags high-risk business categories for extra review.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoAgent ID to route this number to directly once purchased (optional; requires the number to also be Vapi-imported, which is not guaranteed at purchase time — prefer a follow-up attach_number call).
business_idNoBusiness ID (optional only when the token can access exactly one business).
phone_numberYesThe exact E.164 phone number to purchase, as returned by search_available_numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
numberNo
successYesWhether the tool completed successfully
complianceNo
business_idNo
Behavior4/5

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

Annotations already mark destructiveHint=true and idempotentHint=false. Description adds value by stating billing is immediate and that agent attachment is separate. Also mentions compliance handling. No contradictions.

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

Conciseness5/5

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

Three sentences, front-loaded with core action and key constraints. No wasted words. Every sentence adds value.

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?

Covers billing, agent attachment, compliance, and API mapping. Missing details like refund policy or cancellation, but sufficient for a purchase tool with existing output schema.

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

Parameters4/5

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

Schema coverage is 100%. Description adds context: phone_number must be E.164 from search_available_numbers, agent_id is optional and suggests follow-up, business_id optional only with single-business token. Enhances understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Purchase a real phone number' with verb+resource. Distinguishes from sibling tools like search_available_numbers (search vs buy) and attach_number (attach vs buy).

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?

Explicitly notes that it spends real money and does not auto-attach an agent, advising a follow-up attach_number call. Provides API route and compliance info. Lacks explicit when-to-use vs alternatives but context is sufficient.

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

check_call_statusCheck Call StatusA
Read-onlyIdempotent
Inspect

Check the status of a call by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYesThe call ID to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
callNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds no extra behavioral context beyond what the annotations provide, which is adequate but not improved upon.

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?

A single, front-loaded sentence with no unnecessary words. It efficiently conveys the essential information.

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, single-parameter tool with annotations and an output schema, the description is functionally complete. However, it could briefly mention what status values might be returned or any caching behavior for better completeness.

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

Parameters3/5

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

The input schema has 100% coverage for its single parameter, and the description merely restates 'by its ID' without adding format, validation, or additional context. 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 'Check the status of a call by its ID' clearly states the action (check), resource (call), and key parameter (ID), and it distinguishes from sibling tools like get_business_info or get_transcript by focusing specifically on status.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description does not mention context, prerequisites, or scenarios where other tools would be preferred, leaving the agent without usage direction.

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

configure_agent_business_rulesConfigure Agent Business RulesA
DestructiveIdempotent
Inspect

Safely add or replace a named operational rules section inside an agent inbound prompt, then route the prompt patch through the governed agent.patch broker. Use this for cross-business handoffs, callback language, alert promises, and client-specific operating rules without round-tripping the whole prompt manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoreplace (default) or append.
actorNoWho is asking: { type: agent|human|system|integration, id, display_name }.
rulesYesPlain-language operational rules to insert as bullets, e.g. callback capture, sister-location boundaries, urgent alert handling.
dry_runNoValidate and show the prompt patch metadata without writing.
agent_idYesKaiCalls agent ID to update
authorityNoHuman-grade authority for live prompt changes: { mode: human_confirmed|dashboard_session|system_policy, confirmed_by, confirmed_at, confirmation_ref }.
source_refNoExternal source reference, such as a support ticket or Claude conversation ID.
business_idNoBusiness ID. Required when the agent has multiple accessible assignments.
section_titleNoPrompt section heading to replace/append. Default: Operational handoff rules.
idempotency_keyNoRequired for writes. Reuse the same key when retrying the same proposed prompt change.
queue_for_approvalNoWhen authority is missing, create a pending dashboard approval instead of returning needs_approval.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
errorNoPresent when success is false
resultNo
statusNo
successYesWhether the tool completed successfully
summaryNo
agent_idNo
approvalNo
request_idNo
business_idNo
rules_countNo
section_titleNo
Behavior4/5

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

The description adds context beyond annotations: it mentions 'safely' and 'governed agent.patch broker', indicating a write operation with governance. This complements the annotations (destructiveHint=true, idempotentHint=true) by explaining the safety and routing mechanism. No contradiction; the description aligns with the annotations while adding valuable behavioral context.

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

Conciseness5/5

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

The description is two sentences: the first states the core operation, the second lists use cases. It is front-loaded and every sentence earns its place. No unnecessary words or repetitions. Highly concise.

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 (11 parameters, nested objects, output schema), the description covers the essential purpose and common use cases. It does not describe the output or the broker details, but the presence of an output schema means that responsibility can be delegated. The description is sufficient for an agent to decide whether to invoke this tool, though it could briefly mention that parameter details are in the schema.

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

Parameters3/5

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

The input schema has 100% description coverage, so the baseline is 3. The description does not elaborate on individual parameters; it focuses on the tool's purpose. While it references 'named operational rules section' (corresponding to section_title) and 'cross-business handoffs' (sample rules), it adds minimal parameter-level meaning beyond what the schema already provides.

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: 'safely add or replace a named operational rules section inside an agent inbound prompt'. It specifies the resource (agent inbound prompt), the action (add/replace a section), and the mechanism (routed through governed broker). The use cases (cross-business handoffs, callback language, alert promises, client-specific rules) further distinguish it from siblings like configure_staff_alerts or configure_textable_links.

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 explicitly provides usage scenarios: 'cross-business handoffs, callback language, alert promises, and client-specific operating rules'. It implies when to use this tool (for operational rules in agent prompts) but does not explicitly state when not to use it or compare with siblings like request_kaicalls_update. The guidance is clear but lacks exclusionary context.

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

configure_staff_alertsConfigure Staff AlertsA
DestructiveIdempotent
Inspect

Configure business-owned staff alert recipients and post-call escalation rules. Use this for emergency/urgent texts, callback alerts, billing/provider follow-up alerts, and ensuring alerts go only to the correct business staff.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoValidate and show the proposed settings without writing.
business_idNoBusiness ID (optional only when the token has exactly one accessible business)
escalation_rulesNoPost-call escalation rules evaluated against completed transcripts. Each rule is { id?, when, then, enabled? }. v1 action then includes text_owner.
sms_notificationsNoEnable or disable SMS staff alerts for this business.
notification_emailNoComma-separated string or array of staff email addresses that receive escalation emails.
notification_phoneNoComma-separated string or array of staff phone numbers that receive SMS escalation alerts.
email_notificationsNoEnable or disable email staff alerts for this business.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
dry_runNo
successYesWhether the tool completed successfully
settingsNo
business_idNo
current_settingsNo
proposed_settingsNo
Behavior3/5

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

Annotations indicate destructiveHint=true and idempotentHint=true. Description mentions 'Configure' and includes dry_run parameter, suggesting writes, but does not warn that existing settings may be overwritten.

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

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no wasted words. Lists use cases succinctly.

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?

Output schema exists, so return values are covered. Description provides sufficient context for when to use the tool, though dry_run and destructive behavior could be explicitly noted.

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 covers 100% of parameters with detailed descriptions. The tool description adds minimal extra meaning beyond the schema, which is acceptable for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it configures staff alert recipients and escalation rules, with specific use cases (emergency texts, callback alerts). Differentiates from siblings like configure_agent_business_rules and configure_textable_links.

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?

Describes when to use (emergency/urgent texts, callback alerts, etc.) but does not explicitly mention when not to use or alternatives among siblings.

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

create_agentCreate AgentAInspect

Create a new KaiCalls voice agent (Vapi assistant + KaiCalls records) with a system prompt, greeting, voice, and model. Mirrors POST /api/v1/agents. Every subsequent mutation to this agent is versioned (assistant_config_versions) and reversible via rollback_config — inspect history with get_change_history / list_config_versions. Compliance: KaiCalls automatically applies state-aware AI-disclosure and consent handling to every agent it provisions, and flags high-risk business categories for extra review.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent display name.
modelNoLanguage model selection: { provider, model, temperature } (optional).
voiceNoRaw voice selection: { provider, voiceId } (optional).
metadataNoExtra KaiCalls metadata to store (optional).
business_idYesBusiness ID to create the agent under.
first_messageNoSpoken greeting (optional).
system_promptYesThe agent's inbound system prompt / instructions.
voice_catalog_idNoPreferred: a curated catalog id from list_voices (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
agentNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
complianceNo
Behavior4/5

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

The description adds significant behavioral context beyond annotations: it explains that mutations are versioned ('assistant_config_versions'), reversible via rollback_config, and that compliance auto-applies AI-disclosure and consent handling. Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description enriches understanding of side effects and safety.

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 four sentences with no wasted words. The primary action is front-loaded, and additional behavioral details are added without redundancy. Every sentence adds value.

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 8 parameters, nested objects, a rich output schema, and many sibling tools, the description covers creation behavior, versioning, rollback, and compliance. It does not mention prerequisites (e.g., business_id must exist) or typical workflows, but the schema handles parameters. The output schema is mentioned as existing, so return values are covered.

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 100%, so the input schema already describes all 8 parameters. The description adds high-level context (e.g., 'system prompt, greeting, voice, and model') but does not provide additional meaning or constraints beyond what the schema already captures. 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 clearly states the verb ('Create'), the resource ('a new KaiCalls voice agent'), and the key components ('system prompt, greeting, voice, and model'). It distinguishes from sibling tools like 'configure_agent_business_rules' by focusing on initial creation rather than configuration.

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 provides context about versioning and reversibility, and mentions compliance, but does not explicitly state when to use this tool over alternatives (e.g., update_agent_config) or when not to use it. No direct comparison to siblings is given.

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

create_campaignCreate CampaignA
Destructive
Inspect

Create an outbound call campaign (cadence + lead batch) and optionally launch it immediately. Launching queues calls for the orchestrator; existing TCPA/consent gating still applies at dial time. Requires admin role on the business.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name.
launchNoWhen true, launch the campaign immediately after creating it.
agent_idNoAgent ID to place the calls. Required when launch is true.
lead_idsNoLead IDs to enroll in the campaign (optional at create time).
business_idNoBusiness ID (required only when the token can access multiple businesses).
descriptionNoOptional campaign description.
cadence_configYesCadence configuration. { template: standard|aggressive|nurture|custom, attempts: number }.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
queuedNo
successYesWhether the tool completed successfully
campaignNo
launchedNo
sequence_idNo
total_leadsNo
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, consistent with creating a campaign. The description adds valuable context: TCPA/consent gating still applies at dial time and admin role requirement. It does not contradict annotations and provides beyond what annotations convey.

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?

Three sentences, front-loaded with the primary action. No wasted words, though the description could be slightly more concise by combining some clauses. Still well-structured and efficient.

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 complexity (7 params, nested objects) and presence of an output schema, the description adequately covers creation, launch behavior, consent constraints, and role requirement. It is sufficient for an agent to understand the tool's purpose and key considerations, though it omits the agent_id constraint when launch is true (only in schema).

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 100%, so the schema already documents all 7 parameters with descriptions. The description adds high-level context (e.g., 'optionally launch it immediately', 'cadence_config' structure) but does not significantly enhance individual parameter understanding beyond the schema. Baseline 3 is appropriate.

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 'Create an outbound call campaign' with a specific verb and resource. It distinguishes from siblings like 'list_campaigns' or 'upsert_lead' by focusing on campaign creation, but could be more explicit about alternatives.

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

Usage Guidelines2/5

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

The description specifies an admin role requirement but does not provide guidance on when to use this tool versus alternatives (e.g., when to launch vs. create without launch, or when to use other tools like 'configure_agent_business_rules'). No explicit when-not-to-use or alternative tool mentions.

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

delete_webhookDelete WebhookA
DestructiveIdempotent
Inspect

Remove a business outbound webhook by ID. Mirrors DELETE /api/v1/webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWebhook ID to remove.
business_idNoBusiness ID (optional only when the token can access exactly one business).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
messageNo
successYesWhether the tool completed successfully
business_idNo
Behavior4/5

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

Annotations already provide key behavioral traits (destructive, idempotent). The description adds the REST API mirror ('Mirrors DELETE /api/v1/webhooks'), which gives extra context. No contradictions. Does not detail other effects but sufficiently complements 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?

Two concise sentences with no unnecessary words. Front-loaded with the action and resource. Every word 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?

With annotations covering safety and idempotency, and an output schema existing, the description is adequate. It specifies the action and provides REST context. Could mention return values or prerequisites, but overall complete for a simple delete tool.

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

Parameters3/5

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

Input schema covers all parameters with 100% description coverage. The description mentions 'by ID' reinforcing the id parameter but adds no new semantics beyond what the schema provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Remove', the resource 'business outbound webhook', and the method 'by ID'. It also mentions the corresponding REST endpoint, distinguishing it from sibling tools like set_webhook and get_webhook.

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 does not explicitly state when to use this tool or provide alternatives. It implies usage for deleting a webhook but lacks guidance on context or when not to use it. The idempotentHint in annotations hints at safe retry, but the description itself offers no usage direction.

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

detach_numberDetach Phone NumberA
DestructiveIdempotent
Inspect

Release a phone number from a business back to the unassigned registry pool. Mirrors DELETE /api/v1/phone-numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idNoBusiness ID (optional only when the token can access exactly one business).
phone_numberYesE.164 phone number to release.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYes
business_idNo
released_phone_numberNo
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. The description confirms the destructive nature ('release', 'mirrors DELETE') but adds minimal extra 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.

Conciseness5/5

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

Two efficient sentences with no wasted words. The action and key detail (mirroring DELETE) are front-loaded.

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 destructive operation, the description covers the essential information. It could mention the existence of the reverse operation (attach_number) or any irreversible consequences, but the presence of output schema and annotations compensates.

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 100% with descriptions for both parameters. The description does not add additional meaning beyond the schema; it simply mentions the phone_number parameter inline.

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 action (release), resource (phone number), and destination (unassigned registry pool). It also mentions the mirrored API endpoint (DELETE), distinguishing it from siblings like attach_number and buy_number.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or how it relates to attach_number (reverse operation).

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

get_analyticsGet AnalyticsA
Read-onlyIdempotent
Inspect

Get a dashboard summary (lead counts by status, conversion rate, call volume and duration, top agents, and business outcomes by type) over a recent time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (default 30, max 90)

Output Schema

ParametersJSON Schema
NameRequiredDescription
callsNo
errorNoPresent when success is false
leadsNo
agentsNo
periodNo
successYesWhether the tool completed successfully
outcomesNo
outcomes_totalNo
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as safe. The description adds that it returns a 'dashboard summary' over a 'recent time window,' which is consistent but does not disclose additional behavioral traits 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.

Conciseness5/5

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

Single sentence efficiently lists the key metrics and scope. No unnecessary words; structured to front-load the purpose ('dashboard summary').

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 presence of an output schema (not shown), the description sufficiently covers what the tool returns. The single parameter is clear. Minor gap: could explicitly state that data is aggregated and not individual records.

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 100% with one parameter 'days' described in the schema. The description mentions 'recent time window' but does not explicitly link to the parameter or provide additional meaning beyond the schema definition. Baseline 3 is appropriate.

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?

Description clearly identifies the tool as returning a dashboard summary with specific metrics (lead counts, conversion rate, etc.), which distinguishes it from data retrieval tools. However, it does not explicitly differentiate from siblings like get_business_info or list_recent_calls.

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 implies usage for high-level metrics over a time window but does not state when to use this tool instead of alternatives or provide exclusion criteria. Adding context like 'for overall trends, not detailed records' would improve clarity.

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

get_balanceGet BalanceA
Read-onlyIdempotent
Inspect

Get per-business minutes-used and subscription status across every business the caller can access. Mirrors GET /api/v1/balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
businessesNo
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds value by specifying the scope (across every business the caller can access) and the exact data returned (minutes-used and subscription status per business). It does not contradict annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, followed by a technical reference. No wasted words.

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

Completeness4/5

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

Given the absence of parameters and presence of annotations and output schema, the description is fairly complete. It explains the output and scope, though it could mention that authentication is implicitly required. Still, it covers the essential context.

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?

With zero parameters and 100% schema description coverage, the description does not need to add parameter details. The baseline of 4 is appropriate as the description does not introduce any confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the specific resource 'per-business minutes-used and subscription status across every business the caller can access.' It is precise about what data is returned and the scope, differentiating it from sibling tools like get_usage or get_analytics.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. While it mentions 'Mirrors GET /api/v1/balance,' it does not provide context for when to prefer this over other read tools, such as get_usage, nor does it state any prerequisites or exclusions.

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

get_business_infoGet Business InfoA
Read-onlyIdempotent
Inspect

Get business information, agent count, and recent call stats

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idNoBusiness ID (optional, defaults to first accessible business)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
businessNo
agent_countNo
calls_last_30_daysNo
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns agent count and call stats, but does not disclose other behavioral traits like authentication requirements or rate limits.

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 concise sentence that gets straight to the point. No wasted words.

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

Completeness4/5

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

Given a single optional parameter and an output schema (which removes need to explain return format), the description adequately describes what the tool returns. However, it could briefly mention what 'business information' includes for completeness.

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

Parameters3/5

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

The input schema has 100% coverage with a clear description for the single optional parameter. The description does not add any extra meaning beyond what the schema already provides, so 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 clearly states the tool retrieves business information, agent count, and recent call stats. This distinguishes it from siblings like list_agents (only agents) and list_recent_calls (only calls).

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 implies use when aggregated business data is needed, but lacks explicit guidance on when to use this tool versus alternatives or when not to use it.

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

get_call_recordingGet Call RecordingA
Read-onlyIdempotent
Inspect

Get the real call recording URL for a call so reviewers can listen to the voice/audio instead of relying only on the transcript.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYesThe KaiCalls call ID to get the recording for

Output Schema

ParametersJSON Schema
NameRequiredDescription
callNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
recording_availableNo
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds context about the tool's purpose (listening to audio) but does not disclose additional behavioral traits like auth requirements, error handling, or rate limits. With annotations covering safety, the description adds marginal value.

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 20-word sentence that front-loads the purpose and key differentiator. Every word adds value; no repetition or fluff.

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

Completeness4/5

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

The description covers the core functionality for a simple tool with one parameter and an output schema. However, it omits edge cases (e.g., recording not found) that could be helpful for an agent. Minor gap given the simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully describes the 'call_id' parameter. The description does not add extra semantics or constraints beyond what the schema provides, thus baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'real call recording URL', and explicitly contrasts with the sibling 'get_transcript' by mentioning 'instead of relying only on the transcript'. This makes the purpose specific and distinct.

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

Usage Guidelines4/5

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

The description implies when to use (need audio) and when not (transcript sufficient) by saying 'so reviewers can listen… instead of relying only on the transcript'. It does not explicitly name alternatives, but the sibling 'get_transcript' is implied.

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

get_change_historyGet Agent Change HistoryA
Read-onlyIdempotent
Inspect

List an agent's recent config-change audit trail (change_type, change_source, old/new value, timestamp) from admin_change_history — the same record the admin_get_change_history voice tool reads over the phone. Every mutation KaiCalls makes to an agent (via update_agent_config, configure_agent_business_rules, the admin call-in secretary, or the dashboard) is logged here and reversible with rollback_config.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 20, max 100).
agent_idYesAgent ID to fetch change history for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
changesNo
successYesWhether the tool completed successfully
agent_idNo
Behavior5/5

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 confirms this by describing it as an audit trail. It adds context that mutations are logged and reversible, which goes beyond annotations and gives confidence about behavior.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose and output fields. Every sentence adds value, with no redundant information. It is efficiently structured.

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

Completeness5/5

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

Given that an output schema exists, the description does not need to detail return values. It covers the source (admin_change_history), relationship to the voice tool, and the scope of logged mutations, making it complete for a list tool.

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

Parameters3/5

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

Schema coverage is 100%, so parameters (agent_id, limit) are fully defined in the schema. The description does not add additional semantic details beyond the schema, but it does not need to. 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 clearly states the tool lists an agent's config-change audit trail with specific fields (change_type, change_source, old/new value, timestamp). It distinguishes itself from siblings by focusing on change history, which no other sibling tool does. The verb 'list' and resource 'change history' are precise.

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 explains that every mutation by KaiCalls is logged here and reversible, implying it is the tool to inspect changes. However, it does not explicitly state when not to use it or mention specific alternatives, though the context is clear enough for an agent.

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

get_conversationGet SMS ConversationA
Read-onlyIdempotent
Inspect

Get a single SMS conversation thread by ID. Mirrors GET /api/v1/sms/conversations?id=.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesThe conversation ID to fetch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
conversationNo
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds no additional behavioral context beyond 'Get', which is consistent. No contradictions.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and endpoint mirror, no wasted words. Perfectly concise.

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

Completeness5/5

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

For a simple 1-parameter read operation with existing output schema, the description covers all necessary context: what it does, the key parameter, and endpoint reference.

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 100% for the single parameter, and the description repeats the schema's intent ('by ID') without adding extra meaning, such as format requirements or examples.

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 states the tool gets a single SMS conversation by ID, clearly distinguishing it from sibling tools like list_conversations which would return multiple. The verb 'Get' and resource 'SMS conversation thread' are specific.

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 does not provide explicit guidance on when to use this tool vs alternatives, though it implies use when you have a specific conversation ID. No when-not-to-use or alternative suggestions are given.

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

get_leadGet LeadA
Read-onlyIdempotent
Inspect

Get full details for a single lead by ID, including the latest AI lead score and explanation.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesThe lead ID to fetch

Output Schema

ParametersJSON Schema
NameRequiredDescription
leadNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context about returning full details and the AI lead score, which is consistent and provides additional insight beyond 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?

Single sentence with 18 words, front-loaded with the main action. No fluff; every word earns its place. Excellent structure for a simple tool.

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

Completeness5/5

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

Given the presence of an output schema (not shown but noted), the description completes the picture by highlighting the inclusion of the AI lead score. For a single lead fetch tool, this is comprehensive and sufficient.

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% for the single parameter lead_id, so baseline is 3. The description does not add extra meaning beyond what the schema provides ('The lead ID to fetch'). Acceptable but not enhanced.

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?

Description clearly states the verb (get), resource (single lead by ID), and distinguishes from siblings like list_leads. It specifies the inclusion of 'latest AI lead score and explanation', which adds unique value.

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?

While no explicit when-not-to-use or alternatives are given, the description implies usage when you need full details for a specific lead. The context of having a lead ID is clear, and the sibling list_leads suggests an alternative for multiple leads.

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

get_operational_settingsGet Operational SettingsA
Read-onlyIdempotent
Inspect

Audit the business-level operational setup Claude needs before changing a client account: staff alert recipients, SMS/email alert flags, escalation rules, textable send-link entries, and assigned agent voice/model/greeting metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idNoBusiness ID (optional, defaults to first accessible business)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
agentsNo
successYesWhether the tool completed successfully
businessNo
business_linksNo
available_setup_toolsNo
notification_settingsNo
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no new behavioral traits beyond confirming the audit nature. It does not contradict annotations.

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

Conciseness4/5

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

One sentence covering purpose and scope, front-loaded with the main action. Slightly dense but efficient with no wasted words.

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

Completeness4/5

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

Covers what the tool retrieves with a detailed list. Output schema exists, so return values need no explanation. Complete enough for a read-only audit tool.

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

Parameters3/5

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

Schema coverage is 100% with the business_id parameter fully explained in the schema. The description adds no additional parameter guidance, so 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 uses the verb 'audit' and specifies the resource 'business-level operational setup,' listing exact components like staff alert recipients and escalation rules. This clearly distinguishes it from sibling tools like configure_staff_alerts or get_business_info.

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 states it is needed 'before changing a client account,' providing clear context. However, it does not explicitly exclude alternatives or list when not to use, which is a minor gap.

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

get_transcriptGet TranscriptA
Read-onlyIdempotent
Inspect

Get the transcript and summary of a completed call

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYesThe call ID to get the transcript for

Output Schema

ParametersJSON Schema
NameRequiredDescription
callNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
transcriptNo
transcript_lengthNo
transcript_availableNo
transcript_truncatedNo
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds only that the tool gets transcript and summary of a completed call, contributing minimal 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.

Conciseness5/5

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

The description is a single, front-loaded sentence of 9 words with no unnecessary information. Every part earns its place.

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

Completeness5/5

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

Given the tool has a simple single parameter, comprehensive annotations, and an output schema, the description sufficiently covers the purpose and key condition (completed call). No critical gaps remain.

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 100% with a single parameter 'call_id' already documented. The description's mention of 'completed call' adds context but does not meaningfully extend parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves both transcript and summary of a completed call, using the verb 'get' and specifying the resource. It distinguishes from siblings like check_call_status or list_recent_calls, which serve different purposes.

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 'completed call', implying the call must be finished, but does not explicitly state when to use this tool versus alternatives like check_call_status to verify completion first. No exclusions or alternative tool references are provided.

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

get_usageGet API UsageA
Read-onlyIdempotent
Inspect

List recent API usage events (endpoint, method, status code, cost) for the caller's account. Mirrors GET /api/v1/usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoISO date/time upper bound (optional).
limitNoMax results to return (default 100, max 500).
startNoISO date/time lower bound (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
usageNo
successYesWhether the tool completed successfully
has_moreNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it returns recent usage events with specific fields (endpoint, method, status code, cost) and mirrors a known API endpoint, providing useful behavioral context beyond 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?

Two concise sentences with no redundancy. Each sentence adds value: first states purpose and output fields, second notes API mirroring. No fluff.

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?

Tool has output schema (not shown) and 3 optional parameters with solid schema coverage. Description explains what events include and that it's for the caller's account, which is sufficient. Minor gap: no mention of time range or pagination behavior, but parameters cover bounds and limit.

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 100% with each parameter documented. Description does not add any new parameter-level information beyond what is already in the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'List', specific resource 'API usage events' (endpoint, method, status code, cost), and scope 'for the caller's account'. Distinguishes from siblings like get_analytics or list_recent_calls by focusing on usage events.

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

Usage Guidelines2/5

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

No explicit guidance on when to use vs alternatives (e.g., get_analytics for broader metrics). Only mentions mirroring a specific API endpoint, which implies context but lacks exclusions or scenarios.

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

get_webhookGet Webhook ConfigurationA
Read-onlyIdempotent
Inspect

List the configured outbound webhook(s) for a business, including supported event types. Mirrors GET /api/v1/webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idNoBusiness ID (optional only when the token can access exactly one business).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
eventsNo
successYesWhether the tool completed successfully
webhooksNo
business_idNo
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not need to repeat these. It adds no further behavioral context beyond the schema. 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.

Conciseness5/5

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

Two short sentences, front-loaded with the verb 'list', no extraneous information. Every word is necessary.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter, an output schema exists (not shown but noted), and the description covers the purpose fully. No gaps given the low complexity.

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% (the single parameter business_id has a description). The tool description does not add any additional meaning for that parameter. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (webhook(s)), scope (for a business), and included content (supported event types). It distinguishes from sibling tools like set_webhook and delete_webhook.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The only extra information is an API endpoint reference, which does not help an agent decide when to select this tool.

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

list_agentsList AgentsA
Read-onlyIdempotent
Inspect

List KaiCalls agents available to the authenticated account

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 50, max 100)
offsetNoZero-based pagination offset (default 0)
business_idNoBusiness ID to filter by (optional, must be accessible)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNoPresent when success is false
limitNo
agentsNo
offsetNo
filtersNo
successYesWhether the tool completed successfully
has_moreNo
next_offsetNo
Behavior3/5

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

Annotations already declare read-only and idempotent. Description adds scope (authenticated account) but no other behavioral details like results format or pagination beyond schema.

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 concise sentence, no unnecessary words, front-loaded.

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?

Sufficient given annotations and schema. Could optionally mention pagination defaults or that output is array, but output schema handles that.

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 provides full parameter descriptions (100% coverage). Description adds no extra meaning to parameters, so baseline 3.

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?

Verb 'List' specifies operation, resource 'KaiCalls agents' is clear, and 'available to authenticated account' adds scope. Distinguishes from siblings which are about calls, transcripts, business info.

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?

No explicit comparison to siblings. Usage is implied by purpose; no when-not-to-use or alternative guidance. Could mention that this is for browsing agents vs. checking call status.

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

list_campaignsList CampaignsA
Read-onlyIdempotent
Inspect

List outbound call campaigns for the authenticated business.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 25, max 100)
offsetNoZero-based pagination offset (default 0)
statusNoFilter by campaign status (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNoPresent when success is false
limitNo
offsetNo
filtersNo
successYesWhether the tool completed successfully
has_moreNo
campaignsNo
next_offsetNo
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the context of 'outbound call campaigns' and 'authenticated business', which is useful but does not disclose additional behavioral traits like pagination or sorting.

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 with no waste. Every word adds value.

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 presence of an output schema and annotations, the description is sufficient for a simple list tool. It covers the resource and scope, though it could mention pagination explicitly. Still, it is adequately complete.

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 100%, and the description does not add any meaning beyond what the input schema already provides for limit, offset, and status. 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 clearly states the verb 'list', the resource 'outbound call campaigns', and the scope 'for the authenticated business'. It is specific and distinguishes from sibling tools like list_agents or list_leads.

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 does not provide when or when not to use this tool, nor does it mention alternatives. Usage is implied from the name and resource, but no explicit guidance is given for filtering by status or pagination.

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

list_config_versionsList Agent Config VersionsA
Read-onlyIdempotent
Inspect

List an agent's hashed, redacted assistant config version history (rollback lineage included). Pass version to fetch one version's full redacted config_snapshot instead of the list. Mirrors GET /api/v1/agents/versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax versions to return when listing (optional, default 50, max 100).
versionNoFetch a single version by its per-agent version_number, including its redacted config_snapshot (optional; omit to list).
agent_idYesAgent ID (required).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
versionNo
agent_idNo
versionsNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral details: the output is 'hashed, redacted' and includes 'rollback lineage'. This goes beyond annotations 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.

Conciseness5/5

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

The description is extremely concise with two sentences, front-loading the main purpose. Every word adds value 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?

Given that an output schema exists and annotations cover safety and idempotency, the description adequately covers the tool's two modes, the nature of the data (hashed/redacted), and the rollback lineage. It provides sufficient context for correct usage.

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 baseline is 3. The description repeats the schema's parameter descriptions verbatim for limit and version, adding no new meaning. It does not mention agent_id beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists agent config version history (hashed, redacted, with rollback lineage) and distinguishes between listing all versions and fetching a single version via the `version` parameter. It is specific and differentiates from any sibling tools.

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 explicitly explains when to use the `version` parameter to fetch a single version versus omitting it to list. While it doesn't provide when-not or alternatives, the context is clear enough for the agent to choose correctly.

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

list_conversationsList SMS ConversationsA
Read-onlyIdempotent
Inspect

List SMS conversation threads (counterparty timeline metadata) for the authenticated business, most recent first. Mirrors GET /api/v1/sms/conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 50, max 100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
has_moreNo
conversationsNo
Behavior4/5

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

Annotations already indicate readOnly, non-destructive, idempotent. Description adds value by specifying the data type (counterparty timeline metadata) and ordering (most recent first), enhancing beyond 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?

Two sentences, no fluff. First sentence immediately conveys purpose and ordering, second provides API reference. Highly efficient and front-loaded.

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 list tool with one optional parameter and an output schema, the description covers the essential aspects (what is listed, ordering). Could mention pagination, but the output schema likely handles return format.

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 100% with the limit parameter fully described in the schema (default 50, max 100). Description adds no further parameter semantics, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists SMS conversation threads for the authenticated business, ordered most recent first. Distinguishes from sibling tools like get_conversation (singular) and list_sms_messages (messages within conversations).

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?

Provides clear context: for the authenticated business, most recent first. Implicitly differentiates from get_conversation by being a list operation, but lacks explicit when-not-to-use or alternative suggestions.

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

list_evalsList Agent EvalsA
Read-onlyIdempotent
Inspect

List canned mock-conversation eval scenarios for an agent (or all accessible agents). Mirrors GET /api/v1/evals.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoFilter by agent ID (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
evalsNo
successYesWhether the tool completed successfully
Behavior4/5

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

Annotations already provide readOnly, idempotent, non-destructive hints. Description adds context about data type (canned mock-conversation) and API mirror, which is helpful but not essential.

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

Conciseness5/5

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

Two sentences with no redundant information. Efficient and front-loaded.

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

Completeness5/5

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

Complete for a simple list tool with one optional parameter and an output schema. No missing information needed for an agent to decide tool invocation.

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 100% with agent_id described as optional filter. Description implicitly adds scope context ('for an agent or all'), but does not add new parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists canned mock-conversation eval scenarios, for a specific agent or all accessible agents. Verb 'list' and resource 'eval scenarios' are precise. Distinct from sibling 'run_eval'.

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?

Implies usage for browsing available evals before running them. Could explicitly mention when not to use or recommend pairing with 'run_eval', but context is clear enough.

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

list_knowledgeList Agent KnowledgeA
Read-onlyIdempotent
Inspect

List agent knowledge base entries for a business. Mirrors GET /api/v1/knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree-text search over title/content (optional).
categoryNoFilter by category (optional).
business_idNoBusiness ID (optional only when the token can access exactly one business).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
knowledgeNo
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the API mirroring detail but no additional behavioral traits like pagination or limits.

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

Conciseness5/5

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

Two sentences with no redundancy; front-loaded with the purpose and a reference to the underlying API.

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 list tool with output schema present, the description is adequate; missing details like pagination or ordering but not critical given the schema.

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 description adds no extra meaning beyond what the schema already provides for each parameter.

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 lists agent knowledge base entries for a business, distinguishing it from the write sibling upsert_knowledge.

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?

No explicit guidance on when to use this vs alternatives; usage is implied by the name and the mention of mirroring a GET endpoint, but no when-not-to-use context.

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

list_leadsList LeadsA
Read-onlyIdempotent
Inspect

List leads for the authenticated business, with optional status/source/agent filters. Includes the latest AI lead score when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 50, max 100)
offsetNoZero-based pagination offset (default 0)
sourceNoFilter by lead source (optional)
statusNoFilter by lead status (optional)
agent_idNoFilter by agent ID (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNoPresent when success is false
leadsNo
limitNo
offsetNo
filtersNo
successYesWhether the tool completed successfully
has_moreNo
next_offsetNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by mentioning that the AI lead score is included when available, beyond what annotations provide. However, it does not describe pagination behavior or rate limits.

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

Conciseness5/5

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

Two sentences, each serving a purpose: the first states the main function and filters, the second adds the AI score note. No wasted words.

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

Completeness4/5

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

With a full schema and output schema present, the description provides sufficient context for the main use case. It lacks mention of pagination or empty results, but given the tool's simplicity and annotation coverage, it is fairly complete.

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 parameters. The description merely echoes the fact that filters are optional, adding no new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List leads for the authenticated business' with specific verb and resource. It mentions optional filters and the inclusion of AI lead score, distinguishing it from sibling tools like get_lead.

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 implies when to use this tool (when you need a list of leads) but does not explicitly state when not to use it or contrast with sibling tools. It provides clear context but lacks exclusions or alternative guidance.

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

list_numbersList Phone NumbersA
Read-onlyIdempotent
Inspect

List phone numbers owned by the accessible business(es), with capability and compliance flags. Mirrors GET /api/v1/numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
business_idNoBusiness ID to filter by (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
numbersNo
successYesWhether the tool completed successfully
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds that it returns capability and compliance flags and mirrors an API, which provides some additional context but is not deeply revealing of behavior.

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?

Two efficient sentences: the first describes the action and output, the second provides an API reference. No wasted words, though the API reference could be integrated into the first sentence.

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

Completeness4/5

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

Given the presence of an output schema and comprehensive annotations, the description covers the essentials. It explains what the tool returns and references the API, making it sufficiently complete for a simple list operation.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description in the schema already explains 'business_id'. The tool description does not add further meaning to parameters beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists phone numbers with capability and compliance flags, and it references the specific API endpoint. It uses a specific verb 'List' and resource 'phone numbers', leaving no ambiguity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'search_available_numbers'. The description does not specify context or exclusions, leaving the agent without decision support.

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

list_observability_eventsList Observability EventsA
Read-onlyIdempotent
Inspect

List a business-scoped timeline of compact call-runtime events and redacted integration-delivery attempts. Mirrors GET /api/v1/observability-events and uses bounded keyset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
cursorNoOpaque next_cursor returned by the previous page.
sourceNoEvent stream to read (default: all).
call_idNoRuntime-event call UUID filter.
outcomeNoIntegration-delivery filter.
providerNoIntegration-delivery filter.
severityNoRuntime-event filter.
object_idNoIntegration-delivery filter.
operationNoIntegration-delivery filter.
event_typeNoRuntime-event filter.
business_idNoBusiness ID (optional only when the token can access exactly one business).
object_typeNoIntegration-delivery filter.
connection_idNoIntegration connection UUID filter.
correlation_idNoRuntime-event filter.
conversation_idNoRuntime-event filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
eventsNo
successYesWhether the tool completed successfully
paginationNo
business_idNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds behavioral context: it uses bounded keyset pagination, returns compact and redacted data, and is business-scoped. This provides value beyond 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?

Two concise sentences, front-loaded with purpose. The second sentence adds essential technical details (API mirror, pagination type) without fluff. Every word 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?

Given 17 parameters with high schema coverage and an existing output schema, the description provides adequate context for initial understanding. However, it could clarify terms like 'compact' and 'redacted' to fully describe the behavior. Still, it is complete enough for most use cases.

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 high (82%), so the schema itself explains most parameters. The description adds no new parameter-level information beyond mentioning pagination, which is already documented in the cursor parameter schema. 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 clearly states it lists a business-scoped timeline of two distinct event types (call-runtime and integration-delivery). This differentiates it from sibling tools like list_conversations or list_recent_calls, which focus on different resources.

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?

No explicit guidance on when to use this tool vs alternatives (e.g., list_recent_calls for call-only events). The technical note about mirroring a REST endpoint and bounded pagination implies some usage context but lacks clear when-to-use or when-not-to-use instructions.

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

list_productsList Agent ProductsA
Read-onlyIdempotent
Inspect

List a business's agent product catalog. Mirrors GET /api/v1/products.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree-text search over name/description (optional).
categoryNoFilter by category (optional).
inventoryNoInclude current inventory quantity per product (optional).
business_idNoBusiness ID (optional only when the token can access exactly one business).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
productsNo
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description's statement 'List' adds no new behavioral insight beyond what the agent can infer from annotations. No additional traits (e.g., pagination, rate limits) are disclosed.

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?

Extremely concise—two short sentences that convey purpose and endpoint reference with no extraneous information. Front-loaded with the core action and resource.

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

Completeness5/5

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

For a simple read-only list operation with a fully described schema, an output schema present, and clear annotations, the description is complete. No additional details (e.g., pagination or sorting) are necessary for correct agent invocation.

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 100%, so the input schema already describes each parameter thoroughly. The description adds no additional semantic value beyond echoing the schema fields. Baseline of 3 is appropriate given the high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action ('list') and resource ('a business's agent product catalog'), and distinguishes from siblings by specifying 'product catalog' as opposed to other entities like agents or campaigns. The reference to the REST API endpoint adds precision.

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

Usage Guidelines3/5

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

Implied usage as a read-only list operation, but no explicit guidance on when to use this tool versus other list tools (e.g., list_agents, list_campaigns) or when not to use it (e.g., for filtering specific fields not covered by parameters).

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

list_recent_callsList Recent CallsB
Read-onlyIdempotent
Inspect

List recent calls for the authenticated business

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 20, max 100)
offsetNoZero-based pagination offset (default 0)
statusNoFilter by status (optional)
agent_idNoFilter by agent ID (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
callsNo
countNo
errorNoPresent when success is false
limitNo
offsetNo
filtersNo
successYesWhether the tool completed successfully
has_moreNo
next_offsetNo
Behavior3/5

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

Annotations already declare readOnlyHint and destructiveHint, so the safety profile is clear. The description adds minimal context (authenticated business) but does not contradict annotations.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words, but it could be slightly expanded with key details.

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

Completeness2/5

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

Despite having an output schema and good annotations, the description omits details like default ordering, recency definition, and result format, leaving gaps for a list tool.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a description; the tool description adds no further meaning beyond what is in the schema.

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 lists recent calls for the authenticated business, but it does not differentiate from sibling tools like check_call_status or get_transcript.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as check_call_status or get_transcript; lacks exclusions or context.

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

list_sms_messagesList SMS MessagesA
Read-onlyIdempotent
Inspect

List recent SMS messages for the authenticated business. Filter by conversation or direction (inbound/outbound).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 50, max 100)
offsetNoZero-based pagination offset (default 0)
directionNoFilter by direction: inbound or outbound (optional)
conversation_idNoFilter by conversation ID (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNoPresent when success is false
limitNo
offsetNo
filtersNo
successYesWhether the tool completed successfully
has_moreNo
messagesNo
next_offsetNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description does not need to repeat safety traits. It adds context about 'recent' messages and filtering, which is helpful but not extensive.

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

Conciseness5/5

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

The description is two sentences long, front-loads purpose, and contains no redundant information. Every word serves a purpose.

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 paginated list endpoint with an output schema, the description covers the main functionality and filters. Pagination is implicit via limit/offset in the schema, so no mention needed. Lacks explicit mention of default ordering or scope, but sufficient.

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 100% with descriptions for all 4 parameters. The description mentions the two filters (conversation_id, direction) but does not add significant meaning beyond the schema. 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 clearly states the tool lists SMS messages for the authenticated business, with filtering by conversation or direction. This distinguishes it from sibling tools like list_recent_calls or list_voicemails.

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 specifies when to use the tool (to list SMS messages) and mentions filtering options, but lacks explicit guidance on alternatives or when not to use it. However, the resource is unique enough to imply context.

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

list_voicemailsList VoicemailsA
Read-onlyIdempotent
Inspect

List recent voicemails for the authenticated business, including transcripts and recording URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 20, max 100)
offsetNoZero-based pagination offset (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNoPresent when success is false
limitNo
offsetNo
successYesWhether the tool completed successfully
has_moreNo
voicemailsNo
next_offsetNo
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that results include transcripts and recording URLs, which is useful but not essential given the output schema exists. It does not specify the recency window or any caching behavior, so transparency is adequate but not enhanced beyond 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 single, front-loaded sentence that immediately conveys the tool's purpose and key features. Every word contributes to understanding, with no redundancy or filler.

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 simplicity (2 optional parameters, full annotations, and an output schema), the description provides sufficient context for an AI agent to understand its function. It covers the primary elements but leaves out details about pagination behavior beyond the schema defaults, which is acceptable for a listing endpoint with low complexity.

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%, meaning the input schema already documents the parameters (limit, offset) with defaults and constraints. The description does not add any semantic meaning to these parameters, so it meets the baseline expectation without adding extra value.

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 action (List), the resource (recent voicemails), and the scope (for the authenticated business, including transcripts and recording URLs). It effectively distinguishes this tool from siblings like list_recent_calls, which handles calls instead of voicemails.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_recent_calls or list_sms_messages. The description assumes the agent will infer the context solely from the tool name and resource type, which is insufficient for optimal selection.

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

list_voicesList Voice CatalogA
Read-onlyIdempotent
Inspect

List the curated, credential-free voice catalog (id, display name, accent, language, gender, sample URL) used to configure agent voices. Mirrors GET /api/v1/voices.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNoFilter by gender: male or female.
languageNoFilter by language label, e.g. English or Spanish.
providerNoFilter by provider, e.g. vapi, 11labs, or azure.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
voicesNo
successYesWhether the tool completed successfully
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds value by stating it is 'credential-free' and returns specific fields, but does not contradict 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?

Description is one sentence plus a short API reference. It is front-loaded with the main action and output, with no wasted words.

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

Completeness5/5

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

Given the presence of an output schema, the description adequately covers the return fields and purpose. It is complete for a simple read-only list tool.

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

Parameters3/5

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

Input schema covers all 3 parameters with clear descriptions (gender, language, provider). Schema description coverage is 100%, so description adds no extra parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists a curated voice catalog, specifies fields returned (id, display name, accent, language, gender, sample URL), and states its purpose for configuring agent voices. It distinguishes from sibling tools as the only voice-related listing tool.

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?

Description implies usage for configuring agent voices but lacks explicit guidance on when to use versus alternatives. No when-not conditions or sibling comparisons are provided.

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

make_callMake CallA
Destructive
Inspect

Initiate a real outbound phone call via a KaiCalls AI agent

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesPhone number to call (E.164 format, e.g. +19085551234)
nameNoCaller/lead name (optional)
contextNoCall context or reason (optional)
lead_idNoExisting lead ID to associate (optional)
agent_idYesKaiCalls agent ID to use for the call
first_messageNoOverride the agent greeting message (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
callNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds 'real' and 'via KaiCalls AI agent', but does not disclose additional behavioral traits 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?

Single sentence, 14 words, front-loaded with key action and context. No wasted words.

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?

Description is minimal given 6 parameters and output schema. While annotations and schema cover much, the description misses context like prerequisites (e.g., agent must be active). However, output schema exists so return values are documented.

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 description does not need to add parameter information. It adds no additional meaning beyond what the schema already provides.

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 action ('Initiate'), resource ('real outbound phone call'), and context ('via KaiCalls AI agent'). It distinguishes from sibling tools like check_call_status or list_recent_calls.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives, such as prerequisites or when not to use. The purpose implies usage but lacks explicit when/when-not.

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

request_kaicalls_updateRequest KaiCalls UpdateA
DestructiveIdempotent
Inspect

Ask the KaiCalls on-behalf update broker to perform a scoped, governed mutation. Supported intents: phone.emergency_address.set, transcripts.sink.configure, agent.patch. Prefer update_agent_config for prompt/voice/model edits, configure_agent_business_rules for a single named operational prompt section, upsert_lead for lead create/update, send_sms for outbound texts, configure_staff_alerts for alert recipients/rules, and configure_textable_links for send-link setup. Mutating requests need an idempotency_key; high-risk changes need human authority. The broker returns needs_user_input, needs_approval, pending_approval, executed, denied, or unsupported — never an unaudited side effect.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorNoWho is asking: { type: agent|human|system|integration, id, display_name }.
intentYesUpdate intent: phone.emergency_address.set, transcripts.sink.configure, or agent.patch
reasonNoRequired when changing raw vapi_config; recorded in the durable audit.
targetNoTarget identifiers, e.g. { phone_number } for E911 or { agent_id } for agent.patch.
dry_runNoValidate tenant, scope, schema, authority, and policy without executing.
payloadNoIntent payload. E911: address + disclosure_acknowledged=true. transcripts: webhook_url + events. agent.patch: name, inbound_prompt, outbound_prompt, sms_prompt, first_message, voice, model, max_duration, metadata, vapi_config, transfer_enabled, transfer_phone_number.
authorityNoHow the change was authorized: { mode: none|agent_asserted|human_confirmed|dashboard_session|system_policy, confirmed_by, confirmed_at, confirmation_ref }. human_confirmed requires all three confirmation fields.
requesterNoOptional legacy requester metadata for audit trails (prefer actor).
source_refNoExternal source reference, such as a Discord message or automation run ID.
business_idNoBusiness ID. Required when the API key can access multiple businesses.
idempotency_keyNoRequired for any mutating request. Repeating a key returns the original outcome instead of re-running provider side effects.
queue_for_approvalNoWhen authority is missing, create a pending dashboard approval instead of returning needs_approval.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
errorNoPresent when success is false
intentNo
resultNo
statusNo
messageNo
successYesWhether the tool completed successfully
summaryNo
approvalNo
request_idNo
risk_levelNo
business_idNo
missing_fieldsNo
Behavior5/5

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

Beyond annotations (destructiveHint=true, idempotentHint=true), the description adds valuable context: idempotency_key requirement, human authority for high-risk changes, and possible return values ('needs_user_input, needs_approval, pending_approval, executed, denied, or unsupported — never an unaudited side effect'). No contradictions 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.

Conciseness4/5

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

The description is front-loaded with purpose, then usage guidelines, then behavioral details. It is dense but every sentence serves a purpose. Could be slightly shorter, but given the complexity it is appropriate.

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 complex tool with 12 parameters and nested objects, the description covers purpose, usage, behavior, and parameter semantics sufficiently. Output schema exists, so lack of return value description is acceptable. The only minor gap is not detailing the authority object structure, but it's in the schema.

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

Parameters4/5

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

Schema coverage is 100% with clear descriptions per parameter, so baseline is 3. The description adds value by explaining the payload specifics for each intent (E911 address, transcripts webhook_url, agent.patch fields), which goes beyond the schema's generic description and helps the agent form correct requests.

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 performs 'scoped, governed mutations' with specific intents (phone.emergency_address.set, transcripts.sink.configure, agent.patch), and distinguishes from siblings by listing preferred alternatives. The verb 'request' and resource 'KaiCalls update broker' are specific.

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

Usage Guidelines5/5

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

Explicitly provides when-to-use and when-not-to-use guidance by listing sibling tools like update_agent_config, configure_agent_business_rules, etc. Also specifies requirements for idempotency_key and high-risk changes needing human authority.

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

rollback_configRollback Agent ConfigurationA
Destructive
Inspect

Roll an agent's deployed voice configuration back to a prior assistant_config_versions snapshot — restoring greeting, voice, prompt, and scalar model params (never secrets/credentials) onto the live agent. Wraps the same version-restore logic as POST /api/v1/agents/rollback and the admin_rollback_change voice tool. Discover a target with list_config_versions or get_change_history. This OVERWRITES the live deployed config and is NOT idempotent — every rollback, including repeating the same one, records a new config version.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional human-readable reason recorded in the audit trail.
agent_idYesAgent ID to roll back.
version_idNoTarget assistant_config_versions row id to restore. One of version_number/version_id is required.
version_numberNoTarget assistant_config_versions.version_number to restore. One of version_number/version_id is required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
warningNo
agent_idNo
skipped_fieldsNo
restored_fieldsNo
new_version_numberNo
restored_from_versionNo
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false. Description adds valuable details: overwrites live config, not idempotent, records new version on each rollback, never restores secrets. 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?

Two well-structured sentences. First sentence succinctly defines the action and scope; second sentence warns about non-idempotency and side effects. No wasted words.

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

Completeness5/5

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

Together with annotations and output schema, the description fully covers the tool's behavior, scope, and side effects. No missing critical details.

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

Parameters4/5

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

Schema coverage is 100%; description adds context by explaining version_id and version_number as targeting assistant_config_versions rows and that one is required. This supplements the schema without redundancy.

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?

Description clearly states the tool rolls back an agent's voice configuration to a prior snapshot, specifying what is restored (greeting, voice, prompt, scalar model params) and what is not (secrets/credentials). It distinguishes from sibling tools like list_config_versions and get_change_history.

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?

Provides explicit context: to roll back config, discover target via list_config_versions or get_change_history. Does not explicitly state when not to use, but the non-idempotent warning implies cautious usage.

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

run_evalRun Agent EvalAInspect

Run a single eval scenario (eval_id) or every scenario for an agent (agent_id) against its live Vapi assistant and grade the result. Bills Vapi compute. Mirrors POST /api/v1/evals/run.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoBlock until the run completes (default true).
eval_idNoRun a single eval scenario by ID.
agent_idNoRun every eval scenario for this agent.
max_wait_msNoPer-run wait cap in ms when wait is true (default 60000, max 110000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
totalNo
failedNo
passedNo
run_idNo
statusNo
resultsNo
successYesWhether the tool completed successfully
completedNo
vapi_run_idNo
Behavior4/5

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

The description adds context beyond annotations by noting that the tool bills Vapi compute and mirrors a POST endpoint. It does not contradict the annotations (readOnlyHint=false, openWorldHint=true, etc.), and provides useful behavioral clues about side effects.

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

Conciseness5/5

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

Two sentences that efficiently front-load the core purpose and parameters, then add billing and endpoint context. Every word is necessary and no filler.

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 output schema exists and 100% parameter coverage, the description adequately covers inputs and side effects. It could mention error behavior or mutual exclusivity of parameters, but is mostly complete.

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 description adds value by clarifying the relationship between eval_id and agent_id (single vs. all scenarios), which is not explicit in the schema alone. With 100% schema coverage, the baseline is 3, and the extra context justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: running a single eval scenario by ID or all scenarios for an agent. It specifies the verb 'run' and the resource 'eval scenario', distinguishing it from sibling tools like list_evals.

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 indicates when to use the tool (to run evals) and mentions that it bills Vapi compute, implying caution. However, it does not explicitly state when not to use it or provide alternatives for different use cases.

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

search_available_numbersSearch Available NumbersA
Read-only
Inspect

Search the carrier for phone numbers available to purchase (real-time Twilio inventory lookup). Mirrors GET /api/v1/phone-numbers/search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 10, max 20).
countryNoTwo-letter country code (default US).
area_codeNoPreferred area code (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
available_numbersNo
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds value by specifying 'real-time Twilio inventory lookup' and 'Mirrors GET /api/v1/phone-numbers/search', providing context beyond 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?

Two concise sentences front-loaded with key information. No wasted words.

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

Completeness5/5

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

With 0 required parameters, 100% schema coverage, output schema present, and clear annotations, the description is complete enough. It conveys the purpose and nature of the tool adequately.

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?

Input schema coverage is 100% with descriptions for all parameters. The description does not add additional parameter semantics beyond what the schema provides, so 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 clearly states the verb 'Search', resource 'carrier for phone numbers available to purchase', and purpose 'real-time Twilio inventory lookup'. It distinguishes from siblings like attach_number or buy_number.

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 implies usage for finding available numbers to purchase but gives no explicit guidance on when not to use or alternatives among siblings. No exclusion criteria mentioned.

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

send_smsSend SMSA
Destructive
Inspect

Send an outbound text message from one of your agents' phone lines to a recipient, routed through the governed messaging API. Compliance gates (opt-out / Do-Not-Call / quiet-hours), rate limits, and message logging all apply. Provide from_agent_id (the sending agent), to (recipient phone in E.164), and message. Optionally link lead_id to attribute the text and respect that lead's automation-pause state.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number in E.164 format (e.g. +18135551234).
lead_idNoOptional lead ID to link and honor the lead's automation-pause state.
messageYesText message body.
from_agent_idYesAgent ID whose phone line the text is sent from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
fromNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
message_sidNo
Behavior4/5

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

Annotations indicate destructiveHint=true, which aligns with the description of sending a message. The description goes beyond annotations by explicitly mentioning compliance gates, rate limits, and message logging, as well as the behavior of honoring a lead's automation-pause state when lead_id is provided. This adds valuable behavioral context.

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 extremely concise with two sentences. The first sentence covers purpose and behavioral context, and the second sentence lists required and optional parameters. No unnecessary words, and information is front-loaded.

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 has 4 parameters and no enums, the description covers purpose, required parameters, optional parameter with context, and behavioral aspects (compliance, rate limits, logging). It does not detail the output schema or error handling, but the presence of an output schema likely covers return values, so completeness is high.

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

Parameters4/5

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

Schema coverage is 100% with all parameters described, so baseline is 3. The description adds value by clarifying which parameters are required and explaining the purpose of the optional lead_id (attribution and respecting automation-pause state), enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Send an outbound text message), the resource (from an agent's phone line to a recipient), and adds context about routing through the governed messaging API. It effectively distinguishes this tool from sibling tools like make_call or list_sms_messages.

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 compliance gates, rate limits, and message logging, providing some context for when this tool should be used. However, it does not explicitly state when not to use it or provide alternatives. Since there is no other SMS sending tool among siblings, the guidelines are adequate but not fully explicit.

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

set_webhookSet WebhookA
Idempotent
Inspect

Create or update a business outbound webhook (URL + subscribed events). Returns a webhook secret on first creation only. Mirrors POST /api/v1/webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoExisting webhook ID to update (omit to create new).
eventsNoEvent types to subscribe to (see get_webhook for the supported list).
is_activeNoEnable or disable delivery.
business_idNoBusiness ID (optional only when the token can access exactly one business).
descriptionNoHuman label for this webhook.
webhook_urlYesHTTPS/HTTP destination URL for event delivery.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
eventsNo
messageNo
successYesWhether the tool completed successfully
webhookNo
business_idNo
webhook_secretNo
Behavior4/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds the critical behavioral detail that the webhook secret is returned only on first creation, not on updates. This goes beyond annotations and helps the agent understand the side-effect difference between create and update.

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 very concise at two sentences, front-loading the purpose and then adding the key return behavior note. Every word earns its place with no redundancy or fluff.

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 presence of an output schema and detailed annotations, the description provides sufficient context. It covers the create vs update distinction and the secret return behavior. The tool has 6 parameters but all are well-documented in the schema, so the description need not repeat them. A minor gap is lack of guidance on when to set is_active or other common scenarios.

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 baseline is 3. The description does not add significant extra meaning beyond the schema descriptions. It does provide a cross-reference to get_webhook for the supported event list, which is helpful but not essential.

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 creates or updates a business outbound webhook, specifying the key aspects (URL + subscribed events). It also mentions the return behavior (webhook secret only on first creation). This distinguishes it from sibling tools like delete_webhook and get_webhook.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., when to create vs update, or when to use get_webhook to check current configuration). The description merely references the API endpoint but lacks contextual usage advice.

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

update_agent_configUpdate Agent ConfigurationA
DestructiveIdempotent
Inspect

Edit an agent's live runtime configuration — greeting/first message, inbound or SMS prompt, voice, language model, max call duration, and call-transfer settings — routed through the governed update broker so every change keeps the consent + audit trail (a versioned config snapshot and change history). Every write here is reversible: inspect what changed with get_change_history or list_config_versions, then undo it with rollback_config. Mutating changes need an idempotency_key; high-impact live changes need human authority (an authority envelope) or queue_for_approval for dashboard sign-off. For just a single named operational-rules section, prefer configure_agent_business_rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAgent display name.
actorNoWho is asking: { type: agent|human|system|integration, id, display_name }.
modelNoLanguage model selection: { provider, model, temperature }.
voiceNoVoice selection: { provider, voiceId }.
dry_runNoValidate and summarize the change without writing.
agent_idYesKaiCalls agent ID to update.
authorityNoHuman-grade authority for live changes: { mode: human_confirmed|dashboard_session|system_policy, confirmed_by, confirmed_at, confirmation_ref }.
sms_promptNoSMS reply prompt.
source_refNoExternal source reference, such as a support ticket or conversation ID.
business_idNoBusiness ID. Required when the agent has multiple accessible assignments.
max_durationNoMaximum call duration in seconds.
first_messageNoSpoken greeting / first message callers hear.
inbound_promptNoFull inbound system prompt that drives the agent.
idempotency_keyNoRequired for writes. Reuse the same key when retrying the same change.
outbound_promptNoOutbound (campaign) system prompt.
transfer_enabledNoEnable/disable live call transfer.
queue_for_approvalNoWhen authority is missing, create a pending dashboard approval instead of returning needs_approval.
transfer_phone_numberNoNumber to transfer qualified calls to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
errorNoPresent when success is false
resultNo
statusNo
messageNo
successYesWhether the tool completed successfully
summaryNo
agent_idNo
approvalNo
request_idNo
risk_levelNo
business_idNo
Behavior5/5

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

The description adds significant behavioral context beyond annotations: it explains that changes go through a governed update broker that maintains consent and audit trails, that every write is reversible (referencing get_change_history, list_config_versions, rollback_config), and that idempotency_key is required. This aligns with the annotations (destructiveHint, idempotentHint) and does not contradict them.

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 a single paragraph that is front-loaded with the primary action and then provides detailed behavioral and usage information. It is slightly long but every sentence contributes value. It could be broken into multiple sentences for readability but is otherwise well-structured.

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

Completeness5/5

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

Given the tool's complexity (18 parameters, nested objects, required authority), the description covers behavioral aspects (reversibility, audit trail, idempotency), references related tools (get_change_history, rollback_config, configure_agent_business_rules), and explains authority requirements. The existence of an output schema means return values are not needed in the description. It is complete for an AI agent to select and 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?

The input schema already has 100% description coverage for all 18 parameters, so the baseline is 3. The description groups parameters into categories (greeting, prompts, voice, model, etc.) and adds context like 'live runtime configuration' and reversibility, which adds marginal value but does not delve into parameter-level semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool edits an agent's live runtime configuration and lists the specific fields it can modify (greeting, prompts, voice, model, etc.). It also distinguishes itself from the sibling tool `configure_agent_business_rules` by noting that the sibling is for a single operational-rules section, making the purpose very specific and differentiated.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives, stating 'For just a single named operational-rules section, prefer configure_agent_business_rules.' It also explains the requirements for idempotency_key, authority, and queue_for_approval, giving clear context for usage scenarios.

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

upsert_knowledgeCreate or Update Agent KnowledgeAInspect

Create a new agent knowledge base entry, or update one when id is provided. Mirrors POST /api/v1/knowledge. Creating requires title, content, and content_type.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoKnowledge item ID to update (omit to create).
tagsNo
titleNo
contentNo
categoryNo
business_idNoBusiness ID. Required for create when the token can access multiple businesses.
content_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
successYesWhether the tool completed successfully
knowledgeNo
Behavior3/5

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

The description discloses the write behavior (create/update), consistent with `readOnlyHint=false` in annotations. No contradictions are present. It adds the API endpoint mirroring detail but lacks information on side effects, authentication requirements, or rate limits, which are not covered by annotations beyond their basic hints.

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

Conciseness5/5

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

The description is concise, consisting of two short sentences. It front-loads the core purpose and provides essential usage guidance without unnecessary words or repetition.

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

Completeness2/5

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

Given the tool has 7 parameters, an upsert operation, and a defined output schema, the description is incomplete. It does not explain the return value, error scenarios, or behavior for optional fields. The low schema coverage further compounds the lack of completeness.

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?

With 29% schema description coverage, the burden on the description is high. The description only mentions that creation requires `title`, `content`, and `content_type`, but does not explain other parameters like `tags`, `category`, or `business_id`. This leaves significant gaps in understanding the input parameters.

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 purpose: create or update a knowledge base entry. It uses specific verbs ('Create', 'update') and resource ('agent knowledge base entry'). The mention of `id` differentiates between create and update, distinguishing it from sibling tools like `list_knowledge`.

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 explicitly states when to use the tool for creation versus update based on `id` presence. It also specifies required fields for creation. However, it does not provide explicit guidance on when not to use the tool or suggest alternatives among siblings, leaving some ambiguity.

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

upsert_leadCreate or Update LeadA
Destructive
Inspect

Create a new lead or update existing leads for the authenticated business, routed through the governed leads API (business access-checked, usage-logged, and audited). To create one, pass lead with at least one of name/phone/email plus optional status/source/notes/agent_id/etc. To update, pass updates: an array of { id, ...fields } for one or many existing leads (status, name, phone, email, notes, address, city, state, zip). Updates are access-checked per row and report partial success.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNoFields for a NEW lead: name, first_name, last_name, phone, email, status, source, notes, address, city, state, zip, agent_id, message. At least one of name/phone/email is required.
updatesNoUpdate existing leads. Each item is { id, ...fields } where fields are a subset of name, first_name, last_name, email, phone, status, source, notes, address, city, state, zip. Max 100 per call.
business_idNoBusiness ID. Required for create when the API key can access multiple businesses.

Output Schema

ParametersJSON Schema
NameRequiredDescription
leadNo
errorNoPresent when success is false
failedNo
resultsNo
successYesWhether the tool completed successfully
updatedNo
operationNocreate or update
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false. The description adds context: updates are access-checked per row, report partial success, and the API is governed (business access-checked, usage-logged, audited). This adds behavioral nuance beyond annotations.

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

Conciseness4/5

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

The description is informative but not overly verbose. It is structured into two distinct use cases (create vs update) with clear parameter requirements. There is some redundancy with the schema but it remains concise.

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 has an output schema and nested objects, the description covers input semantics adequately. It explains both operations and important constraints (partial success, max 100 updates). No significant gaps remain.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by clarifying that for create, at least one of name/phone/email is required, and for updates, each item requires an id and can include a subset of fields. It also notes a max of 100 updates per call.

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 title 'Create or Update Lead' and description clearly state the tool's dual purpose: creating a new lead or updating existing leads. It distinguishes from siblings like get_lead and list_leads by specifying the upsert behavior.

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 explicitly indicates when to use each mode: pass `lead` for create, `updates` for update. It mentions access-checking and logging. However, it does not provide explicit when-not-to-use guidance or list alternatives beyond the tool itself.

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

upsert_productCreate or Update Agent ProductAInspect

Create a new product row, or update one when id is provided. Mirrors POST /api/v1/products. Creating requires name and business_id. Pass quantity to set/update inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoProduct ID to update (omit to create).
skuNo
nameNo
priceNo
categoryNo
quantityNoInventory quantity to set (optional).
attributesNo
business_idNoBusiness ID. Required for create when the token can access multiple businesses.
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when success is false
productNo
successYesWhether the tool completed successfully
Behavior3/5

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

Annotations already indicate the tool is not read-only, and the description confirms it mutates data. The description adds the REST endpoint mirror and inventory update behavior. No contradictions, but limited extra behavioral detail.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core action and conditions. Every sentence adds value without redundancy.

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?

The description covers the core behavior and key parameters, but with 9 parameters and low schema coverage, it omits details on error handling, default values, or behavior of other fields. The presence of an output schema reduces the need for return value documentation.

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 low (33%), and the description clarifies the 'quantity' parameter and the requirements for 'name' and 'business_id' during create. However, most parameters (sku, price, category, attributes, description) lack additional semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Create a new product row, or update one when id is provided') and the resource ('product'). It distinguishes from sibling tools like list_products by focusing on upsert operations.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use create vs update (by providing id) and prerequisites (name and business_id for create). However, it does not explicitly exclude alternative tools or provide when-not-to-use guidance.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources