Skip to main content
Glama
Ownership verified

Server Details

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

Status
Unhealthy
Last Tested
Transport
Streamable HTTP
URL
Repository
KaiCalls/kaicalls-mcp
GitHub Stars
0
Server Listing
KaiCalls MCP Server

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.1/5 across 44 of 51 tools scored. Lowest: 3.3/5.

Server CoherenceB
Disambiguation3/5

Tools have distinct purposes overall, but there is overlap (e.g., update_agent_config vs configure_agent_business_rules vs request_kaicalls_update) and several tools handle similar concepts (e.g., get_balance vs list_overage_charges). Descriptions are detailed and help, but the sheer number forces agents to carefully parse intent.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., create_agent, list_agents, send_sms). Minor deviations include longer multi-word names (configure_agent_business_rules) and a single outlier (request_kaicalls_update), but overall the pattern is predictable.

Tool Count2/5

51 tools is excessive for an MCP server. While the domain is broad, this many tools overloads the agent's selection space, making it hard to pick the right one. A more focused split into multiple servers would improve usability.

Completeness3/5

The tool set covers many aspects (numbers, agents, calls, SMS, leads, webhooks, billing, etc.), but notable gaps exist: no get_agent, no delete_agent, no update or delete campaign, and no delete lead. These missing operations may cause agent failures in common workflows.

Available Tools

51 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
Behavior4/5

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

Annotations already indicate idempotentHint=true and readOnlyHint=false, so the description adds context about not purchasing and about routing to an agent. However, it could clarify behavior when assigning an already assigned number (e.g., is it idempotent or raises an error?), which would improve 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 very concise: one sentence for the main action, plus two short sentences for clarification and API reference. No redundancy, front-loaded with key information, and every sentence 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 three parameters, full schema coverage, annotations, and an output schema (not shown but present), the description covers the essential context: what it does, what it doesn't do, and how it relates to sibling tools. It is complete without needing to explain return values.

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% with clear descriptions for each parameter. The tool description does not add significant new meaning beyond what the schema provides (e.g., 'assign to a business' and 'route to an agent' are already in parameter descriptions). 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 ('Assign a phone number already in the KaiCalls registry pool to a business') and distinguishes it from purchasing new numbers by explicitly saying 'Does NOT purchase a new number' and directing to alternative tools. The verb 'Assign' plus specific resource and scope makes the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit when-not-to-use guidance: 'Does NOT purchase a new number — use search_available_numbers + buy_number for that.' It also implies the number must already be in the registry, giving clear context for when to use this tool versus siblings.

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
DestructiveIdempotent
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, so the purchase is APPROVAL-GATED: without human-grade authority (an authority envelope with mode human_confirmed, or a dashboard approval) the tool executes nothing and returns a pending_approval record the business owner approves or denies from the dashboard — relay the returned confirmation text to them. Agent-initiated purchases never run unattended. Does not auto-attach an agent; call attach_number afterward to route it. Mirrors POST /api/v1/phone-numbers/purchase via the numbers.purchase update intent. 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
actorNoWho is asking: { type: agent|human|system|integration, id, display_name }.
reasonNoOptional reason recorded in the durable audit.
dry_runNoValidate tenant, scope, and policy without buying anything.
agent_idNoAgent ID to route this number to directly once purchased (optional; requires the number to also be voice-runtime-imported, which is not guaranteed at purchase time — prefer a follow-up attach_number call).
authorityNoHow the purchase was authorized: { mode, confirmed_by, confirmed_at, confirmation_ref }. human_confirmed requires all three confirmation fields; anything weaker returns pending_approval.
source_refNoExternal source reference, such as a ticket or automation run ID.
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.
idempotency_keyNoStable key for the purchase request; repeating it returns the original outcome. Defaults to a key derived from the phone number — pass your own to retry a previously failed purchase.
queue_for_approvalNoWhen authority is insufficient, create a durable dashboard approval (default true). Set false to get needs_approval and retry yourself with the same idempotency_key once a human confirms.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
errorNoPresent when success is false
resultNoOn executed: { number, vapi_registered, agent_attached, compliance: { high_risk_category, disclosure_note } }.
statusNo
messageNo
successYesWhether the tool completed successfully
summaryNo
approvalNo
request_idNo
risk_levelNo
business_idNo
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=true), the description adds money spending, approval-gating, pending_approval, no unattended runs, and compliance. 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.

Conciseness4/5

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

Well-structured, front-loaded with purpose and warning. Slightly long but every sentence adds value.

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?

Comprehensive: covers approval, idempotency, compliance, and relationship to other tools. Output schema exists, so return values not needed.

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 100%, so baseline 3. Description adds value: agent_id not guaranteed, idempotency_key defaults, queue_for_approval behavior.

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 purchases a phone number from the carrier and registers it to a business. It distinguishes from sibling tools like attach_number (not auto-attached) and search_available_numbers (precursor).

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 explains when to use and the critical approval-gating behavior. Mentions post-purchase step (attach_number). Does not explicitly list alternatives, but the context is clear.

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=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no additional behavioral context, such as rate limits or permissions. However, for a simple read operation, the annotations are sufficient.

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, direct sentence with no superfluous words. It is perfectly concise and front-loaded with the verb and resource.

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 (one parameter, no nested objects, output schema present), the description is adequate. It could potentially mention that the output contains status information, but since output schema exists, this is not a critical gap.

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%, and the parameter description is clear. The tool description merely restates the parameter purpose ('by its ID'), adding no new information 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 verb (check), the resource (status of a call), and the method (by ID). It effectively distinguishes this tool from siblings like get_call_recording 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 implies usage when you have a call ID and want its status, but it does not explicitly state when to use this tool versus alternatives like list_recent_calls, nor does it provide any 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.

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
Behavior5/5

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

The description adds significant behavioral context beyond annotations: mentions safe governance via 'governed agent.patch broker', dry-run capability, and approval queue. Annotations indicate destructive and idempotent nature, and the description aligns 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 two sentences long, front-loaded with the core action, and every word adds value. 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 the tool's complexity (11 params, nested objects, output schema exists), the description covers purpose, governance, and key scenarios. It does not detail output, but output schema compensates. A minor gap is the lack of mention of the authority parameter's role.

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 all 11 parameters with detailed descriptions (100% coverage). The description adds high-level context (e.g., rule examples) but does not elaborate on individual parameters beyond what schema 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 verb (add/replace), resource (operational rules section inside agent inbound prompt), and specific use cases (cross-business handoffs, callback language, etc.). It distinguishes from siblings by focusing on business rules, which is unique among the listed 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 provides clear context and several usage examples, but does not explicitly state when not to use this tool or mention alternatives. However, given the sibling list, the intended use is well-understood.

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 already indicate destructiveHint=true and idempotentHint=true. The description adds transparency about the dry_run parameter for validation without writing, but does not further elaborate on destructive effects (e.g., overwriting existing configurations).

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 consists of two sentences: the first clearly states the tool's function, and the second lists specific use cases. It is front-loaded with no unnecessary 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?

With 7 parameters, nested escalation_rules, and no output schema shown, the description is brief. It covers high-level use cases but omits details about the escalation rule structure and how configuration interacts with existing settings. Adequate but could be more 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 baseline is 3. The tool description adds high-level context but does not provide additional meaning beyond what the schema already offers 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 configures staff alert recipients and post-call escalation rules, and lists specific use cases (emergency/urgent texts, callback alerts, etc.). This distinguishes it from sibling tools like configure_agent_business_rules.

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 context for when to use (emergency/urgent texts, callback alerts, etc.) but does not mention when not to use or alternative tools. However, given the sibling list, no direct alternative exists, making the guidance sufficient.

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?

Annotations provide readOnlyHint=false, destructiveHint=false, etc. The description adds valuable context: mutations are versioned and reversible, and compliance handling (AI-disclosure, consent) is automatic for high-risk categories. This goes beyond annotations, though rate limits or idempotency are not covered.

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: purpose, versioning/reversibility, compliance. No redundancy, front-loaded with key info. Efficient and well-structured.

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 (8 params, nested objects, output schema exists), the description covers creation, versioning, and compliance. It references relevant sibling tools for history. Return value is not described but output schema is present. Could mention non-idempotency, but annotations already indicate idempotentHint=false.

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 good descriptions. The description adds extra context for voice_catalog_id (preferred catalog id from list_voices), providing value beyond the schema. Other parameters are adequately covered in 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 it creates a new KaiCalls voice agent with specific components (system prompt, greeting, voice, model). It distinguishes from sibling tools like update_agent_config and list_agents by referencing POST /api/v1/agents and the versioning feature.

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 when to use this tool (creating agents) and references sibling tools like get_change_history and list_config_versions for inspecting version history. It does not explicitly state when not to use it, but the context is clear.

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, so description adds value by noting that TCPA/consent gating still applies and that launching queues calls. 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 sentences efficiently convey purpose and key behavioral nuances without redundancy or excess text.

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?

Covers creation, launch behavior, gating, role requirement, and references output schema existence. For a complex tool with nested objects and multiple parameters, this is 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%, so description adds minimal extra parameter detail. It provides context for the launch parameter and cadence_config structure, but the schema already covers these adequately.

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 creates an outbound call campaign with cadence and lead batch, and optionally launches it. This specific verb+resource combination distinguishes it from sibling tools like list_campaigns.

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?

It explains when to use (creating campaigns) and provides context about launching, gating, and role requirements. However, it lacks explicit when-not-to-use or alternatives, which keeps it from a 5.

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
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, making the destructive nature clear. The description adds 'Mirrors DELETE /api/v1/webhooks' but no further behavioral context (e.g., irreversibility, permission requirements). 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?

Extremely concise: two sentences, no fluff. The core action and HTTP equivalent are 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?

For a simple delete-by-ID tool, the description adequately explains its function. Output schema exists, so return value explanation is unnecessary. No missing critical details.

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 both parameters with descriptions (100% coverage). The description does not add additional meaning beyond 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 action ('Remove') and the resource ('business outbound webhook by ID'), distinguishing it from sibling tools like set_webhook or 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 Guidelines4/5

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

The description implies deletion by ID, which clearly differentiates from create/update (set_webhook) and read (get_webhook) tools. However, no explicit when-not-to-use or alternative suggestions are provided.

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 adds that it 'Mirrors DELETE /api/v1/phone-numbers', which provides minor additional context about the API pattern, but does not elaborate on side effects or authorization needs.

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 the primary action, efficient and free of redundancy. Every sentence 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?

Given the tool's simplicity, an output schema exists, and the description covers the core operation. It could mention that the number becomes available for reassignment, but it is otherwise 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%, with both parameters having clear descriptions. The description does not add any additional meaning beyond the schema, 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?

The description clearly states the tool's action: 'Release a phone number from a business back to the unassigned registry pool.' It uses a specific verb ('Release') and resource ('phone number'), and distinguishes from sibling tools like 'attach_number' by being the inverse operation.

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 (e.g., 'detach_number' vs 'attach_number'). There is no mention of prerequisites 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_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
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds value by enumerating specific metrics returned, providing context beyond structured fields. No behavioral 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?

Single sentence, front-loaded with purpose, no redundancy. Every word adds value.

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 output schema exists, no need to explain return values. Description covers all key aspects for a simple analytics tool with one parameter.

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 'days' parameter. The description adds 'over a recent time window' which weakly aligns but does not exceed the schema's detail. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states the tool gets a dashboard summary with specific metrics (lead counts, conversion rate, call volume, top agents, business outcomes). Verb 'Get' and resource 'analytics' are distinct from siblings like get_balance 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 Guidelines3/5

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

Implied usage: over a recent time window. No explicit guidance on when to use this vs alternatives like list_recent_calls or get_usage. Context from sibling names suggests analytics summary, but no exclusions or comparisons.

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
Behavior3/5

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

Annotations already indicate it is read-only, idempotent, and non-destructive. The description adds that it mirrors a GET endpoint and clarifies the scope ('across every business the caller can access'), but does not disclose additional behavioral traits such as rate limits or response structure beyond the output 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?

Two concise sentences: the first states the purpose, the second references the API endpoint. No redundant or extraneous 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?

Given the tool has no parameters and includes an output schema, the description sufficiently covers what the tool does and what it returns (minutes-used and subscription status). No missing information for an agent to correctly select and invoke the tool.

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?

There are zero parameters, so the description does not need to explain them. The schema has no properties, and the description does not mislead. Baseline for 0 parameters is 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 explicitly states the verb 'Get' and the resource 'per-business minutes-used and subscription status' across all accessible businesses. It clearly differentiates from sibling tools like get_usage, get_business_info, etc., by specifying the exact data returned.

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 the tool is for checking balance and subscription status across businesses, but does not provide explicit guidance on when to use it versus alternatives like get_usage or get_analytics. No exclusions or prerequisites are mentioned.

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
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, covering safety. The description adds value by specifying the return content (agent count, recent call stats), which goes beyond what annotations provide. No contradictions with annotations. It could mention if there are any rate limits or if the 'recent call stats' have a specific time window.

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 front-loads the action ('Get') and immediately lists the key data categories. No unnecessary words or repetition.

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 tool with one optional parameter and clear annotations, the description provides sufficient context. It explains what the tool returns and implies the optional business_id behavior (defaulting to first accessible). The presence of an output schema further reduces the need for explicit return format details.

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 the single parameter (business_id) with a description. The tool description does not add additional semantic detail beyond what the schema offers, 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?

The description clearly states the tool's function: retrieving business information, agent count, and recent call stats. It specifies the resource ('business') and the specific data points, distinguishing it from siblings like list_recent_calls or get_analytics by focusing on a combined business-level overview.

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 context (when business info with stats is needed) but lacks explicit guidance on when to use this tool versus alternatives, such as get_analytics for broader analytics or list_recent_calls for purely call lists. No 'when not to use' or scenario-based guidance is provided.

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
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that it returns a URL for audio, providing useful context beyond the annotations. 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?

Single sentence with no wasted words, front-loaded with purpose. Highly 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 tool with 1 parameter and an output schema, the description fully explains the purpose and usage context. No gaps.

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 clear description for call_id. The description adds no additional meaning beyond the schema, 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?

The description clearly states the verb 'get', the resource 'real call recording URL', and the purpose 'so reviewers can listen to the voice/audio instead of relying only on the transcript'. It effectively distinguishes from sibling tool 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 Guidelines4/5

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

The description implies when to use (when audio is needed) but does not explicitly state when not to use or mention alternatives like get_transcript. However, 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_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
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 safety profile is fully covered. The description adds context that the data comes from admin_change_history and is the same as the voice tool reads, but this is moderate added 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?

The description is two sentences with no wasted words. The first sentence states the core function and fields, the second adds context about mutation sources and reversibility. It is front-loaded and efficient.

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 need not detail return values. It adequately covers the tool's purpose, data source, relationship to other tools (rollback_config and mutation tools), and that it logs all agent mutations. No gaps are apparent for this 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 clear parameter descriptions (agent_id and limit with defaults). The tool description does not add additional parameter semantics beyond the schema, so the 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 tool lists an agent's config-change audit trail with specific fields (change_type, change_source, old/new value, timestamp) and identifies the data source (admin_change_history). It distinguishes from siblings by explicitly mentioning rollback_config and the tools that generate the logged mutations, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides implicit context: use this tool to view change history, and it notes that the history is reversible with rollback_config, hinting at workflow. However, it doesn't explicitly state when not to use or list alternative audit tools, so guidance is present but not exhaustive.

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=true and destructiveHint=false. Description adds 'Mirrors GET /api/v1/...' confirming idempotency, but no 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?

Two sentences, front-loaded with purpose, 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 simple tool with one required parameter, full annotations, and output schema, the description is complete 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 coverage is 100%; description adds no extra meaning about the parameter format or constraints beyond the schema's own description.

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 verb 'Get', resource 'single SMS conversation thread', and parameter 'by ID'. It distinguishes from sibling 'list_conversations' which lists multiple 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?

Description implies use when you have a specific conversation ID and need a single thread. No explicit when-not-to-use or alternatives listed, but context is clear.

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
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, making safety clear. The description adds that the output includes AI lead score and explanation, which is consistent. No behavioral traits beyond annotations are disclosed, but 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?

The description is a single, concise sentence (17 words) that front-loads the key purpose and distinctive feature. No superfluous words or repetition.

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 an output schema exists, return values are covered externally. The description identifies the resource, key included fields (score and explanation), and is sufficient for a get-by-id operation. Minor gap: no mention of error handling (e.g., not found), but acceptable for standard reads.

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% and the parameter 'lead_id' is already described in the schema as 'The lead ID to fetch'. The tool description does not add any additional meaning or context for the parameter beyond what the schema 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 'Get full details for a single lead by ID', specifying the verb, resource, and scope. It distinguishes from siblings like list_leads (list) and upsert_lead (create/update) by focusing on a single lead and including 'latest AI lead score and explanation'.

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 needing full details of a specific lead, but provides no explicit guidance on when to use vs alternatives (e.g., list_leads for multiple leads, upsert_lead for modification). No when-not-to-use or alternative mentions.

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
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds detailed behavioral context by listing what data is returned (escalation rules, voice/model/greeting metadata). 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?

The description is a single, well-structured sentence front-loading the core purpose and then enumerating specific contents. Every word adds value, no fluff.

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 simplicity (one optional param, output schema exists), the description fully covers its role: auditing the operational setup before making changes. No gaps.

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?

With 100% schema description coverage, the baseline is 3. The description does not add extra meaning to the single parameter beyond what the schema provides, but it also doesn't detract.

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 'Audit' and the resource 'business-level operational setup', and lists specific components (staff alert recipients, SMS/email flags, etc.). It distinguishes itself from sibling tools that configure or change settings.

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 says 'before changing a client account', indicating when to use this tool. While it doesn't name alternatives, the context and sibling list imply the appropriate workflow. A small improvement would be to explicitly state 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_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
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, indicating a safe, read-only operation. The description adds value by specifying that the call must be completed and that both transcript and summary are returned. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential information without any wasted words. It is appropriately concise and structured.

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 simplicity of the tool (one param, output schema exists, rich annotations), the description is mostly complete. It could optionally mention that the output includes both transcript and summary, but the title already implies this. The condition 'completed call' is critical and included.

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 documents the single parameter 'call_id' with a description. The tool description does not add any additional meaning or constraints beyond what the schema 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 verb 'Get' and the resource 'transcript and summary of a completed call'. It precisely defines the tool's scope, distinguishing it from siblings like get_call_recording or get_conversation by specifying 'completed call'.

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 the tool should be used when one needs the transcript and summary of a completed call, but it does not explicitly state when to use it over alternatives (e.g., get_conversation, check_call_status) or provide exclusions. The usage context is clear but not fully elaborated.

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
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 that it mirrors a specific API endpoint, but does not disclose any additional behavioral traits like rate limits or authentication requirements. With annotations, bar is lower; the description adds minimal extra context.

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

Conciseness5/5

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

The description is two sentences, with the primary action front-loaded. Every word adds value, and there is no verbosity.

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 the tool has an output schema, the description need not explain return values. It mentions key fields in the events. All parameters are documented in the schema. It is nearly complete, but could mention ordering or pagination for added context.

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 provides descriptions for all three parameters. The tool description does not add any extra meaning or formatting beyond what the schema offers. 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' and the resource 'recent API usage events' with specific fields (endpoint, method, status code, cost). It distinguishes from sibling tools by focusing on usage events for the caller's account, which is a unique resource among many CRUD tools.

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 context ('for the caller's account') but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the 50+ sibling tools. The context is clear but lacks exclusions.

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
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 'Mirrors GET /api/v1/webhooks' which provides endpoint context. 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?

Extremely concise: a single sentence with a clear action, resource, and an endpoint reference. 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 simple tool (one optional parameter, no nested objects, output schema exists), the description fully covers the purpose and behavior. No missing context.

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 'business_id', and its schema description is adequate. The tool description does not add additional 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?

Clearly states 'List the configured outbound webhook(s)' with specific resource and action, and includes 'supported event types'. 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 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 versus alternatives. However, the name and description make it clear for reading webhook config, and siblings include set/delete, so usage is implied but not explicit.

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

list_agentsList AgentsB
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 indicate this is a safe, read-only, idempotent operation. The description adds one behavioral detail ('available to the authenticated account') but does not disclose pagination behavior, ordering, or error handling. With annotations present, the bar is lower, and this is minimally adequate.

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 sentence of 8 words, front-loaded with the verb 'List'. Every word is essential with no redundancy.

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

Completeness4/5

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

For a simple listing tool with optional parameters and an output schema, the description covers the core purpose and scope. It could mention pagination behavior, but the input schema documents limit/offset. The output schema documents return values, so this is reasonably 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 tool description adds no additional meaning beyond what the schema provides, resulting in a baseline score of 3.

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 agents and specifies scope ('available to the authenticated account'). However, it does not explicitly distinguish from sibling tools, though sibling list tools target different resources, making differentiation implicit rather than explicit.

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. There is no mention of conditions for use, prerequisites, or when to avoid using it.

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 readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description simply confirms a read operation. It adds no additional behavioral context (e.g., authentication requirements, pagination behavior) beyond what annotations and schema 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 that immediately conveys the tool's purpose without unnecessary words. Every part of the sentence adds value.

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 a well-documented input schema with 100% coverage, annotations covering safety, and an output schema (though not detailed here), the description is sufficient for an agent to understand and invoke the tool correctly. No additional context is necessary for this 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?

All three parameters (limit, offset, status) are fully described in the input schema. The description does not add any extra meaning or usage guidance beyond what is already in the schema, 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 action ('List') and the resource ('outbound call campaigns') and specifies the scope ('for the authenticated business'). This distinguishes it from sibling tools like list_agents or list_numbers, which target different entities.

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 like create_campaign (for creating) or get_operational_settings (for viewing config). There is no mention of filtering by status or pagination as intended use cases, nor are any exclusions given.

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, destructiveHint=false, idempotentHint=true. Description adds extra transparency by stating results are 'hashed, redacted' and include 'rollback lineage', going beyond basic safety cues.

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, front-loaded with main action. Each sentence adds distinct value: listing intent and single-version fallback.

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 output schema exists and annotations are present, the description covers the tool's purpose, parameter usage, and behavioral result (redaction, lineage). No evident gaps.

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 all three parameters with descriptions (100% coverage). Description adds the dual behavior of version parameter, but this is a modest addition; 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?

Description clearly states it lists an agent's config version history, with optional single-version fetch. Distinguishes from siblings like rollback_config or update_agent_config through its list-specific action.

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?

Provides usage guidance on omitting or including the version parameter, but lacks explicit when-to-use or when-not-to-use compared to sibling tools (e.g., no mention of alternatives like rollback_config for rollback actions).

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
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds minimal behavioral info (ordering, API mirror). No additional disclosure of side effects or auth needs 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, front-loaded with key action and resource. 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?

Low complexity tool with 1 optional param. Output schema exists, so return values are covered. Minor missing detail on pagination continuation (e.g., next page token), but overall sufficient for a list endpoint.

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 'limit' parameter, with clear description. The tool description adds no extra parameter information beyond what is already in 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?

Clear verb 'list' with specific resource 'SMS conversation threads' and scope 'authenticated business'. Includes ordering 'most recent first'. Distinguishes from sibling tools like 'get_conversation' (single) and 'list_sms_messages' (messages within a conversation).

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 or avoid this tool. Implicitly, it's for listing all conversations, but no comparison to alternatives (e.g., get_conversation for a specific one).

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 declare readOnlyHint, idempotentHint, and non-destructive. Description adds value by clarifying the content ('canned mock-conversation eval scenarios') and the REST endpoint, which gives behavioral cues 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 with no wasted words. Front-loaded with the main purpose and immediately followed by clarifying context. Ideal structure for a simple list tool.

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, a good output schema, and informative annotations, the description is sufficiently complete. It could optionally mention pagination or sorting, but that is minor.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for agent_id. The description's mention of 'for an agent (or all accessible agents)' aligns with the schema but adds no new semantic details beyond what the parameter description 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?

Description clearly states it lists 'canned mock-conversation eval scenarios' for an agent or all accessible agents, with a specific verb and resource. It distinguishes itself from siblings like run_eval by focusing on listing rather than executing.

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?

Provides usage context (filter by agent or all) and mentions the API endpoint, but does not explicitly state when to use this tool vs alternatives like run_eval or list_conversations. No exclusion or when-not guidance is given.

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=true and destructiveHint=false. The description adds the API mirror, confirming no side effects, but doesn't introduce new 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 succinct sentences with no extraneous information, front-loading the core purpose effectively.

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?

Adequately complete for a simple list operation with output schema and annotations. Could mention pagination or ordering, but not critical given sibling tools and context.

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 all parameters are already documented in the input schema. The description adds no additional parameter meaning beyond what the schema 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 uses a specific verb 'List' and resource 'agent knowledge base entries for a business', clearly distinguishing it from sibling list tools. The API mirroring adds further clarity.

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 list_agents or list_numbers. The description only states what it does, not when to choose it.

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, destructiveHint=false, idempotentHint=true. The description adds the behavioral detail that the tool includes the latest AI lead score when available, which goes beyond the schema. It does not contradict annotations and provides useful 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?

Two sentences, no wasted words. The main purpose is stated first, followed by key features. Every sentence adds value.

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 a full parameter schema and an output schema, the description is complete. It mentions the AI lead score, which is a crucial output detail not obvious from the schema. No critical information is missing.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions 'optional status/source/agent filters' which mostly repeats parameter descriptions. It does not add new meaning or usage patterns 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 lists leads for the authenticated business, mentions optional filters by status/source/agent, and highlights inclusion of AI lead scores. The verb 'list' and resource 'leads' are explicit, and it distinguishes from sibling tools like get_lead (single lead) or list_agents.

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 this tool is for listing leads with filters, but does not explicitly state when to use it versus alternatives like get_lead or upsert_lead. No exclusions or alternative recommendations are provided, so guidance is implied but not explicit.

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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds minor context by stating it 'mirrors GET /api/v1/numbers' and mentions capability/compliance flags, but these do not significantly extend 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.

Conciseness5/5

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

Two succinct sentences deliver the core purpose and a useful API reference. No wasted words, and the structure is front-loaded with the key action.

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 one parameter and an output schema, the description is adequate. It covers the essence without missing critical information. However, it could mention pagination or sorting behavior if present.

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 one optional parameter (business_id) with a clear description. Schema coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond the schema's description of the 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 'List phone numbers owned by the accessible business(es), with capability and compliance flags.' It uses a specific verb and resource, and the mention of mirroring the API reinforces the purpose. This distinguishes it from sibling tools like attach_number or buy_number, which are actions rather than listings.

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—listing numbers owned by the business—but does not provide explicit guidance on when to use this tool versus alternatives like search_available_numbers. There is no mention of prerequisites or context for filtering.

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 indicate readOnlyHint=true and idempotentHint=true, but the description adds transparency by mentioning it mirrors a REST endpoint and uses bounded keyset pagination, which is 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 sentences with no redundancy: the first states the core purpose, and the second adds technical detail (REST mirror and pagination). Every word is informative.

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 (17 parameters, many filters) and the presence of an output schema, the description covers the high-level functionality and pagination. However, it does not clarify what 'compact' or 'redacted' means, leaving minor gaps.

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?

With 82% schema description coverage, the baseline is 3. The description does not elaborate on any parameters beyond the pagination mention, so it neither improves nor degrades the parameter understanding from 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 uses a specific verb ('List') and identifies the resource ('business-scoped timeline of compact call-runtime events and redacted integration-delivery attempts'), clearly distinguishing it from sibling list tools like list_conversations or list_agents.

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 observability events but does not explicitly state when to use or avoid this tool, nor does it mention alternatives. The context is inferred from the purpose, not direct guidance.

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

list_overage_chargesList Overage ChargesA
Read-onlyIdempotent
Inspect

List the idempotent overage-minutes ledger from billing_overage_charges (legacy per-minute-overage tiers only — 2026 plans carry no overage). GET /v1/balance/get_balance only returns an aggregate; this returns the underlying per-period ledger rows. Mirrors GET /api/v1/overage-charges.

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

Output Schema

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

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

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description reinforces idempotency and adds legacy-only context, which is critical behavioral information beyond annotations. 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.

Conciseness4/5

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

Description is two sentences, front-loaded with purpose. However, the second sentence includes technical API paths that might not be necessary for an agent. No wasted words, but could be slightly more streamlined.

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 clear annotations, the description covers the tool's purpose, scope, and distinction from siblings. It lacks mention of pagination or parameter usage, but overall is reasonably complete.

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

Parameters2/5

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

Schema description coverage is 20% (only business_id has description). The description does not explain any parameter semantics, such as the meaning of from, to, limit, or status fields. For a tool with 5 parameters and low schema coverage, this is insufficient.

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 the overage-minutes ledger, distinguishes from get_balance which returns aggregate, and specifies it's for legacy per-minute-overage tiers only. It provides a precise verb 'List' and resource 'overage-minutes ledger'.

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 states when to use: to get underlying per-period ledger rows instead of aggregate from get_balance. Also notes it's only for legacy tiers, not 2026 plans, providing clear exclusion criteria.

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?

The annotations already declare readOnlyHint=true and idempotentHint=true, so the description need not restate safety. It adds 'Mirrors GET /api/v1/products,' which reinforces behavior but does not disclose new traits like pagination 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 two short sentences, each adding value. It is front-loaded and contains no filler or redundancy.

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

Completeness4/5

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

Given the existence of an output schema and full parameter descriptions, the description is mostly complete. It could mention pagination or the scope of products returned (e.g., all products for the business), but overall it suffices 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?

All four parameters have descriptions in the schema (100% coverage), so the description does not need to add parameter details. It provides no additional meaning beyond the schema, meeting the baseline expectation.

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') and the resource ('a business's agent product catalog'), and the sibling tools include list_agents and list_campaigns, so it is well-distinguished. The mention of mirroring an API further concretizes the purpose.

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 is provided on when to use this tool versus alternatives (e.g., when to use upsert_product instead). The description only states what the tool does, without indicating conditions or exclusions.

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
Behavior2/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description adds no extra behavioral context. It does not describe ordering (e.g., by call start time), whether calls are ongoing or completed, or any other 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.

Conciseness4/5

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

The description is a single, clear sentence without fluff. It is appropriately sized for a simple list tool, though it could benefit from a brief note on pagination or ordering.

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?

With 4 optional parameters and an output schema available, the description covers the basic purpose but omits context like pagination behavior (covered by schema) and the definition of 'recent'. It is minimally adequate but leaves gaps.

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 baseline is 3. The description adds no additional meaning to the parameters beyond what the schema already specifies (limit, offset, status, agent_id). No explanation of how filters interact or what constitutes 'recent'.

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 recent calls for the authenticated business,' specifying the verb (List), resource (recent calls), and scope (authenticated business). This sufficiently differentiates from sibling tools like check_call_status, make_call, or list_conversations.

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 provides no guidance on when to use this tool versus alternatives such as check_call_status or list_conversations. It does not mention when to filter by status or agent_id, nor does it clarify the meaning of 'recent'.

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

list_rightsize_recommendationsList Plan Right-Size RecommendationsA
Read-onlyIdempotent
Inspect

List per-period auto-right-size decisions from plan_rightsize_recommendations, including the dry_run -> notified -> (kept | applied | superseded) lifecycle. Answers "is this business about to get right-sized". Mirrors GET /api/v1/rightsize-recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
actionNo
statusNo
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
business_idNo
recommendationsNo
Behavior4/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false. The description adds the lifecycle context (dry_run -> notified etc.) and purpose, which goes 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 two sentences, front-loaded with key purpose, and contains no extraneous 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?

While annotations and output schema cover safety and return values, the lack of parameter semantics and usage guidance leaves gaps; however, the lifecycle description adds useful context.

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

Parameters1/5

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

Schema description coverage is only 17%, and the description provides no additional information about parameters like to, from, limit, action, status, beyond what the schema offers.

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 auto-right-size decisions with a specific lifecycle, and distinguishes itself from sibling tools by focusing on rightsizing recommendations.

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 checking if a business is about to be right-sized, but does not provide explicit guidance on when to use versus alternatives or when not to use.

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, idempotentHint, destructiveHint. The description adds filtering context but could mention pagination or ordering behaviors.

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, no fluff, effectively communicates purpose and key features.

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 list tool with output schema, the description covers essential behavior. Could mention pagination details, but overall adequate.

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?

With 100% schema description coverage, the description adds little beyond the schema. It restates filtering options already present in param descriptions.

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 recent SMS messages for the authenticated business, with filtering options. It distinguishes from siblings like list_conversations by focusing on 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 implies use for listing SMS messages but does not explicitly state when not to use or provide alternatives. Sibling names provide context but no direct guidance.

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

list_subscription_historyList Subscription Change HistoryA
Read-onlyIdempotent
Inspect

List plan/price change history from subscription_change_history — the billing analogue of admin_change_history, written from the Stripe webhook and the right-size apply job. Mirrors GET /api/v1/subscription-history.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
sourceNoe.g. stripe_webhook, rightsize_apply_job.
business_idNoBusiness ID (optional only when the token can access exactly one business).
change_typeNo

Output Schema

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

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

Annotations already indicate read-only and idempotent. Description adds context that data comes from Stripe webhook and right-size apply job, and mirrors a specific API endpoint. 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?

Two sentences, front-loaded with action. Provides context (billing analogue, data sources) without unnecessary fluff. Could be slightly more structured but effectively concise.

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

Completeness3/5

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

For a list tool with output schema and annotations, it's mostly adequate. However, it omits details about what data is returned and how filters like change_type work, which could help agents. Return values are covered by output schema, so not critical, but still room for improvement.

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

Parameters2/5

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

Schema coverage is low (33%), only source and business_id have descriptions. The description does not explain the meaning of to, from, limit, change_type beyond what the schema provides. Fails to compensate for the gap.

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

Purpose5/5

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

Clear verb ('List') and resource ('plan/price change history'). Distinguishes from sibling 'get_change_history' by explicitly calling it the 'billing analogue of admin_change_history'. Also mentions it mirrors a specific API endpoint.

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?

Implicitly suggests use for billing changes via 'billing analogue', but lacks explicit when-to-use/when-not-to-use guidance or mention of alternatives. Does not differentiate from sibling list_overage_charges or other billing-related tools.

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

list_tool_execution_logsList Tool Execution LogsA
Read-onlyIdempotent
Inspect

List per-call Vapi tool execution traces from vapi_tool_execution_logs — outcome, latency, timeout, and a redacted result preview for each routed tool call. Mirrors GET /api/v1/tool-execution-logs. Answers "did this tool call actually work".

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
call_idNoVapi call/conversation id filter.
tool_nameNoTool name filter (e.g. send_sms).
business_idNoBusiness ID (optional only when the token can access exactly one business).
tool_call_idNoExact tool_call_id filter.
outcome_statusNoOutcome envelope status filter (e.g. success, needs_clarification, unavailable, queued, retryable_delay, hard_failure).

Output Schema

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

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by mentioning the redacted result preview and latency/timeout fields, which go 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 with no wasted words: the first defines scope and content, the second provides API mapping and a use-case question. Highly front-loaded 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?

With an output schema present and good annotations, the description covers the essential behavior (logs of tool calls, outcome, latency, etc.). It lacks explicit pagination or ordering info, but the output schema likely 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 63% with some parameters missing descriptions (to, from, limit). The description does not elaborate on parameter meaning or usage, only implying outcome_status via the 'did it work' question. It adds minimal value over 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 it lists per-call Vapi tool execution logs with specific fields (outcome, latency, timeout, redacted result preview). It distinguishes from sibling list tools by focusing on tool call traces and answers a concrete question 'did this tool call actually work?'.

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 frames the tool as answering requests about tool call success, which implies its use case. While it doesn't state when not to use or name alternatives, the context of sibling list tools (agents, conversations, etc.) makes differentiation clear.

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, destructiveHint, idempotentHint. Description adds return data details (transcripts, URLs) but does not disclose additional behavioral traits like rate limits or authentication. 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?

Single sentence, efficient, and front-loaded with key action and results. 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 output schema exists, description need not detail return structure. However, it omits ordering or default filters (e.g., most recent first). Still sufficient for a simple 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% with descriptions for both parameters. Description does not add extra meaning beyond what schema provides, 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?

Description clearly states the verb 'list', resource 'voicemails', scope 'recent ... for authenticated business', and specifies included data (transcripts, recording URLs). Distinguishes from sibling tools like list_conversations or list_agents.

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 vs alternatives. Implied usage for retrieving voicemails with pagination via schema, but lacks exclusions or context about filtering.

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, idempotentHint=true, destructiveHint=false. The description adds value by stating it is 'credential-free' and mirrors a REST endpoint, 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?

The description is two sentences with no extraneous words. It efficiently conveys purpose, content, and API mapping.

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 and comprehensive annotations, the description provides sufficient context: it explains the tool's data contents, its credential-free nature, and its API equivalent, making it complete for a simple 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?

All three parameters have 100% schema description coverage, so the schema already documents parameter semantics. The description does not add additional parameter details, meeting the baseline.

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 a curated voice catalog with specific fields (id, display name, accent, language, gender, sample URL) and its purpose (configure agent voices). It distinguishes from siblings by noting 'credential-free', which is unique among list tools.

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 the tool is used to retrieve voice options for configuring agent voices, but does not explicitly state when to use it versus other list tools or provide exclusion criteria.

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

list_workflow_templatesList Workflow TemplatesA
Read-onlyIdempotent
Inspect

List the cadence/campaign workflow templates KaiCalls can run (standard, aggressive, nurture, custom), including each template's retry interval, defaults (call windows, days, attempts), and a ready-to-use cadence_config example. Call this before create_campaign so an external agent can trigger a multi-step sequence with launch=true instead of guessing the cadence_config shape blind. Static catalog — no per-business state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

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

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds useful behavioral context (static catalog, no per-business state) without contradicting 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, front-loaded with key information, 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.

Completeness5/5

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

Simple tool (0 params, output schema exists). Description explains what the tool returns, why to use it, and its static nature. Complete given the 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?

No parameters; schema coverage is 100%, so baseline is 4. The description doesn't need to add parameter information and does not.

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 workflow templates with specific details (retry interval, defaults, cadence_config example). It distinguishes from siblings by noting it's a static catalog with no per-business state.

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 recommends calling this before create_campaign to avoid guessing the cadence_config shape. Provides clear context on when to use, though no explicit when-not or alternatives are listed.

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. Pass an idempotency_key to make the request safely retryable: a replay with the same key returns the original call instead of dialing again, and the same key with different arguments is rejected.

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)
idempotency_keyNoClient-chosen key that makes this call exactly-once: retries with the same key never place a second call (optional but recommended)

Output Schema

ParametersJSON Schema
NameRequiredDescription
callNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
replayedNo
intent_idNo
idempotency_keyNo
Behavior5/5

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

The description explains the idempotency behavior beyond annotations: retries with same key return original call, same key with different args rejected. It aligns with destructiveHint (making a call) and adds behavioral context for safe invocation.

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 filler: first sentence states purpose, second explains idempotency. Front-loaded 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 tool's complexity and available output schema, the description is sufficient for correct usage. Could mention rate limits or prerequisites (e.g., agent must exist), but not necessary with schema and annotations present.

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 baseline is 3. The description adds value for idempotency_key by explaining its retry behavior, but no other parameters are elaborated beyond schema descriptions.

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 initiates a real outbound phone call via a KaiCalls AI agent. It uses a specific verb (initiate) and resource (phone call), and distinguishes from sibling tools like check_call_status or list_recent_calls by focusing on the action of making a call.

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 good context on idempotency usage but does not explicitly state when to use this tool versus alternatives (e.g., send_sms or check_call_status). It lacks when-not-to-use guidance or explicit exclusions.

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, numbers.purchase, agent.config.rollback. 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, agent.patch, numbers.purchase, or agent.config.rollback
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?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds significant context: the broker returns specific statuses (needs_user_input, needs_approval, etc.) and guarantees 'never an unaudited side effect', which goes beyond the structured metadata to explain safety and 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 front-loaded with the main purpose, then lists intents, alternatives, prerequisites, and return statuses in a logical order. Every sentence adds value without fluff, making it concise for the amount of information conveyed.

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?

Despite the tool having 12 parameters and nested objects, the description covers what the tool does, supported intents, when not to use (alternatives), prerequisites, and return behavior. Since an output schema exists, return value details are not needed. This is complete for the complexity level.

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 thoroughly (including payload examples). The tool description does not add substantial new parameter-level meaning beyond what the schema provides, so a 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 tool performs a 'scoped, governed mutation' via a broker and lists specific intents. It explicitly distinguishes from sibling tools by naming alternatives (e.g., prefer update_agent_config for prompt/voice/model edits), making the purpose and differentiation very clear.

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 vs. alternatives, naming 6 specific sibling tools and their use cases. It also states prerequisites: mutating requests need idempotency_key and high-risk changes need human authority, qualifying usage context thoroughly.

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
DestructiveIdempotent
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. This OVERWRITES the live deployed config, so it is APPROVAL-GATED: without human-grade authority (an authority envelope with mode human_confirmed, or a dashboard approval) the tool executes nothing and returns a pending_approval record the business owner approves or denies from the dashboard — relay the returned confirmation text to them. Agent-initiated rollbacks never run unattended. Wraps the same version-restore logic as POST /api/v1/agents/rollback and the admin_rollback_change voice tool, via the agent.config.rollback update intent. Discover a target with list_config_versions or get_change_history. Every executed rollback records a new config version; to repeat a rollback that already executed, pass a fresh idempotency_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorNoWho is asking: { type: agent|human|system|integration, id, display_name }.
reasonNoOptional human-readable reason recorded in the audit trail.
dry_runNoValidate tenant, scope, and policy without touching the live config.
agent_idYesAgent ID to roll back.
authorityNoHow the rollback was authorized: { mode, confirmed_by, confirmed_at, confirmation_ref }. human_confirmed requires all three confirmation fields; anything weaker returns pending_approval.
source_refNoExternal source reference, such as a ticket or automation run ID.
version_idNoTarget assistant_config_versions row id to restore. One of version_number/version_id is required.
business_idNoBusiness ID (optional only when the token can access exactly one business).
version_numberNoTarget assistant_config_versions.version_number to restore. One of version_number/version_id is required.
idempotency_keyNoStable key for the rollback request; repeating it returns the original outcome. Defaults to a key derived from agent + version — pass a fresh key to repeat a rollback that already executed.
queue_for_approvalNoWhen authority is insufficient, create a durable dashboard approval (default true). Set false to get needs_approval and retry yourself with the same idempotency_key once a human confirms.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
errorNoPresent when success is false
resultNoOn executed: { agent_id, restored_from_version, restored_fields, skipped_fields, new_version_number, warning? }.
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 transparently reveals that the tool OVERWRITES the live config (destructive behavior), is approval-gated, records a new config version on execution, and explains the approval process. This adds significant context beyond the annotations (destructiveHint: true, idempotentHint: true), such as the need for human authority and the return of pending_approval when authority is insufficient.

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 detailed but each sentence adds essential information. It front-loads the core action and constraints (rollback, overwrite, approval-gated). While slightly long, it avoids redundancy and is well-structured for an AI agent to parse. Could be slightly tighter, but not verbose enough to detract significantly.

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 tool with 11 parameters, nested objects, and a complex approval process, the description covers all necessary aspects: purpose, usage, discovery, side effects, idempotency, and relationship to other tools. The output schema exists, so return value explanation is unnecessary. The description is complete and leaves no significant gaps.

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 100% schema coverage, the baseline is 3. The description adds meaningful context beyond the schema: it explains that version_id or version_number are mutually required targets, describes idempotency_key default behavior (derived from agent+version) and how to repeat a rollback, and clarifies the queue_for_approval parameter behavior. This additional semantic guidance 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 restores a prior config snapshot onto the live agent, specifying exactly what is restored (greeting, voice, prompt, scalar model params) and what is not (secrets/credentials). It distinguishes itself from sibling tools like list_config_versions and get_change_history, which are for discovery, and update_agent_config, which likely modifies config directly.

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 explicitly explains when to use the tool (to roll back config) and how to discover the target version using list_config_versions or get_change_history. It also provides critical usage guidance: the tool is approval-gated, requires human authority, describes the pending_approval flow, and advises on idempotency key reuse for repeating rollbacks. No explicit 'when not to use' is needed given the approval constraints.

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?

Annotations indicate non-readonly, non-destructive, non-idempotent, and open-world behavior. The description adds 'Bills Vapi compute,' disclosing cost implications, and notes it mirrors a POST endpoint. This provides valuable 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 sentences with no wasted words. The action and key distinctions are front-loaded, making it easy to parse quickly.

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 an output schema present, return values are covered. The description explains the core behavior, billing, and API mirror. It lacks details on error handling or rate limits, but given the tool's simplicity and annotations, it is sufficiently 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%, so parameters are well-described. The description restates the purpose of wait, max_wait_ms, eval_id, and agent_id but does not add significant new meaning or constraints beyond the schema descriptions.

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 runs eval scenarios and grades results, distinguishing between single eval_id and all scenarios for an agent_id. It also mentions billing and mirrors a POST API, providing a specific verb and resource.

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 when to use eval_id versus agent_id, giving clear context. It does not explicitly state when not to use the tool or provide alternatives, but the sibling list includes list_evals, offering differentiation.

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 the behavioral trait 'real-time' and references the underlying GET API, reinforcing the read-only and dynamic nature. No contradiction is present, and the description adds slight 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?

The description consists of two concise sentences with no filler. It front-loads the key action and context, then efficiently references the API mirroring. Every word adds value.

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 three optional parameters, no required fields, a read-only annotation, an output schema, and a clear purpose, the description provides complete context for an agent to use it correctly. No additional information is necessary.

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 all parameters are already described in the schema. The tool description does not add additional meaning or usage guidance for parameters beyond what is in the schema. Baseline for high coverage is 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?

The description clearly states the verb 'search' and the resource 'available phone numbers', specifying it's a real-time Twilio inventory lookup. It mirrors a specific API endpoint, and among siblings like 'list_numbers' (owned numbers) and 'buy_number' (purchase), this tool's purpose is distinct and unambiguous.

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 context for when to use this tool (to search for purchasable numbers) and implicitly differentiates it from related tools like 'buy_number' and 'list_numbers'. However, it does not explicitly state alternatives or exclusions, so it falls short of a 5.

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

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.
idempotency_keyNoOptional caller-supplied key. A replay with the same key returns the original send outcome instead of sending again — use it when retrying after an uncertain response.

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 already indicate destructive and non-idempotent behavior. The description adds valuable context: compliance gates, rate limits, message logging, and the purpose of the idempotency key. This goes 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 sentences, front-loaded with core purpose, then detailed constraints. 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 output schema exists (handles return values), the description fully covers purpose, parameters, compliance, and behavior. No gaps for the complexity level.

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. The description adds meaning for 'lead_id' (respect automation-pause state) and 'idempotency_key' (replay behavior), enhancing understanding beyond the schema descriptions.

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 sends an outbound text message from an agent's phone line, distinguishing it from sibling tools like 'make_call' (voice) and 'list_sms_messages' (read). The verb 'send' and resource 'SMS' are clear.

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 mentions compliance gates, opt-out, Do-Not-Call, quiet-hours, and rate limits, giving context on when to use. It does not explicitly state when not to use, but the implied usage is clear. Alternatives are not named, but the sibling set makes differentiation straightforward.

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
Behavior3/5

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

Description discloses the secret-return-on-first-creation behavior, adding value beyond annotations. Annotations already indicate mutation and idempotency, so no contradiction. However, it omits details like delivery guarantees 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 are concise and front-loaded with the core purpose. No fluff; every sentence contributes useful 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?

Output schema exists, reducing need for return value explanation. Description covers key behavior (secret on creation). However, it does not explain conditional use of the 'id' parameter for update vs create, or prerequisites like business_id handling.

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 parameter descriptions already handle semantics. The description does not add further clarity on parameter usage beyond the schema, meriting a 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?

Clearly states the tool creates or updates a business outbound webhook, specifying key actions (create/update) and resource (webhook URL + events). Distinguishes from siblings like delete_webhook and get_webhook by explicitly modeling mutation.

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 create vs update, or when to use sibling tools. The description lacks context for selecting this tool over alternatives, leaving the agent to infer from sibling names.

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?

Annotations already declare destructiveHint=true and non-readOnly, but the description adds crucial behavioral context: every mutation goes through a 'governed update broker' that maintains consent/audit trail, changes are reversible, high-impact live changes need human authority or queue_for_approval, and idempotency_key is required for writes. This goes well beyond the annotation hints and fully discloses key traits.

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, well-organized paragraph with no wasted words. It front-loads the purpose, then lists configurable fields, explains the governing mechanism, notes reversibility and authority requirements, and ends with the sibling pointer. Every sentence earns its place; there is no fluff or repetition.

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 (18 parameters, nested objects, output schema exists) and rich annotations, the description covers all critical behavioral aspects: governance, reversibility, prerequisites, and related tools. It does not explain the return value, but the output schema handles that. A small gap is not explicitly mentioning that 'dry_run' allows validation without mutation, though that detail is in the schema. Overall, it is complete enough for an 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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description groups parameters into categories (greeting, prompt, voice, model, max duration, transfer) but does not add detail or constraints beyond what the schema already provides. No parameter-specific examples, formats, or edge cases are mentioned. It does not degrade understanding, but neither does it significantly enhance it.

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 starts with a specific verb ('Edit') and resource ('agent's live runtime configuration'), then enumerates the configurable fields (greeting, prompt, voice, model, max duration, transfer). It also explicitly distinguishes this tool from the sibling 'configure_agent_business_rules' by stating the latter is for a 'single named operational-rules section', making the purpose crystal clear.

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: 'For just a single named operational-rules section, prefer configure_agent_business_rules.' It also explains prerequisites (idempotency_key, authority for high-impact changes), reversibility (use get_change_history/list_config_versions/rollback_config), and fallback (queue_for_approval). This covers both when and when not to use the tool.

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
Behavior4/5

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

The description discloses that the tool mirrors a POST endpoint and specifies required fields for creation. Annotations are neutral (all false), and the description adds context 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?

Two concise sentences with no fluff. The first sentence states the main functionality, and the second adds essential constraints.

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 an output schema present and no nested objects, the description adequately covers create/update semantics. It could clarify update behavior (partial vs full replacement), but overall it's complete for most agents.

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 description coverage is only 29%, so the description compensates by stating required parameters for create. However, it doesn't explain other parameters like tags or category, leaving partial gaps.

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 a new knowledge base entry or update an existing one when an ID is provided. It uses specific verbs and identifies the resource, distinguishing it from siblings 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?

Provides context on required fields for creation (title, content, content_type) and mentions the API endpoint. While it doesn't explicitly exclude other tools, the context is sufficient for basic usage.

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?

The description adds behavioral context beyond annotations by noting the governed API route, access-checking, usage-logging, and partial success reporting. It aligns with the destructiveHint annotation 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 very concise: two sentences covering purpose, routing, create mode, update mode, and key details. Every sentence earns its place with 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?

Given the presence of an output schema (so return values are documented elsewhere) and the description covering both modes and partial success, it is adequately complete. Could mention error handling but not required.

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 100% schema coverage, the description adds value by explaining the two operational modes and which parameters correspond to each. It also clarifies the business_id requirement, supplementing the schema effectively.

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

Purpose5/5

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

The description clearly specifies 'Create a new lead or update existing leads', making the verb and resource explicit. It distinguishes the upsert operation from sibling tools like get_lead 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 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 (pass lead) vs update (pass updates) and mentions access-checking and partial success. It does not explicitly state when not to use this tool vs alternatives, but the context is sufficient.

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 ProductBInspect

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
Behavior2/5

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

Discloses upsert behavior and requirement for create, but does not detail update semantics (e.g., partial vs full replacement), idempotency, or side effects. Annotations are all false, so description should carry more weight.

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 concise, front-loaded sentences with no wasted words. Efficiently conveys core purpose and key requirements.

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?

With 9 parameters and nested objects, the description is too brief. Lacks details on nested attributes structure, update behavior for non-quantity fields, and validations.

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

Parameters2/5

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

Schema coverage is only 33%. Description adds meaning for id, quantity, and business_id, but leaves six parameters (sku, name, price, category, attributes, description) without any added context.

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 upsert action on product rows, distinguishing it from sibling tools by resource. It uses specific verb ('Create or Update') and references the API endpoint.

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 for product management, but no explicit guidance on when to choose this over other tools like create_agent or upsert_knowledge. Lacks when-not or alternative recommendations.

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!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.